Skip to main content
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

1

Create a transcript request

Submit the public source URL with POST /api/transcripts/v1/requests/.
2

Poll the request

Use GET /api/transcripts/v1/requests/{id}/ until status is FINISHED or ERROR. Poll about every 15 minutes.
3

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.
url
string
required
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.
id
integer
required
Transcript request ID returned when you created the request.
id
integer
Unique identifier for the transcript request.
uuid
string
Stable UUID for the transcript request.
url
string
Original URL submitted for transcription.
source
integer
Internal source ID associated with the transcript data.
title
string
Title detected for the source, when available.
status
string
Request-level status. Possible values include QUEUED, RECORDING, TRANSCRIBING, DIARIZING, FINISHED, ERROR, and CANCELED.
transcript_status
string
Source-level transcript processing status.
text
string
Full transcript text. This is available when transcription has completed. If speaker names have been assigned, the text uses the assigned names.
extra_data
object
Structured transcript data.
speaker_profiles
array
Speaker profiles currently stored on the request.
error
string
Error message if the request failed.
created_at
string
Time the request was created in ISO 8601 format.
updated_at
string
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:\nGood 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.
id
integer
required
Transcript request ID.
speaker_profiles
array
required
List of speaker profiles to assign.
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.
Example speaker profiles
{
  "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.