{"openapi":"3.1.0","info":{"title":"Vapi (BYOK) API","version":"0.1.0","description":"Vapi (BYOK) lets an AI assistant read your own Vapi data through the Vapi API with a key you supply (private API key). Read-only: 9 tools (list_assistants, get_assistant, list_calls, get_call, list_phone_numbers, list_squads, list_tools, list_files, list_knowledge_bases). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vapi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vapi/docs"},"termsOfService":"https://connectorbay.com/byok-vapi/terms"},"servers":[{"url":"https://byok-vapi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vapi/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_assistants":{"post":{"operationId":"list_assistants","summary":"List voice assistants with name, first message, model, voice, maximum call duration and timestamps, newest first by defa","description":"List voice assistants with name, first message, model, voice, maximum call duration and timestamps, newest first by default. Use for \"Which Vapi assistants do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (0 to 1000, the API default is 100).","title":"Limit"},"created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time; use the createdAt of the last item to page backwards.","title":"Created Before"},"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time.","title":"Created After"}},"title":"list_assistantsArguments","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_assistant":{"post":{"operationId":"get_assistant","summary":"Get one assistant: name, first message, model, voice, transcriber, call limits and timestamps. Use for \"Show the configu","description":"Get one assistant: name, first message, model, voice, transcriber, call limits and timestamps. Use for \"Show the configuration of one Vapi assistant\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"assistant_id":{"description":"Assistant ID as returned by list_assistants (id).","maxLength":80,"title":"Assistant Id","type":"string"}},"required":["assistant_id"],"title":"get_assistantArguments","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_calls":{"post":{"operationId":"list_calls","summary":"List calls with type, status, why they ended, start and end time, cost, assistant, phone number, customer and analysis s","description":"List calls with type, status, why they ended, start and end time, cost, assistant, phone number, customer and analysis summary. Transcripts are not included; use get_call. Use for \"What Vapi calls happened recently and why did they end\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"assistant_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only calls handled by this assistant ID.","title":"Assistant Id"},"phone_number_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only calls on this phone number ID.","title":"Phone Number Id"},"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (0 to 1000, the API default is 100).","title":"Limit"},"created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time; use the createdAt of the last item to page backwards.","title":"Created Before"},"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time.","title":"Created After"}},"title":"list_callsArguments","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_call":{"post":{"operationId":"get_call","summary":"Get one call with status, end reason, cost, customer, analysis (summary, success evaluation, structured data) and the tr","description":"Get one call with status, end reason, cost, customer, analysis (summary, success evaluation, structured data) and the transcript. Use for \"Show the transcript and summary of one Vapi call\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"call_id":{"description":"Call ID as returned by list_calls (id).","maxLength":80,"title":"Call Id","type":"string"}},"required":["call_id"],"title":"get_callArguments","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_phone_numbers":{"post":{"operationId":"list_phone_numbers","summary":"List phone numbers with provider, status, name, linked assistant or squad and creation time (provider secrets are not re","description":"List phone numbers with provider, status, name, linked assistant or squad and creation time (provider secrets are not returned). Use for \"Which phone numbers do I have in Vapi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (0 to 1000, the API default is 100).","title":"Limit"},"created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time; use the createdAt of the last item to page backwards.","title":"Created Before"},"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time.","title":"Created After"}},"title":"list_phone_numbersArguments","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_squads":{"post":{"operationId":"list_squads","summary":"List squads (groups of assistants that hand off to each other) with name, members and timestamps. Use for \"Which Vapi sq","description":"List squads (groups of assistants that hand off to each other) with name, members and timestamps. Use for \"Which Vapi squads exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (0 to 1000, the API default is 100).","title":"Limit"},"created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time; use the createdAt of the last item to page backwards.","title":"Created Before"},"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time.","title":"Created After"}},"title":"list_squadsArguments","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_tools":{"post":{"operationId":"list_tools","summary":"List tools that assistants can call (function, API request, transfer and so on) with type, name, description and timesta","description":"List tools that assistants can call (function, API request, transfer and so on) with type, name, description and timestamps. Use for \"Which tools are defined in my Vapi account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (0 to 1000, the API default is 100).","title":"Limit"},"created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 time; use the createdAt of the last item to page backwards.","title":"Created Before"},"created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 time.","title":"Created After"}},"title":"list_toolsArguments","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_files":{"post":{"operationId":"list_files","summary":"List uploaded knowledge files with name, size, MIME type, status and creation time. Use for \"Which knowledge files have ","description":"List uploaded knowledge files with name, size, MIME type, status and creation time. Use for \"Which knowledge files have I uploaded to Vapi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_filesArguments","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_knowledge_bases":{"post":{"operationId":"list_knowledge_bases","summary":"List knowledge bases with name, description and timestamps. Use for \"Which Vapi knowledge bases do I have\".","description":"List knowledge bases with name, description and timestamps. Use for \"Which Vapi knowledge bases do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (0 to 1000, the API default is 100).","title":"Limit"}},"title":"list_knowledge_basesArguments","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}}}}