Connectors

Get connector

One connector entry; 404 covers both an unknown id and a connector this environment does not serve.

GEThttps://api.corespeed.io/connectors/:id

Returns the same entry shape as the index, for one connector.

Org-registered remote MCP connectors are read at GET /connectors/org/:slug instead — their own tree, so a remote slug and a same-named built-in connector each answer on their own path. The remote read additionally carries the verbatim snapshot tool list under remote.tools.

Authorizationstringheaderrequired

Bearer <sk-cs-…> — a CoreSpeed API key, or a user session JWT. x-api-key: <sk-cs-…> is accepted in its place.

idstringpathrequired

Any connector id present in the authenticated index.

A connector that exists and is served here but has no connected account returns 200 with status: "disconnected" and an empty accounts array — that is the answer that tells you to send a user to the dashboard.

A 404 means this endpoint has nothing to serve you for that id, which covers two cases you cannot tell apart and should not try to: the id does not exist, or it exists but is not offered on this environment (upstream approval still in progress, credentials not present here). Whether a connector is offered is internal operations state, so it is not published on any endpoint — the responses are deliberately identical.

Treat GET /connectors as the only source of truth for what you can connect: an id absent from the index is not connectable here, whatever the reason. Attempting a connect flow for one fails, so there is no state in which probing this endpoint tells you something the index did not.

One exception, and it exists so a grant can always be revoked: if you still have accounts on a connector that has since stopped being offered, this endpoint keeps serving that entry (and DELETE keeps working on it). Without it, a credential that outlived its environment's OAuth app would become an orphan nobody could disconnect.

Connector-route business errors use a flat envelope ({ "error": "<code>", "message": "…" }), unlike the nested { "error": { type, message, code } } envelope that identity, billing, and unknown-endpoint failures use. Handle both shapes when you parse errors from this surface.

curl https://api.corespeed.io/connectors/notion \
  -H "Authorization: Bearer $CORESPEED_API_KEY"
Exists but not connected
{
  "id": "linear",
  "category": "productivity",
  "name": "Linear",
  "mcp_url": "https://api.corespeed.io/mcp",
  "status": "disconnected",
  "accounts": []
}