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
Section titled “Models”GET /v1/models
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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.