Skip to content

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

EndpointProtocolUse it when
/v1/chat/completionsOpenAI Chat CompletionsYou’re migrating from OpenAI’s Chat Completions API or any OpenAI-compatible proxy.
/v1/responsesOpenAI ResponsesYou’re using codex, the new OpenAI Responses surface, or want stateful conversations.
/v1/messagesAnthropic MessagesYou’re using Claude Code, the Anthropic SDK, or any Anthropic-compatible client.
/v1/mcpModel Context ProtocolYou 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:

Pick your client

Kindo follows the upstream specs faithfully. If your client speaks the protocol, it works:

If you use…Set this base URLSet this key envvarAPI surface
codexOPENAI_BASE_URL=https://api.kindo.ai/v1OPENAI_API_KEY=$KINDO_API_KEY/v1/responses
openai-pythonOpenAI(base_url="https://api.kindo.ai/v1")OpenAI(api_key=os.environ["KINDO_API_KEY"])/v1/chat/completions (or client.responses.*)
openai-nodenew OpenAI({ baseURL: "https://api.kindo.ai/v1" })apiKey: process.env.KINDO_API_KEY/v1/chat/completions (or client.responses.*)
Anthropic Python SDKAnthropic(base_url="https://api.kindo.ai")Anthropic(api_key=os.environ["KINDO_API_KEY"])/v1/messages
Anthropic TypeScript SDKnew Anthropic({ baseURL: "https://api.kindo.ai" })apiKey: process.env.KINDO_API_KEY/v1/messages
Claude CodeANTHROPIC_BASE_URL=https://api.kindo.aiANTHROPIC_API_KEY=$KINDO_API_KEY/v1/messages
MCP client (spec-conformant)https://api.kindo.ai/v1/mcpAuthorization: Bearer $KINDO_API_KEY/v1/mcp
Raw curlhttps://api.kindo.aiAuthorization: Bearer $KINDO_API_KEYAny 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