{"openapi":"3.1.0","info":{"title":"Twilio Studio (BYOK) API","version":"0.1.0","description":"Twilio Studio (BYOK) lets an AI assistant read your own Twilio Studio data through the Twilio Studio 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: 6 tools (list_flows, get_flow, list_flow_revisions, list_executions, get_execution, list_execution_steps). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-twilio-studio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-twilio-studio/docs"},"termsOfService":"https://connectorbay.com/byok-twilio-studio/terms"},"servers":[{"url":"https://byok-twilio-studio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-twilio-studio/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_flows":{"post":{"operationId":"list_flows","summary":"List the Studio flows of the account with status (draft or published), revision number and validity. The flow definition","description":"List the Studio flows of the account with status (draft or published), revision number and validity. The flow definition itself is not returned. Use for \"Which Twilio Studio flows do I have and are they published\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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_flowsArguments","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_flow":{"post":{"operationId":"get_flow","summary":"Get one Studio flow: name, status, current revision, validity, commit message and trigger webhook URL. The definition JS","description":"Get one Studio flow: name, status, current revision, validity, commit message and trigger webhook URL. The definition JSON and error lists are not returned. Use for \"Is my Welcome Studio flow published and valid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"flow_sid":{"description":"The SID of the Studio flow: 'FW' followed by 32 hex characters.","maxLength":34,"title":"Flow Sid","type":"string"}},"required":["flow_sid"],"title":"get_flowArguments","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_flow_revisions":{"post":{"operationId":"list_flow_revisions","summary":"List the saved revisions of a Studio flow with revision number, status, validity and commit message. Use for \"What chang","description":"List the saved revisions of a Studio flow with revision number, status, validity and commit message. Use for \"What changed in the revisions of my Welcome flow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"flow_sid":{"description":"The SID of the Studio flow: 'FW' followed by 32 hex characters.","maxLength":34,"title":"Flow Sid","type":"string"},"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":["flow_sid"],"title":"list_flow_revisionsArguments","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_executions":{"post":{"operationId":"list_executions","summary":"List executions (one run of a flow per contact) of a Studio flow with status and start time. Contact addresses and conte","description":"List executions (one run of a flow per contact) of a Studio flow with status and start time. Contact addresses and context are not returned. Use for \"Which executions of my Welcome flow are still active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"flow_sid":{"description":"The SID of the Studio flow: 'FW' followed by 32 hex characters.","maxLength":34,"title":"Flow Sid","type":"string"},"status":{"anyOf":[{"enum":["active","ended"],"type":"string"},{"type":"null"}],"default":null,"description":"Only executions in this state: active or ended.","title":"Status"},"date_created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only executions created on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Date Created From"},"date_created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only executions created before this ISO 8601 time.","title":"Date Created To"},"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":["flow_sid"],"title":"list_executionsArguments","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_execution":{"post":{"operationId":"get_execution","summary":"Get one Studio flow execution: flow revision, status, trigger source and timestamps. The context is not returned. Use fo","description":"Get one Studio flow execution: flow revision, status, trigger source and timestamps. The context is not returned. Use for \"What is the status of this Studio execution\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"flow_sid":{"description":"The SID of the Studio flow: 'FW' followed by 32 hex characters.","maxLength":34,"title":"Flow Sid","type":"string"},"execution_sid":{"description":"The SID of the execution: 'FN' followed by 32 hex characters.","maxLength":34,"title":"Execution Sid","type":"string"}},"required":["flow_sid","execution_sid"],"title":"get_executionArguments","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_execution_steps":{"post":{"operationId":"list_execution_steps","summary":"List the steps an execution moved through: widget name, type and which widget it came from and went to. Use for \"Which s","description":"List the steps an execution moved through: widget name, type and which widget it came from and went to. Use for \"Which steps did this Studio execution pass through\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"flow_sid":{"description":"The SID of the Studio flow: 'FW' followed by 32 hex characters.","maxLength":34,"title":"Flow Sid","type":"string"},"execution_sid":{"description":"The SID of the execution: 'FN' followed by 32 hex characters.","maxLength":34,"title":"Execution Sid","type":"string"},"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":["flow_sid","execution_sid"],"title":"list_execution_stepsArguments","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}}}}