Control plane endpoints
Beyond the inference protocols, Kindo exposes a small set of
control-plane endpoints on api.kindo.ai for inspecting and
configuring the platform’s models, integrations, and default
connections. They use the same Authorization: Bearer $KINDO_API_KEY
auth as the inference surfaces.
GET /v1/models speaks the
OpenAI Models API
verbatim — stock OpenAI clients work unmodified. The integration
endpoints below are Kindo-specific.
Models
GET /v1/models
Speaks the OpenAI Models API. The response shape is identical to
GET https://api.openai.com/v1/models, so any stock OpenAI client
(openai-python, openai-node, client.models.list() in the SDKs,
curl, etc.) works against https://api.kindo.ai/v1/models
unmodified — just swap the base URL and key. The IDs returned here
are the exact strings to pass as model on /v1/chat/completions,
/v1/responses, and /v1/messages.
curl https://api.kindo.ai/v1/models \ -H "Authorization: Bearer $KINDO_API_KEY"{ "object": "list", "data": [ { "id": "claude-sonnet-4-5-20250929", "object": "model", "created": 0, "owned_by": "kindo" } ]}For full detail on naming conventions, cross-API model use, and discovery via the Kindo Terminal, see the Model catalog page.
Integration connections
The Integrations API lets you list integration connections accessible to the API-key holder and pick the preferred (default) connection for each integration. Connections are managed through the Kindo Terminal; this API exposes the read view plus the default-setter.
GET /v1/integrations/connections
Returns every connection the caller can see, including shared group connections. Each entry indicates whether it is the preferred default for that integration.
curl https://api.kindo.ai/v1/integrations/connections \ -H "Authorization: Bearer $KINDO_API_KEY"{ "data": [ { "id": "conn_abc123", "display_name": "Charlie's Linear", "integration_config_id": "linear", "nango_connection_id": "nango_conn_1", "is_preferred": true, "created_at": "2026-03-10T18:45:23.000Z" } ]}| Field | Type | Notes |
|---|---|---|
id | string | Connection ID. Pass this as connection_id when setting a default. |
display_name | string | Display name from the Kindo Terminal. |
integration_config_id | string | The nangoIntegrationId (e.g. linear, github). Same value used as {integration_id} in the default-setter. |
nango_connection_id | string | Upstream Nango connection ID. |
is_preferred | boolean | true when this connection is the preferred default for integration_config_id. |
created_at | string | ISO-8601 timestamp. |
POST /v1/integrations/connections/{integration_id}/default
Sets the preferred connection for the given integration. The
{integration_id} path segment is the same value as
integration_config_id returned by the list endpoint — both refer to
the nangoIntegrationId.
curl -X POST https://api.kindo.ai/v1/integrations/connections/linear/default \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $KINDO_API_KEY" \ -d '{ "connection_id": "conn_abc123" }'Response:
{ "integration_config_id": "linear", "connection_id": "conn_abc123"}Errors:
| Status | Cause |
|---|---|
400 | Invalid body — connection_id is required, or connection_id does not belong to integration_id. |
403 | The key authenticated, but is not authorized to use the specified connection. |
404 | The integration connection was not found, or the caller does not have access to it. |
See also
- Model catalog — naming conventions and cross-API model use.
- Agents API — discover and trigger agents that route through the models exposed here.
- MCP API — invoke tools from the same integration connections through Kindo’s MCP gateway.