Quickstart
Make your first request in under a minute.
Kontinent is a single OpenAI-compatible endpoint in front of more than a dozen model providers serving from the EU, among them Mistral, Scaleway, OVHcloud, IONOS, AWS Bedrock (Frankfurt and Ireland), Azure OpenAI (EU Data Zone) and Google Vertex AI (EU). You get prepaid credits, per-key rate limits, and no prompt storage on Kontinent's side. The full, current list of models and providers is in the catalog.
If you already talk to OpenAI, there is nothing new to learn. You change two things: the base URL and the API key. Messages, tools, streaming, and the response shape stay as you wrote them. A few models cannot call tools; GET /v1/models tells you which.
Estimated time: 1 minute. All you need is a sk-kt- key and a model id.
Steps
Set your base URL and key
typescriptimport OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.kontinent.ai/v1", apiKey: process.env.KONTINENT_API_KEY, // sk-kt-... });pythonfrom openai import OpenAI client = OpenAI( base_url="https://api.kontinent.ai/v1", api_key=os.environ["KONTINENT_API_KEY"], )Send a chat completion
typescriptconst res = await client.chat.completions.create({ model: "mistral/mistral-medium-3.5", messages: [{ role: "user", content: "Hallo!" }], }); console.log(res.choices[0].message.content);pythonres = client.chat.completions.create( model="mistral/mistral-medium-3.5", messages=[{"role": "user", "content": "Hallo!"}], ) print(res.choices[0].message.content)bashcurl https://api.kontinent.ai/v1/chat/completions \ -H "Authorization: Bearer $KONTINENT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"mistral/mistral-medium-3.5", "messages":[{"role":"user","content":"Hallo!"}]}'Stream the response
Set
stream: trueto receive Server-Sent Events as the model generates.typescriptconst stream = await client.chat.completions.create({ model: "mistral/mistral-small-4", messages: [{ role: "user", content: "Write a haiku about Europe." }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? ""); }See Streaming for the SSE wire format and timeout behavior.
Pick the right model
Model ids are in
provider/modelform, e.g.mistral/mistral-medium-3.5. List every active model, with EUR pricing and sovereignty tier, in one call:bashcurl https://api.kontinent.ai/v1/models \ -H "Authorization: Bearer $KONTINENT_API_KEY"
Why Kontinent
EU data residency
Requests are served from EU regions. Each model carries a sovereignty tier so you can require an EU-owned provider.
Zero retention
Kontinent never stores or logs prompt and completion bodies. Only metadata such as token counts, latency, status, model, and cost. Whether a provider keeps data is shown per model.
Drop-in compatible
OpenAI-compatible on purpose. Any OpenAI SDK works by pointing baseURL at Kontinent.