{"openapi":"3.1.0","info":{"title":"Twilio Video (BYOK) API","version":"0.1.0","description":"Twilio Video (BYOK) lets an AI assistant read your own Twilio Video data through the Twilio Video API with a key you supply (Account SID or API key SID (use a restricted API key, SID starts with SK, rather than the main Auth Token where possible)). Read-only: 9 tools (list_rooms, get_room, list_room_participants, list_room_recordings, list_recordings, list_compositions, list_composition_hooks,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-twilio-video.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-twilio-video/docs"},"termsOfService":"https://connectorbay.com/byok-twilio-video/terms"},"servers":[{"url":"https://byok-twilio-video.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-twilio-video/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_rooms":{"post":{"operationId":"list_rooms","summary":"List video rooms with unique name, status, type (group, peer-to-peer), duration and recording flag, optionally by status","description":"List video rooms with unique name, status, type (group, peer-to-peer), duration and recording flag, optionally by status, name or creation time. Use for \"Which Twilio video rooms are in progress right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["in-progress","completed","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only rooms in this state.","title":"Status"},"unique_name":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Only the room with exactly this unique name.","title":"Unique Name"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time.","title":"Date Created Before"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_roomsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_room":{"post":{"operationId":"get_room","summary":"Get one video room: status, type, participant limit, media region, duration, recording flag and timeouts. Use for \"How l","description":"Get one video room: status, type, participant limit, media region, duration, recording flag and timeouts. Use for \"How long did Twilio video room RMaaa... last\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_sid":{"description":"The room SID ('RM' + 32 hex characters) or its unique name.","maxLength":128,"title":"Room Sid","type":"string"}},"required":["room_sid"],"title":"get_roomArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_room_participants":{"post":{"operationId":"list_room_participants","summary":"List the participants of a room with identity, status (connected, disconnected), join and leave times and duration. Use ","description":"List the participants of a room with identity, status (connected, disconnected), join and leave times and duration. Use for \"Who joined Twilio video room RMaaa... and for how long\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_sid":{"description":"The SID of the video room: 'RM' followed by 32 hex characters.","maxLength":34,"title":"Room Sid","type":"string"},"status":{"anyOf":[{"enum":["connected","disconnected","reconnecting"],"type":"string"},{"type":"null"}],"default":null,"description":"Only participants in this state.","title":"Status"},"identity":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Only the participant with this identity.","title":"Identity"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time.","title":"Date Created Before"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["room_sid"],"title":"list_room_participantsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_room_recordings":{"post":{"operationId":"list_room_recordings","summary":"List the track recordings of one room with track name, type, codec, container, size in bytes and duration. Media files a","description":"List the track recordings of one room with track name, type, codec, container, size in bytes and duration. Media files are not downloaded. Use for \"Which recordings exist for Twilio video room RMaaa\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_sid":{"description":"The SID of the video room: 'RM' followed by 32 hex characters.","maxLength":34,"title":"Room Sid","type":"string"},"status":{"anyOf":[{"enum":["processing","completed","deleted","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only recordings in this state.","title":"Status"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time.","title":"Date Created Before"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["room_sid"],"title":"list_room_recordingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_recordings":{"post":{"operationId":"list_recordings","summary":"List track recordings across the account, optionally by status, media type, source or creation time. Use for \"How much v","description":"List track recordings across the account, optionally by status, media type, source or creation time. Use for \"How much video recording storage have I used\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["processing","completed","deleted","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only recordings in this state.","title":"Status"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time.","title":"Date Created Before"},"media_type":{"anyOf":[{"enum":["audio","video","data"],"type":"string"},{"type":"null"}],"default":null,"description":"Only recordings of this media type.","title":"Media Type"},"source_sid":{"anyOf":[{"maxLength":34,"type":"string"},{"type":"null"}],"default":null,"description":"Only recordings of this track SID.","title":"Source Sid"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_recordingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_compositions":{"post":{"operationId":"list_compositions","summary":"List recording compositions (rendered videos) with status, resolution, format, size in bytes, duration and the room they","description":"List recording compositions (rendered videos) with status, resolution, format, size in bytes, duration and the room they came from. Use for \"Which of my Twilio video compositions finished rendering\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["enqueued","processing","completed","deleted","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only compositions in this state.","title":"Status"},"room_sid":{"anyOf":[{"maxLength":34,"type":"string"},{"type":"null"}],"default":null,"description":"Only compositions of this room.","title":"Room Sid"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time.","title":"Date Created Before"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_compositionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_composition_hooks":{"post":{"operationId":"list_composition_hooks","summary":"List composition hooks (rules that render rooms automatically) with name, enabled flag, resolution and format. Use for \"","description":"List composition hooks (rules that render rooms automatically) with name, enabled flag, resolution and format. Use for \"Do I have automatic Twilio video composition set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for enabled hooks only, false for disabled ones.","title":"Enabled"},"friendly_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only hooks with this name.","title":"Friendly Name"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time.","title":"Date Created Before"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_composition_hooksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_room_recording_rules":{"post":{"operationId":"get_room_recording_rules","summary":"Get the recording rules of a room: which publishers and tracks are recorded. Use for \"What does Twilio video room RMaaa.","description":"Get the recording rules of a room: which publishers and tracks are recorded. Use for \"What does Twilio video room RMaaa... record\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_sid":{"description":"The SID of the video room: 'RM' followed by 32 hex characters.","maxLength":34,"title":"Room Sid","type":"string"}},"required":["room_sid"],"title":"get_room_recording_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_recording_settings":{"post":{"operationId":"get_recording_settings","summary":"Get the account's default video recording storage settings: whether external storage and encryption are enabled. Use for","description":"Get the account's default video recording storage settings: whether external storage and encryption are enabled. Use for \"Is video recording encryption on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_recording_settingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}