Transcriptions

Start a transcription upload

Returns a presigned upload for one audio file of at most 25 MiB. POST the audio to upload_url as multipart/form-data, with every upload_fields entry as a form field and the audio last as the file field, before expires_at. Send no Authorization header: the signature is the credential. Storage refuses a type other than mime_type or a size outside 1 byte to 25 MiB. Then call POST /api/v1/transcriptions with file_key.

post/api/v1/transcriptions/uploads

Request

  • Base URL: https://your-deployment.example.com
  • URL: https://your-deployment.example.com/api/v1/transcriptions/uploads
  • Auth: one of:
    • HTTP bearer
    • API key in header x-api-key

Request body

mime_type'audio/mpeg' | 'audio/mp4' | 'audio/wav' | 'audio/webm' | 'audio/ogg' | 'audio/flac' required
file_sizeinteger required

Size in bytes of the audio you will upload. At most 25 MiB.

Example request

{
  "mime_type": "audio/mpeg",
  "file_size": 482133
}

Response

The upload is ready; POST the audio to upload_url.

upload_urlstring required

POST the audio here as multipart/form-data. Send no Authorization header.

upload_fieldsobject required

Form fields to send, unchanged and before the file field, with the upload.

file_keystring required

Pass this to POST /api/v1/transcriptions once the upload succeeds.

expires_atstring required

ISO 8601. The upload is refused after this; mint a new one to retry.

Example response

{
  "upload_url": "https://<bucket>.s3.amazonaws.com/",
  "upload_fields": {
    "key": "transcribe-uploads/<userId>/<uuid>.mp3",
    "Content-Type": "audio/mpeg",
    "Policy": "..."
  },
  "file_key": "transcribe-uploads/<userId>/<uuid>.mp3",
  "expires_at": "2026-10-09T12:05:00.000Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.