One API for every model

Access every leading model through a single, unified interface.

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 as you already wrote it. The exceptions are model capabilities: a model without tool support refuses tools with 400 tools_not_supported, and supported_parameters in GET /v1/models tells you in advance.

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: "mistral/mistral-medium-3.5",
  messages: [{ role: "user", content: "Hallo!" }],
});

One model id, many provider routes

A model is addressed as provider/model, e.g. mistral/mistral-medium-3.5. For many models, Kontinent keeps more than one provider behind that single id: a primary route and a standby route that takes over on failure. You pick the model; Kontinent picks the healthy route. For models without a standby route, a routing policy gives you the same protection.

Mistral

Primary: the default route for mistral/mistral-medium-3.5.

Scaleway

Standby: takes over automatically if the primary is unavailable.

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 for how failover works.

Discover what you can use

List every active model, with EUR pricing and its sovereignty tier, in one call:

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

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.

Next

Maximum availability Price & performance Maximum privacy