Skip to content

Rebuild the merged transcript now

POST /calls/{call_id}/transcript-merged/rebuild

https://api.voygr.tech/calls/{call_id}/transcript-merged/rebuild

Open in playground

Overview

Rebuild and return a past call's merged transcript from its recording. Use for missing or stale transcripts, including a persistent 202 from GET. Idempotent: replaces the stored transcript. Do not poll with rebuild; poll the GET or wait for transcript_ready.

Authentication

  • API key in header X-API-Key: Your customer API key (pk_live_...), sent on every request. Self-serve at https://api.voygr.tech/checkout.

Parameters

NameLocationRequiredTypeDescription and constraints
call_idpathrequiredstring

Responses

200

The rebuilt transcript - same body as the GET.

application/json

Schema: MergedTranscript

401

Missing or invalid X-API-Key.

application/json

X-API-Key header absent

{
  "detail": {
    "error": "API key required"
  }
}

X-API-Key doesn't resolve to an active key

{
  "detail": {
    "error": "invalid API key"
  }
}

404

Call not found or isn't yours - also returned for calls where the callee declined recording (no verbatim transcript may be served).

application/json

notfound

{
  "detail": "Transcript not available"
}

425

The recording isn't available yet - the call may still be finalizing. Nothing failed; retry shortly. On an old call, though, a persistent 425 means the recording no longer exists (retention purge) and the transcript cannot be rebuilt.

application/json

recordingpending

{
  "status": "recording_pending"
}

503

The rebuild hit a dependency failure. Safe to retry.

application/json

mergefailed

{
  "status": "merge_failed"
}

504

The request timed out, but the transcript may still become available. Recover it with GET /calls/{call_id}/transcript-merged before requesting another rebuild.

application/json

backendtimeout

{
  "error": "backend timeout",
  "error_code": "BACKEND_TIMEOUT"
}

Schemas

MergedTranscript

Type: object

The post-call merged transcript contains both sides of the call on one timeline. It can include speech absent from the current transcript_full, such as phone menus and hold announcements. Read it after the call ends.

FieldTypeRequiredDescription and constraints
versionintegerrequiredExample: 1
duration_msintegerrequired
turnsarray of MergedTranscriptTurnrequired

MergedTranscriptTurn

Type: object

One turn of the post-call merged transcript.

FieldTypeRequiredDescription and constraints
speakerstringrequiredbot = the agent; hostess = the other party - staff, receptionist or IVR (the name is historical and covers every callee-side voice).
one of bot, hostess
start_msintegerrequired
end_msintegerrequired
textstringrequired
wordsarray of objectoptionalPer-word timings, when the source provides them.

Item fields

FieldTypeRequiredDescription and constraints
start_msintegeroptional
end_msintegeroptional
textstringoptional
overlap_with_nextbooleanoptionalThis turn overlapped the next one in time (cross-talk). When true, end_ms has been trimmed to the next turn's start_ms; the untrimmed value is in original_end_ms.
original_end_msintegeroptionalThe pre-trim end_ms, present only when overlap_with_next is true.
timing_estimatedbooleanoptionalThe text is real but the milliseconds are a reading order, not a measurement - don't plot such turns on a timeline.