OpenAI-compatible AI gateway

One endpoint. Every model.

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.

POST /gateway/v1/chat/completions
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"}]}'

Models

Switch providers without changing your integration.

DeepSeek V4 Flash deepseek-v4-flash
DeepSeekFast · technical · 1M context
Available 1.05M context Streaming Prompt cache
Kimi K2.6 kimi-k2.6
MoonshotReasoning · general · vision
Available 262K context Streaming Vision Prompt cache

Quickstart

Three steps from an empty file to a routed completion.

  1. 1

    Install an SDK

    Any OpenAI-compatible client works. pip install openai

  2. 2

    Set the base URL

    Replace the default endpoint with https://flinstube.ru/gateway/v1

  3. 3

    Send a request

    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)

Platform

The parts that usually take a week to build.

Drop-in compatibility

Use existing OpenAI SDK integrations without rewriting your application. Chat completions and streaming behave exactly as your client expects.

Token accounting

Track prompt and completion usage per key and per model, with latency on every call.

API key management

Create separate keys for individual projects and revoke them instantly. Provider credentials never leave the server.

Prompt caching

Repeated prefixes are served from the upstream prompt cache. Cached tokens are reported per request and aggregated in your usage view.

Image input

Kimi K2.6 reads base64 image_url content parts, so vision prompts work through the same endpoint.

Automatic failover

Requests route across upstream providers, so a single rate-limited backend does not take your integration down.

Input support

Verified against the live upstreams, not copied from a datasheet.

Textrole / content strings
All modelsStreaming supported
Supported
Imagesimage_url · base64 data URL
kimi-k2.6Not deepseek-v4-flash · remote URLs rejected
1 of 2 models
Prompt cachecached_tokens · prompt_cache_hit_tokens
All modelsEngages on repeated prefixes
Supported
Videovideo_url
No modelsRejected by every upstream
Not supported
Audioinput_audio
No modelsRejected by every upstream
Not supported