Get connector
One connector entry; 404 distinguishes an unknown id from a disconnected one.
https://api.corespeed.io/connectors/:idReturns the same entry shape as the index, for one connector.
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 404 means the id does not exist. A connector that exists but has no
connected account returns 200 with status: "disconnected" and an empty
accounts array — the distinction matters when you are deciding whether to
send a user to the dashboard or to fix a typo.
A connector withheld from the index (upstream approval still in progress) keeps
its own route, so this endpoint can answer 200 for an id the index never
listed. The index is the availability authority; this route is not.
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}` },
});
if (res.status === 404) throw new Error("unknown connector id");
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']}"},
)
if res.status_code == 404:
raise RuntimeError("unknown connector id")
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()
if res.StatusCode == http.StatusNotFound {
panic("unknown connector id")
}
var connector struct {
Status string `json:"status"`
}
json.NewDecoder(res.Body).Decode(&connector)
fmt.Println(connector.Status)
}{
"id": "linear",
"category": "connector",
"name": "Linear",
"mcp_url": "https://api.corespeed.io/mcp",
"status": "disconnected",
"accounts": []
}Unknown ids fall through to the gateway's catch-all, which answers with the
nested envelope and a message that lists the gateway's supported surfaces.
{
"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" }