Download campaign transcripts
Streams one bounded UTF-8 CSV page with one row per campaign attempt. The default and maximum page size is 500. Follow X-Next-Cursor with the same limit until that header is absent; each cursor holds the first request’s upper watermark, so later attempts do not enter the download. Each row carries recipient_id, attempt_no, the accessible call_id, transcript_state, the selected transcript result id and readable Speaker: text lines when ready. A live call with no selected layer is pending; a terminal call with no layer is absent; no accessible call, or an unreadable or unverifiable selected layer, is unavailable. A hidden call has no call id or content. A row-specific object read failure produces unavailable and does not truncate later rows. A broken HTTP transfer is incomplete: discard that page and retry it with the same cursor, or without a cursor for the first page. The read never starts, retries or repairs transcript work and never emits destinations, audio or signed URLs.
Authentication
Create and manage workspace-owned keys through the existing app session routes, outside this public API. Creator and manager identities are audit actors only. Key validity follows workspace policy, expiry and explicit revocation, independently of creator membership. Do not include a workspace-selection header.
Path parameters
Query parameters
Opaque continuation from X-Next-Cursor. It is bound to the workspace, campaign and limit and expires after 24 hours.
Response headers
Sanitised attachment filename ending in -transcripts.csv.