{"openapi":"3.1.0","info":{"title":"Perplexity (BYOK) API","version":"0.1.0","description":"Perplexity (BYOK) lets an AI assistant read your own Perplexity data through the Perplexity API with a key you supply (Perplexity API key (an analytics-only key for get_usage_analytics)). Read-only: 7 tools (list_agent_models, list_orchestrator_models, list_skills, get_skill, list_skill_revisions, get_agent_response, get_usage_analytics). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-perplexity.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-perplexity/docs"},"termsOfService":"https://connectorbay.com/byok-perplexity/terms"},"servers":[{"url":"https://byok-perplexity.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-perplexity/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_agent_models":{"post":{"operationId":"list_agent_models","summary":"List the model ids that can be used with the Agent API, with owner and creation time. Use for \"Which models can I use wi","description":"List the model ids that can be used with the Agent API, with owner and creation time. Use for \"Which models can I use with the Perplexity Agent API\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_agent_modelsArguments","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_orchestrator_models":{"post":{"operationId":"list_orchestrator_models","summary":"List the models offered by the Orchestrator API, sorted by id, with base token prices in US dollars per million tokens (","description":"List the models offered by the Orchestrator API, sorted by id, with base token prices in US dollars per million tokens (input, output, cache read and write). Use for \"How much do the Perplexity Orchestrator models cost per million tokens\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_orchestrator_modelsArguments","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_skills":{"post":{"operationId":"list_skills","summary":"List the custom skills in the project, newest first, with name, active revision and timestamps. Up to 200 per page; pass","description":"List the custom skills in the project, newest first, with name, active revision and timestamps. Up to 200 per page; pass next_page_token as page_token for more. Use for \"Which Perplexity skills have I created\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Skills per page (1 to 200, default 50).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"next_page_token from the previous page.","title":"Page Token"}},"title":"list_skillsArguments","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_skill":{"post":{"operationId":"get_skill","summary":"Get one skill: name, description, the requested or active revision, latest revision and timestamps. The bundle download ","description":"Get one skill: name, description, the requested or active revision, latest revision and timestamps. The bundle download link is not returned. Use for \"What does my Perplexity skill skill_abc123 do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"skill_id":{"description":"Skill id from list_skills.","maxLength":200,"title":"Skill Id","type":"string"},"revision":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Opaque revision token; omit for the active revision.","title":"Revision"}},"required":["skill_id"],"title":"get_skillArguments","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_skill_revisions":{"post":{"operationId":"list_skill_revisions","summary":"List the revisions of a skill, newest first, with revision token, name and creation time. Pass next_page_token as page_t","description":"List the revisions of a skill, newest first, with revision token, name and creation time. Pass next_page_token as page_token for more. Use for \"Show the revision history of my Perplexity skill skill_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"skill_id":{"description":"Skill id from list_skills.","maxLength":200,"title":"Skill Id","type":"string"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Revisions per page (1 to 200, default 50).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"next_page_token from the previous page.","title":"Page Token"}},"required":["skill_id"],"title":"list_skill_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/get_agent_response":{"post":{"operationId":"get_agent_response","summary":"Get a stored Agent API response by id: status, model, output messages and search results, token usage and cost in US dol","description":"Get a stored Agent API response by id: status, model, output messages and search results, token usage and cost in US dollars. Only responses created with storage enabled can be read. Use for \"What was the result of Perplexity response resp_abc123 and what did it cost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"response_id":{"description":"Response id of the form resp_.","maxLength":200,"title":"Response Id","type":"string"}},"required":["response_id"],"title":"get_agent_responseArguments","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_usage_analytics":{"post":{"operationId":"get_usage_analytics","summary":"Get organization usage analytics for one dataset as a time series (Enterprise only; needs the organization's analytics k","description":"Get organization usage analytics for one dataset as a time series (Enterprise only; needs the organization's analytics key). Free to call. Times are Unix seconds. Use for \"How many Perplexity credits did our organization use each day last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset":{"description":"Dataset to query.","enum":["credit_usage","connectors","artifacts","skills","spaces","workflows","task_durations","query_volume","daily_active_users"],"title":"Dataset","type":"string"},"start_time":{"description":"Window start, Unix seconds (UTC), inclusive.","minimum":0,"title":"Start Time","type":"integer"},"end_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window end, Unix seconds (UTC), exclusive; defaults to now.","title":"End Time"},"bucket_width":{"anyOf":[{"enum":["1d","1h"],"type":"string"},{"type":"null"}],"default":"1d","description":"Bucket size: 1d (default) or 1h; query_volume and daily_active_users accept only 1d.","title":"Bucket Width"},"limit":{"anyOf":[{"maximum":168,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Buckets per page: 1d default 7 and max 31, 1h default 24 and max 168.","title":"Limit"},"page":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"next_page cursor from the previous response, valid only with the same other parameters.","title":"Page"}},"required":["dataset","start_time"],"title":"get_usage_analyticsArguments","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}}}}