Drop-in compatibility
Use existing OpenAI SDK integrations without rewriting your application. Chat completions and streaming behave exactly as your client expects.
Point your existing OpenAI SDK at a single base URL and switch models by changing one string. Every request is metered, so you can see prompt and completion tokens per key and per model.
curl https://flinstube.ru/gateway/v1/chat/completions \ -H "Authorization: Bearer $FLINSTUBE_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Hello"}]}'
Switch providers without changing your integration.
Three steps from an empty file to a routed completion.
Any OpenAI-compatible client works. pip install openai
Replace the default endpoint with https://flinstube.ru/gateway/v1
Use your sk-flin-… key and pick any model ID from the list above.
from openai import OpenAI client = OpenAI( base_url="https://flinstube.ru/gateway/v1", api_key="YOUR_KEY", ) response = client.chat.completions.create( model="deepseek-v4-flash", messages=[ {"role": "user", "content": "Hello"} ], ) print(response.choices[0].message.content)
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://flinstube.ru/gateway/v1", apiKey: process.env.FLINSTUBE_KEY, }); const response = await client.chat.completions.create({ model: "deepseek-v4-flash", messages: [{ role: "user", content: "Hello" }], }); console.log(response.choices[0].message.content);
curl https://flinstube.ru/gateway/v1/chat/completions \ -H "Authorization: Bearer $FLINSTUBE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-v4-flash", "messages": [{"role": "user", "content": "Hello"}] }'
The parts that usually take a week to build.
Use existing OpenAI SDK integrations without rewriting your application. Chat completions and streaming behave exactly as your client expects.
Track prompt and completion usage per key and per model, with latency on every call.
Create separate keys for individual projects and revoke them instantly. Provider credentials never leave the server.
Repeated prefixes are served from the upstream prompt cache. Cached tokens are reported per request and aggregated in your usage view.
Kimi K2.6 reads base64 image_url content parts, so vision prompts work through the same endpoint.
Requests route across upstream providers, so a single rate-limited backend does not take your integration down.
Verified against the live upstreams, not copied from a datasheet.