Multipart uploads

Transfer large media in independently retryable parts, then commit or abort the upload session.

Make large transfers resilient

When prepare-upload returns type multipart, each numbered URL accepts one byte range. Upload parts, collect each ETag response, and complete the session before creating a transcription job.

Independent parts

Retry a failed range without sending the whole recording again.

Explicit completion

The object is not ready until every ETag is committed.

Owned sessions

key, storage, and upload_id are validated against the API account.

Clean aborts

Discard a transfer that the client cannot finish.

From request to transcript

A predictable sequence you can reuse in server applications, automations, and internal tools.

  1. 01

    Upload every part

    PUT the correct byte range to each parts[].url and capture its ETag header.

  2. 02

    Complete the session

    POST all etag and part_number pairs with the upload identity.

  3. 03

    Queue or abort

    Create the transcription after completion, or DELETE the multipart session on failure.

Make the request

Examples use the production API origin and an environment variable for the secret key.

Request
curl --request POST https://fast-transcriber.com/api/v1/uploads/multipart \
  --header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "key": "transcriptions/user_…/hearing.mp4",
    "storage": "r2",
    "upload_id": "upload_…",
    "parts": [{ "etag": ""etag-1"", "part_number": 1 }]
  }'
Keep credentials server-side
Never expose a Fast Transcriber API key in public browser JavaScript, a mobile bundle, source control, or a prompt.

Requirements and boundaries

  • Use the part_size and numbered URLs returned by prepare-upload.
  • For R2, send exactly the returned 16 MiB part_size for every part except the final part.
  • Finish all part uploads within four hours, before their presigned URLs expire.
  • Do not omit or rewrite ETag values.
  • Complete the upload before referencing it in a transcription request.
  • Abort sessions that cannot be recovered.

Frequently asked questions

Should my client choose a multipart threshold?+

No. Always inspect upload.type in the prepare response; server configuration selects the transfer mode.

When is the media ready to queue?+

Only after the completion endpoint succeeds and returns the committed key and storage values.

What happens if one part fails?+

Retry that part. If the upload cannot be recovered, abort the session rather than queueing an incomplete object.

© 2026 FastTranscriberBuilt for developers who work with speech.