Transcript requests let you submit a public audio or video URL for transcription. Parsagon records the source, transcribes it, diarizes speakers, and returns the completed transcript through the API.
Hearings and debates are often several hours long, so transcription can take a few hours to complete.
Workflow
Create a transcript request
Submit the public source URL with POST /api/transcripts/v1/requests/.
Poll the request
Use GET /api/transcripts/v1/requests/{id}/ until status is FINISHED or ERROR. Poll about every 15 minutes.
Assign speaker names, if needed
After the transcript is finished, send speaker profiles to POST /api/transcripts/v1/requests/{id}/assign-speakers/.
Create a request
POST https://parsagon.io/api/transcripts/v1/requests/
Use this endpoint to submit a public URL for transcription.
Public https:// URL for the audio or video source to transcribe.
curl -X POST "https://parsagon.io/api/transcripts/v1/requests/" \
-H "Authorization: Token YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.gov/hearings/sample-public-meeting"
}'
Get request status and results
GET https://parsagon.io/api/transcripts/v1/requests/{id}/
Use this endpoint to check processing status and retrieve transcript output when it is ready.
Transcription can take a few hours for long hearings or debates. Poll this endpoint about every 15 minutes rather than making frequent status requests.
Transcript request ID returned when you created the request.
Unique identifier for the transcript request.
Stable UUID for the transcript request.
Original URL submitted for transcription.
Internal source ID associated with the transcript data.
Title detected for the source, when available.
Request-level status. Possible values include QUEUED, RECORDING, TRANSCRIBING, DIARIZING, FINISHED, ERROR, and CANCELED.
Source-level transcript processing status.
Full transcript text. This is available when transcription has completed. If speaker names have been assigned, the text uses the assigned names.
Structured transcript data. Segment-level transcript data. Start time of the segment in seconds, when available.
End time of the segment in seconds, when available.
Transcribed text for this segment.
Speaker label or assigned speaker name for this segment.
Speaker profile attached after speaker assignment.
Speaker profiles currently stored on the request.
Error message if the request failed.
Time the request was created in ISO 8601 format.
Time the request was last updated in ISO 8601 format.
curl -X GET "https://parsagon.io/api/transcripts/v1/requests/123/" \
-H "Authorization: Token YOUR_API_KEY_HERE"
{
"id" : 123 ,
"uuid" : "2fb8ec8f-6d55-4f5d-91e5-89ce6f617d58" ,
"url" : "https://example.gov/hearings/sample-public-meeting" ,
"source" : 5104001 ,
"title" : "Sample public meeting" ,
"status" : "FINISHED" ,
"transcript_status" : "FINISHED" ,
"text" : "Jane Doe: \n Good evening, everyone..." ,
"extra_data" : {
"segments" : [
{
"start" : 12.4 ,
"end" : 26.8 ,
"speaker" : "Jane Doe" ,
"speaker_profile" : {
"profile_id" : "jane-doe" ,
"name" : "Jane Doe"
},
"text" : "Good evening, everyone..."
}
]
},
"speaker_profiles" : [
{
"id" : "jane-doe" ,
"name" : "Jane Doe" ,
"aliases" : [ "Committee Chair" , "District One Representative" ]
}
],
"error" : "" ,
"created_at" : "2026-07-10T15:10:00Z" ,
"updated_at" : "2026-07-10T15:45:00Z"
}
List your requests
GET https://parsagon.io/api/transcripts/v1/requests/
Returns a paginated list of transcript requests created by your account.
curl -X GET "https://parsagon.io/api/transcripts/v1/requests/" \
-H "Authorization: Token YOUR_API_KEY_HERE"
Assign speaker names
POST https://parsagon.io/api/transcripts/v1/requests/{id}/assign-speakers/
Use this endpoint after status is FINISHED to map transcript speaker labels to the people you provide in speaker_profiles.
List of speaker profiles to assign. Show Speaker profile fields
Stable identifier for the speaker profile. If your system uses numeric IDs, send them as strings.
Display name for the speaker. Each profile must include either id or name.
Optional names, titles, or transcript variants that may refer to the same person.
curl -X POST "https://parsagon.io/api/transcripts/v1/requests/123/assign-speakers/" \
-H "Authorization: Token YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"speaker_profiles": [
{
"id": "jane-doe",
"name": "Jane Doe",
"aliases": ["Committee Chair", "District One Representative"]
},
{
"id": "john-doe",
"name": "John Doe",
"aliases": ["Dr. Doe", "Planning Director"]
}
]
}'
Speaker profile guidance
Use stable string IDs and include aliases that may appear in the transcript.
{
"speaker_profiles" : [
{
"id" : "alex-example" ,
"name" : "Alex Example" ,
"aliases" : [ "Vice Chair" , "District Two Representative" ]
},
{
"id" : "sam-sample" ,
"name" : "Sam Sample" ,
"aliases" : [ "Dr. Sample" , "Public Works Director" , "Project Lead" ]
}
]
}
Include roles, titles, honorifics, and alternate names as aliases. Speaker profile IDs must be strings, even if they come from numeric IDs in your system.