Create an async transcription job
Submit audio for batch transcription. Provide exactly one source:
either audio_url (an https URL we fetch, privacy-cleanest, the input is never stored)
or a multipart upload (multipart/form-data with an audio file part and the same fields as form fields).
Returns 202 immediately with a queued job; poll GET /v1/transcription/jobs/{id} or supply a webhook_url for a signed completion callback.
Set channel: true for stereo (dual-channel) recordings to get exact, model-free speaker separation per channel.
Requires the transcribe:jobs scope.
Authorizations
Use Authorization: Bearer pyai_live_... (or pyai_test_...).
Headers
Opt-in safe retry (JSON body path). Reusing the key with an identical body replays the original 202 response; reusing it with a different body returns 409.
255Body
https URL of the audio to transcribe.
Dual-channel (stereo) diarization: transcribe each channel separately and label speakers per channel (exact).
Single-track (mono) speaker diarization via Sortformer; words are aligned to speaker turns. Use channel instead for stereo recordings.
Format spoken numbers as digits.
json, srt, vtt https URL to POST the signed (X-PyAI-Signature) completion callback to.
Trace compliance add-on: scan + redact PII; the result carries the redacted transcript plus a trace summary (verdict, PII count). Requires the org's Trace entitlement on this surface (else 402); bills one Trace call. Not supported together with diarize/channel.
Optional Trace rule pack forwarded to the scan (only used when trace is true).
Optional stable call identifier for Recap; defaults to the transcription job id.
Optional Recap pack id.
^[a-z0-9_]+$Optional Recap call direction.
inbound, outbound Optional Recap customer label.
Optional Recap summarization language.
en, fr, es, de, hi Optional CRM metadata delivered durably with the Recap trigger.
Response
Job accepted
"job_aZ09..."
queued, running, completed, failed, cancelled Unix ms.
Unix ms.
Present on completed jobs (inline). Large results are offloaded to result_url instead.
Signed GET URL for an offloaded large result.
Present on failed jobs.