Skip to content

Getting started

Kindo exposes a single base URL — https://api.kindo.ai — that speaks three industry-standard wire protocols. You bring whichever client you already use, point it at api.kindo.ai, and the rest of your code works unmodified.

The three APIs are:

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.

All three 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.

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
Raw curlhttps://api.kindo.aiAuthorization: Bearer $KINDO_API_KEYAll three

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, three APIs

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. By accepting all three, 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