Getting started
Kindo exposes industry-standard inference protocols on a single base
URL — https://api.kindo.ai — authenticated by a single Kindo API
key. Bring whichever client you already use, point it at
api.kindo.ai, and the rest of your code works unmodified.
Common inference endpoints
| Endpoint | Protocol | Use it when |
|---|---|---|
/v1/chat/completions | OpenAI Chat Completions | You’re migrating from OpenAI’s Chat Completions API or any OpenAI-compatible proxy. |
/v1/responses | OpenAI Responses | You’re using codex, the new OpenAI Responses surface, or want stateful conversations. |
/v1/messages | Anthropic Messages | You’re using Claude Code, the Anthropic SDK, or any Anthropic-compatible client. |
/v1/mcp | Model Context Protocol | You want a spec-conformant MCP client to reach every Kindo integration’s tools. |
All of these accept the same Kindo API key — there are no per-protocol credentials. The only difference between using Kindo and calling OpenAI or Anthropic directly is which base URL you point your client at and which key you use.
Beyond the inference protocols, Kindo also exposes control-plane endpoints for agents, runs, conversations, models, and integrations — see the APIs sidebar for the full list, or jump to:
- Agents API — discover, trigger, and poll agent runs.
- Conversations API — read items from a stored conversation.
- Control-plane endpoints —
GET /v1/modelsand/v1/integrations/*.
Pick your client
Kindo follows the upstream specs faithfully. If your client speaks the protocol, it works:
| If you use… | Set this base URL | Set this key envvar | API surface |
|---|---|---|---|
codex | OPENAI_BASE_URL=https://api.kindo.ai/v1 | OPENAI_API_KEY=$KINDO_API_KEY | /v1/responses |
openai-python | OpenAI(base_url="https://api.kindo.ai/v1") | OpenAI(api_key=os.environ["KINDO_API_KEY"]) | /v1/chat/completions (or client.responses.*) |
openai-node | new OpenAI({ baseURL: "https://api.kindo.ai/v1" }) | apiKey: process.env.KINDO_API_KEY | /v1/chat/completions (or client.responses.*) |
| Anthropic Python SDK | Anthropic(base_url="https://api.kindo.ai") | Anthropic(api_key=os.environ["KINDO_API_KEY"]) | /v1/messages |
| Anthropic TypeScript SDK | new Anthropic({ baseURL: "https://api.kindo.ai" }) | apiKey: process.env.KINDO_API_KEY | /v1/messages |
| Claude Code | ANTHROPIC_BASE_URL=https://api.kindo.ai | ANTHROPIC_API_KEY=$KINDO_API_KEY | /v1/messages |
| MCP client (spec-conformant) | https://api.kindo.ai/v1/mcp | Authorization: Bearer $KINDO_API_KEY | /v1/mcp |
Raw curl | https://api.kindo.ai | Authorization: Bearer $KINDO_API_KEY | Any of the above |
The Anthropic SDKs and Claude Code append /v1/messages
internally, so the base URL omits /v1. Including it would produce a
double path segment (/v1/v1/messages).
Why one base URL, many protocols
Different teams standardize on different SDKs, and each protocol has different ergonomics: Chat Completions is the broadly-supported baseline, the Responses API adds stateful conversations and typed-output items, Messages is what Anthropic’s first-party tools speak, MCP is what spec-conformant tool-calling clients speak. By accepting all of them on one base URL with one API key, Kindo lets every team keep its existing client choice while still routing through a single governance pipeline (auth, model access, audit, DLP, metering).
Default behavior is stock provider behavior
When you call /v1/chat/completions, /v1/responses, or
/v1/messages with a stock OpenAI or Anthropic client, you get
stock OpenAI or Anthropic semantics. Kindo does not silently
inject system prompts, hidden tools, or stateful side effects.
If you want any of those things on /v1/responses, opt in
explicitly via the Chat Actions extensions: a curated system
prompt, the Kindo-hosted tool catalog, and Kindo-managed
conversation state. Each is independent and documented at
guides/chat-actions. /v1/chat/completions
and /v1/messages are stock OpenAI and stock Anthropic; the Chat
Actions opt-ins are not available there.
Next steps
- Authentication — header options and key formats.
- Model catalog — discover what model IDs to send.
- Pick a quickstart:
- Responses API quickstart for
codexand the OpenAI Responses SDK. - Chat Completions API quickstart
for
openai-python/openai-node. - Messages API quickstart for Claude Code and the Anthropic SDKs.
- MCP API quickstart for any spec-conformant MCP client.
- Agents API quickstart for triggering Kindo agents over HTTP.
- Responses API quickstart for
- Chat Actions — opt in to Kindo’s curated
prompt, hosted tools, or stateful conversations on
/v1/responses.