{"openapi":"3.1.0","info":{"title":"Vapi Reporting (BYOK) API","version":"0.1.0","description":"Vapi Reporting (BYOK) lets an AI assistant read your own Vapi Reporting data through the Vapi Reporting API with a key you supply (private API key). Read-only: 6 tools (list_insights, list_boards, list_scorecards, list_structured_outputs, list_campaigns, list_pronunciation_dictionaries). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vapi-reporting.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vapi-reporting/docs"},"termsOfService":"https://connectorbay.com/byok-vapi-reporting/terms"},"servers":[{"url":"https://byok-vapi-reporting.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vapi-reporting/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_insights":{"post":{"operationId":"list_insights","summary":"List saved reporting insights (charts and metrics over your calls) with name, visualization type and timestamps. Use for","description":"List saved reporting insights (charts and metrics over your calls) with name, visualization type and timestamps. Use for \"Which saved Vapi insights do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the insight with this id.","title":"Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 100; keep it small for readable answers).","title":"Limit"},"sort_order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: ASC or DESC (default DESC).","title":"Sort Order"}},"title":"list_insightsArguments","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_boards":{"post":{"operationId":"list_boards","summary":"List reporting boards (dashboards) with name, layout column count and timestamps. Use for \"Which reporting dashboards ex","description":"List reporting boards (dashboards) with name, layout column count and timestamps. Use for \"Which reporting dashboards exist in my Vapi account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 100; keep it small for readable answers).","title":"Limit"},"sort_order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: ASC or DESC (default DESC).","title":"Sort Order"}},"title":"list_boardsArguments","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_scorecards":{"post":{"operationId":"list_scorecards","summary":"List scorecards that score calls from structured outputs, with name, description, linked assistant ids and metrics. Use ","description":"List scorecards that score calls from structured outputs, with name, description, linked assistant ids and metrics. Use for \"Which scorecards do I use to grade my Vapi calls\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the scorecard with this id.","title":"Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 100; keep it small for readable answers).","title":"Limit"},"sort_order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: ASC or DESC (default DESC).","title":"Sort Order"}},"title":"list_scorecardsArguments","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_structured_outputs":{"post":{"operationId":"list_structured_outputs","summary":"List structured output definitions (data extracted from calls) with name, description, type, regex, linked assistant and","description":"List structured output definitions (data extracted from calls) with name, description, type, regex, linked assistant and workflow ids and the JSON schema. Use for \"What structured data does Vapi extract from my calls\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the structured output with this id.","title":"Id"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only structured outputs with this name.","title":"Name"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 100; keep it small for readable answers).","title":"Limit"},"sort_order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: ASC or DESC (default DESC).","title":"Sort Order"}},"title":"list_structured_outputsArguments","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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List outbound call campaigns with name, status, end reason, assistant or squad, phone number, concurrency and optionally","description":"List outbound call campaigns with name, status, end reason, assistant or squad, phone number, concurrency and optionally contact counters and call metrics. Use for \"What is the status of my Vapi outbound campaigns\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the campaign with this id.","title":"Id"},"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns with this status, for example scheduled, in-progress or ended.","title":"Status"},"include_counters":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include per-status contact counts and call outcomes for each campaign (slower).","title":"Include Counters"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 100; keep it small for readable answers).","title":"Limit"},"sort_order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: ASC or DESC (default DESC).","title":"Sort Order"}},"title":"list_campaignsArguments","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_pronunciation_dictionaries":{"post":{"operationId":"list_pronunciation_dictionaries","summary":"List the ElevenLabs pronunciation dictionaries mirrored into Vapi with their provider resource id and data. Use for \"Whi","description":"List the ElevenLabs pronunciation dictionaries mirrored into Vapi with their provider resource id and data. Use for \"Which pronunciation dictionaries has Vapi stored for my ElevenLabs voices\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"resource_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the entry with this provider-specific resource id.","title":"Resource Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 100).","title":"Limit"}},"title":"list_pronunciation_dictionariesArguments","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}}}}