Skip to main content
POST
Transcriptions — Get Upload URL
Step 1 of the historical-audio transcription flow. Returns a signed S3 PUT URL for one audio file. Nothing is processed until you submit the returned upload_id to POST /v2/transcriptions.

Flow

  1. POST /v2/transcriptions/uploads → { upload_id, presigned_url, expiration_seconds }
  2. PUT the audio bytes to presigned_url with a Content-Type header matching the one you declared
  3. POST /v2/transcriptions with upload_id (+ optional target_language) → 202 { job_id, status: "queued" }
  4. GET /v2/transcriptions/{job_id} every 30–60 s until status is succeeded or failed
Request fields: file_name and content_type, both required, exactly as on the Vault route. The uploaded object’s size (max 2 GB) and type are verified from S3 when you submit the job. Then upload the file:
Same PUT convention as POST /v2/vault/presigned_url: the URL is single-object and expires after expiration_seconds (1 hour), and the PUT request’s Content-Type must match the content_type you declared because it is bound into the signature. Supported types: audio/mpeg (mp3), audio/mp4 and audio/x-m4a (m4a), video/mp4 (mp4). Convert WAV, FLAC, OGG or WebM recordings to one of these before uploading. Maximum size 2 GB.

Authorizations

X-API-KEY
string
header
required

Body

application/json
file_name
string
required
Example:

"bam-call.mp3"

content_type
enum<string>
required

MIME type of the audio (mp3, m4a or mp4; convert wav/flac/ogg/webm first). Bound into the presigned URL signature; the PUT must send the same Content-Type.

Available options:
audio/mpeg,
audio/mp4,
audio/x-m4a,
video/mp4
Example:

"audio/mpeg"

Response

Signed upload URL issued

error
object | null
required
payload
object
required