> For the complete documentation index, see [llms.txt](https://docs.kontinent.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kontinent.ai/features/unified-api.md).

# One API for every model

Kontinent puts one OpenAI-compatible endpoint in front of every model it serves. You integrate once and reach the whole catalog. No per-provider SDKs, no bespoke auth, no request reshaping. **The OpenAI SDK works without changes.**

## How it works

Point your existing OpenAI client at Kontinent by changing two things: the base URL and the API key. Everything else, including messages, tools, streaming, and the response shape, stays exactly as you already wrote it.

{% tabs %}
{% tab title="TypeScript" %}

```typescript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.kontinent.ai/v1", // only this
  apiKey: process.env.KONTINENT_API_KEY,  // and this (sk-kt-...)
});

const res = await client.chat.completions.create({
  model: "anthropic/claude-opus-4.8",
  messages: [{ role: "user", content: "Hallo!" }],
});
```

{% endtab %}

{% tab title="Python" %}

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.kontinent.ai/v1",  # only this
    api_key=os.environ["KONTINENT_API_KEY"], # and this
)
```

{% endtab %}

{% tab title="curl" %}

```bash
curl https://api.kontinent.ai/v1/chat/completions \
  -H "Authorization: Bearer $KONTINENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"anthropic/claude-opus-4.8",
       "messages":[{"role":"user","content":"Hallo!"}]}'
```

{% endtab %}
{% endtabs %}

### One model id, many provider routes

A model is addressed as `provider/model`, e.g. `anthropic/claude-opus-4.8`. Behind that single id, Kontinent can route to more than one upstream provider: a **primary** with **standby** routes that take over on failure. You pick the model; Kontinent picks the healthiest route.

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><h4><i class="fa-aws" style="color:$primary;">:aws:</i></h4></td><td><strong>Bedrock</strong></td><td><strong>Primary</strong>: the default route for <code>anthropic/claude-opus-4.8</code>.</td></tr><tr><td><h4><i class="fa-google" style="color:$primary;">:google:</i></h4></td><td><strong>Vertex</strong></td><td><strong>Standby</strong>: takes over automatically if the primary is unavailable.</td></tr><tr><td><h4><i class="fa-microsoft" style="color:$primary;">:microsoft:</i></h4></td><td><strong>Azure</strong></td><td><strong>Standby</strong>: a second failover route for the same logical model.</td></tr></tbody></table>

Your request never has to know which provider answered. Same model id, same request shape, same response, regardless of the route underneath. See [Maximum availability](/models-and-routing/availability.md) for how failover works.

### Discover what you can use

List every model available to your organization, with EUR pricing and its sovereignty tier, in one call:

```bash
curl https://api.kontinent.ai/v1/models \
  -H "Authorization: Bearer $KONTINENT_API_KEY"
```

{% hint style="info" %}
Model ids follow the `provider/model` convention. Sending a chat model to the embeddings endpoint (or vice versa) is rejected; an unknown or disabled id returns `404 model_not_found`. See [Models & sovereignty](/models-and-routing/models.md).
{% endhint %}

## Next

{% content-ref url="/pages/AMjrYb6Jgzk2l2v9SVgU" %}
[Maximum availability](/models-and-routing/availability.md)
{% endcontent-ref %}

{% content-ref url="/pages/QESs3zvtebNO6KUdpRpD" %}
[Price & performance](/models-and-routing/price-performance.md)
{% endcontent-ref %}

{% content-ref url="/pages/S87kmqk1v7J693l2ZOBs" %}
[Maximum privacy](/privacy/data-privacy.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kontinent.ai/features/unified-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
