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.
- 01
Upload every part
PUT the correct byte range to each parts[].url and capture its ETag header.
- 02
Complete the session
POST all etag and part_number pairs with the upload identity.
- 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.
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 }]
}'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.