Unified AI gateway

Every AI provider,
one API key.

tinyai is a single, OpenAI-compatible endpoint in front of every provider. Point any OpenAI SDK at it and reach Claude, GPT, Gemini and more — no per-provider clients, no rewrites.

Get your key → See how it works Free while in preview
# The only change to your code: the base URL.
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.tinyappmart.com/v1",
    api_key="sk-...",          # one tinyai key
)

client.chat.completions.create(
    model="claude-opus-4-8",   # or gpt-5, gemini, sonnet, haiku...
    messages=[{"role": "user", "content": "Hello!"}],
)
The idea

One API. Every model. Zero lock-in.

tinyai deliberately copies the OpenAI API — so the tools, SDKs and code you already have just work. Swap the base URL and you can talk to any provider through the same requests.

🔌

OpenAI-compatible

Same request and response shapes as OpenAI. If your code speaks OpenAI, it already speaks tinyai — Python, JS, curl, anything.

🗝️

One key for all

A single sk- key reaches every provider. Pick the model per request; tinyai routes it to the right upstream.

🧩

Mix & match models

Claude for reasoning, GPT for one call, Gemini for the next — swap models with a string, not a new integration.

Bring your own keys

Your provider keys, combined behind one.

Load the API keys you already have — Anthropic, OpenAI, Google — into tinyai once. We hand you a single tinyai key that fans out to all of them using your own credentials. You keep billing directly with each provider; tinyai is just the router.

  • 1Add your provider keys in the dashboard (stored encrypted).
  • 2Get one tinyai sk- key that unifies them all.
  • 3Call any model through the OpenAI-style API — tinyai picks the right key.

no markup  You pay providers their price. We just translate and route.

# your keys, loaded once
anthropic → sk-ant-•••
openai    → sk-•••
google    → AIza•••combined into

tinyai    → sk-•••   # one key, all providers
Advanced

Or write your own translation logic.

# define your OWN request shape → any provider
def to_anthropic(req):
    return {
        "model": req["m"],
        "max_tokens": req.get("limit", 1024),
        "messages": req["chat"],
    }
# tinyai runs this on the way out.

Don't want the OpenAI shape? You're not stuck with it. Write a small translation file that says what requests you send to tinyai and how they map to each provider's native API. Your own front door; tinyai handles the plumbing to every backend.

  • Define the request format your app sends.
  • Map it to each provider's native request & response.
  • tinyai applies your logic per call — custom in, unified out.
Available now

Models

Call by full id or a short alias. More providers landing soon.

AliasModelProvider
opusclaude-opus-4-8Anthropic
sonnetclaude-sonnet-4-6Anthropic
haikuclaude-haiku-4-5Anthropic
fableclaude-fable-5Anthropic
OpenAI & Google — coming next

Sign in & get your key →