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 OKAuthentication
Send an active Fast Transcriber API key as an HTTP bearer token.
Authorization: Bearer ft_live_replace_meRequest
Use the fields below and send a JSON body.
| Field | Type | Description |
|---|---|---|
keyrequired | string | Owned object key from prepare-upload. |
storagerequired | r2 | wasabi | Storage value from prepare-upload. |
upload_idrequired | string | Multipart upload identifier from prepare-upload. |
partsrequired | array | One object per completed part with etag and positive part_number. |
parts[].etagrequired | string | ETag header returned by the corresponding part upload. |
parts[].part_numberrequired | integer | Positive part number from the prepared upload target. |
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.
| Field | Type | Description |
|---|---|---|
data.key | string | Committed object key. |
data.storage | string | Storage provider for the committed object. |
{
"data": {
"key": "transcriptions/user_…/recording.wav",
"storage": "r2"
}
}Errors
API errors return a machine-readable code and message.
| Status | Code | Meaning |
|---|---|---|
| 401 | missing_api_key | No bearer key was supplied. |
| 401 | invalid_api_key | The bearer key is malformed, unknown, or revoked. |
| 400 | invalid_multipart_upload | The key, storage, or upload ID is invalid or not owned by this account. |
| 400 | invalid_multipart_parts | At least one part is missing an ETag or positive part number. |
{
"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.