Get Transcript

Use the transcript UUID to retrieve status, transcript text, word-level timestamps, and Intelligence answers.

Endpoint

GET https://app.resemble.ai/api/v2/speech-to-text/{uuid}

Path Parameter

ParameterDescription
uuidTranscript UUID returned from the create call.

Response

{
"success": true,
"item": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"text": "Hello, this is a sample transcript...",
"words": [
{
"word": "Hello",
"start": 0.23,
"end": 0.67,
"confidence": 0.99
},
{
"word": "this",
"start": 0.7,
"end": 0.9,
"confidence": 0.98
}
],
"query": "What are the key points?",
"answer": "The key points discussed were...",
"status": "completed",
"privacy_mode": false,
"file_url": "https://storage.resemble.ai/...",
"duration_seconds": 120.5,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:32:00Z"
}
}

Response Fields

FieldTypeDescription
uuidstringTranscript UUID.
textstringFull transcript (present once processing completes).
wordsarrayArray of word objects with timestamps.
querystringInitial Intelligence question.
answerstringAnswer to the query.
statusstringpending, processing, completed, or failed.
privacy_modebooleanWhether the transcript was created with zero retention.
file_urlstringURL to the original media file. Absent once the media has been deleted.
duration_secondsnumberMedia duration in seconds.
file_deleted_atdatetimeWhen the uploaded media was permanently deleted (zero retention). Absent otherwise.
content_deleted_atdatetimeWhen the transcript content was permanently purged (zero retention). Absent otherwise.
created_atdatetimeTimestamp when created.
updated_atdatetimeTimestamp when last updated.

Zero-Retention Transcripts

For transcripts created with zero_retention_mode, the content is delivered once to your callback_url and then permanently purged. After the purge, this endpoint keeps returning the transcript as a content-free stub: text, words, query, answer, and file_url are no longer present, while file_deleted_at and content_deleted_at record when each deletion happened.

{
"success": true,
"item": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"privacy_mode": true,
"duration_seconds": 120.5,
"file_deleted_at": "2024-01-15T10:32:05Z",
"content_deleted_at": "2024-01-15T10:32:12Z",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:32:12Z"
}
}

Do not rely on polling this endpoint to retrieve zero-retention results — the callback delivery is the only time the content is available.

Word Object

FieldTypeDescription
wordstringTranscribed word.
startnumberStart time in seconds.
endnumberEnd time in seconds.
confidencenumberConfidence score for the transcription.

Example

curl --request GET \
'https://app.resemble.ai/api/v2/speech-to-text/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_TOKEN'

Polling Pattern

transcript_uuid="550e8400-e29b-41d4-a716-446655440000"
delay=2
while true; do
response=$(curl -s -H "Authorization: Bearer YOUR_API_TOKEN" \
"https://app.resemble.ai/api/v2/speech-to-text/$transcript_uuid")
status=$(echo "$response" | jq -r '.item.status')
if [ "$status" = "completed" ] || [ "$status" = "failed" ]; then
echo "$response"
break
fi
sleep $delay
delay=$((delay * 2))
done

Errors

{
"success": false,
"error": "Transcript not found"
}

Typical status codes: 401 for bad tokens, 403 for insufficient roles, 404 for unknown UUIDs, and 500 for processing failures.