Skip to content

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.

Terminal window
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.

Terminal window
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"
}
]
}
FieldTypeNotes
idstringConnection ID. Pass this as connection_id when setting a default.
display_namestringDisplay name from the Kindo Terminal.
integration_config_idstringThe nangoIntegrationId (e.g. linear, github). Same value used as {integration_id} in the default-setter.
nango_connection_idstringUpstream Nango connection ID.
is_preferredbooleantrue when this connection is the preferred default for integration_config_id.
created_atstringISO-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.

Terminal window
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:

StatusCause
400Invalid body — connection_id is required, or connection_id does not belong to integration_id.
403The key authenticated, but is not authorized to use the specified connection.
404The 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.