Get connector
One connector entry; 404 covers both an unknown id and a connector this environment does not serve.
https://api.corespeed.io/connectors/:idReturns 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.
Authorizations
AuthorizationstringheaderrequiredBearer <sk-cs-…>— a CoreSpeed API key, or a user session JWT.x-api-key: <sk-cs-…>is accepted in its place.
Path parameters
idstringpathrequiredAny 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"const res = await fetch("https://api.corespeed.io/connectors/notion", {
headers: { Authorization: `Bearer ${process.env.CORESPEED_API_KEY}` },
});
// 404 = nothing to serve for this id here: unknown, or not offered on this
// environment. Both mean "not connectable" — read GET /connectors for what is.
if (res.status === 404) throw new Error("connector not available here");
const connector = await res.json();
console.log(connector.status);import os
import httpx
res = httpx.get(
"https://api.corespeed.io/connectors/notion",
headers={"Authorization": f"Bearer {os.environ['CORESPEED_API_KEY']}"},
)
# 404 = nothing to serve for this id here: unknown, or not offered on this
# environment. Both mean "not connectable" — read GET /connectors for what is.
if res.status_code == 404:
raise RuntimeError("connector not available here")
print(res.json()["status"])package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.corespeed.io/connectors/notion", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("CORESPEED_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
// 404 = nothing to serve for this id here: unknown, or not offered on this
// environment. Both mean "not connectable" — read GET /connectors for what is.
if res.StatusCode == http.StatusNotFound {
panic("connector not available here")
}
var connector struct {
Status string `json:"status"`
}
json.NewDecoder(res.Body).Decode(&connector)
fmt.Println(connector.Status)
}{
"id": "linear",
"category": "productivity",
"name": "Linear",
"mcp_url": "https://api.corespeed.io/mcp",
"status": "disconnected",
"accounts": []
}Both 404 cases answer with the gateway's catch-all shape — the nested envelope
and a message listing the gateway's supported surfaces. A connector not
offered on this environment returns exactly this, so the response carries no
hint that the id is one CoreSpeed implements.
{
"error": {
"type": "invalid_request_error",
"message": "Unknown endpoint /connectors/nope. Supported surfaces: …",
"code": "endpoint_not_found"
}
}The credential authenticated but resolves to no active organization, so there is no boundary to read connector state inside.
{ "error": "no_active_org" }