Complete a multipart upload

After every presigned part URL has accepted its byte range, send the returned ETags in part-number order. Completion makes the assembled object available to the transcription pipeline.

POST/api/v1/uploads/multipart200 OK

Authentication

Send an active Fast Transcriber API key as an HTTP bearer token.

http
Authorization: Bearer ft_live_replace_me

Request

Use the fields below and send a JSON body.

FieldTypeDescription
keyrequiredstringOwned object key from prepare-upload.
storagerequiredr2 | wasabiStorage value from prepare-upload.
upload_idrequiredstringMultipart upload identifier from prepare-upload.
partsrequiredarrayOne object per completed part with etag and positive part_number.
parts[].etagrequiredstringETag header returned by the corresponding part upload.
parts[].part_numberrequiredintegerPositive part number from the prepared upload target.
cURL
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_…/recording.wav",
    "storage": "r2",
    "upload_id": "upload_…",
    "parts": [
      { "etag": ""8f14e45f…"", "part_number": 1 },
      { "etag": ""c9f0f895…"", "part_number": 2 }
    ]
  }'

Response

Successful JSON responses use a top-level data envelope. A 204 response has no body.

FieldTypeDescription
data.keystringCommitted object key.
data.storagestringStorage provider for the committed object.
Response
{
  "data": {
    "key": "transcriptions/user_…/recording.wav",
    "storage": "r2"
  }
}

Errors

API errors return a machine-readable code and message.

StatusCodeMeaning
401missing_api_keyNo bearer key was supplied.
401invalid_api_keyThe bearer key is malformed, unknown, or revoked.
400invalid_multipart_uploadThe key, storage, or upload ID is invalid or not owned by this account.
400invalid_multipart_partsAt least one part is missing an ETag or positive part number.
Error envelope
{
  "error": {
    "code": "invalid_multipart_parts",
    "message": "parts must contain an etag and positive part_number for every part."
  }
}

Implementation notes

  • Use the ETag header returned by each part upload without changing it.
  • Complete the upload before the four-hour multipart part URLs expire.
© 2026 FastTranscriberBuilt for developers who work with speech.