recordings_finalize_upload
Finalize a recording upload
Use this after uploading bytes to a grant from recordings_request_upload. Finalizes the storage object into a BitterClip recording and starts transcription when the account allows it. Multipart uploads must pass every part_number/etag returned by storage.
Surface: App-only
Product release 1dce717408a55fac1047e7d779177fa3ef8ede51
Public contract commit 1ce47f7857ae3d9b6933fe83d5c33de3ae5efc64
Public contract SHA-256 241d47d25e4b4c1dae9d2263793874d06fc4ba7bc3c78d4cf2bc63fbb32ed7dc
Captured 2026-09-24T16:39:30.100Z. Review or improve this contract on GitHub.
These blocks show the complete MCP descriptors captured from serving Rails. Security schemes and resource URIs can differ by connected host.
App descriptor
{
"name": "recordings_finalize_upload",
"title": "Finalize a recording upload",
"description": "Use this after uploading bytes to a grant from recordings_request_upload. Finalizes the storage object into a BitterClip recording and starts transcription when the account allows it. Multipart uploads must pass every part_number/etag returned by storage.",
"inputSchema": {
"type": "object",
"properties": {
"upload_token": {
"type": "string"
},
"parts": {
"type": "array",
"description": "Required for multipart uploads: one object per uploaded part.",
"items": {
"type": "object",
"properties": {
"part_number": {
"type": "integer"
},
"etag": {
"type": "string"
}
},
"required": [
"part_number",
"etag"
]
}
}
},
"required": [
"upload_token"
],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"visibility": [
"app"
]
},
"openai/widgetAccessible": true,
"openai/visibility": "private"
},
"outputSchema": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"deduped": {
"type": "boolean"
},
"recording_id": {
"type": "string"
},
"recording_public_id": {
"type": "string"
},
"status": {
"type": "string"
},
"transcript_status": {
"type": "string"
},
"original_filename": {
"type": "string"
},
"duration_seconds": {
"type": [
"number",
"null"
]
},
"insertable": {
"type": "boolean",
"description": "True when the finalized source has enough media duration to be inserted into a composition."
},
"byte_size": {
"type": [
"integer",
"null"
]
},
"workspace_url": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
}Errors
[
"invalid_upload_token",
"upload_not_found",
"upload_incomplete",
"upload_mismatch",
"multipart_upload_failed",
"billing_required",
"invalid_input"
]Examples
[]