AI model API for developers One key and one base URL for text models, images and video. Being OpenAI- and Anthropic-compatible means an existing SDK or client needs nothing but our address and our key — no rewrite.
First request
cURL Python x-api-key
⧉ curl https://api.teamtoken.store/v1/chat/completions \
-H "Authorization: Bearer $TEAMTOKEN_KEY" \
-H "Content-Type: application/json" \
-d '{ "model": "gpt-5.6-sol", "messages": [{"role":"user","content":"Hi"}] }'⧉ from openai import OpenAI
import os
client = OpenAI(
base_url="https://api.teamtoken.store/v1",
api_key=os.environ["TEAMTOKEN_KEY"],
)
r = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "Hi"}],
)⧉ curl https://api.teamtoken.store/v1/chat/completions \
-H "x-api-key: $TEAMTOKEN_KEY" \
-H "Content-Type: application/json" \
-d '{ "model": "gpt-5.6-sol", "messages": [{"role":"user","content":"Hi"}] }'200 OK · usage.cost_usd the request's cost arrives inside the answer — the x-teamtoken-cost-usd header and a field in the body.
Three scenarios, one key ✎
Text
OpenAI- and Anthropic-compatible chat, responses and embeddings. Every reply carries its own cost.
· The main text route: an OpenAI-shaped conversation.· The OpenAI Responses API — the path Codex CLI is configured against.· The same chat, in the Anthropic shape: a different request and response body.· Vectors for text, in the OpenAI shape.To the endpoints → ▣
Images
Image generation and edits. A long generation returns a job you poll by id.
· Images come back as base64 in the same answer; a long generation returns a job id (202).· Poll the job a generation returned with 202: status, and the images once they are ready.· An edit is a generation with references: the same handler, a JSON body only.To the endpoints → ▶
Video
Asynchronous video generation from text, an image or another video, plus result delivery.
· Queues a video generation: 202 with a job id, or the finished result inline with wait: true.· A video job's state, and the link to the finished clip.· Serves the clip's actual bytes — MP4 streamed through the gateway, not a redirect.To the endpoints → What's inside ⚿
One key, one balance
Text, images and video spend the same money: no separate account and no separate invoice per scenario.
⇄
OpenAI- and Anthropic-compatible
An existing SDK changes its base_url and its key; Anthropic clients call /v1/messages, where any model in the catalog answers — not only Claude.
◎
Cost inside the answer
Text reports it in usage.cost_usd, and a non-streamed answer also in the x-teamtoken-cost-usd header; media reports it in cost_usd next to the job's status. Always a decimal string, so your client cannot re-render it by its own float rules.
⟳
A repeat is idempotent
A byte-identical request with the same key inside the TTL (60 s by default) never reaches the model twice and is not charged twice.
⧗
Media are asynchronous jobs
A long generation answers 202 with an id, is polled by that id, and its money stays reserved until the result arrives.
▤
Catalog and status, no key
Live prices and model availability — a success rate and a per-day history — are open without authentication, readable before you sign up.
Documentation sections What this API is
One key and one base URL for text, images and video, one account for all of it, and each request's cost inside the answer.
Authentication
A key from the cabinet, the two accepted headers, and what 401 and 402 actually mean.
Your first request
Five steps: get a key, put it in your environment, send a request, read the cost, check the balance.
Connect your tool
Ready-made configs and prompts for agents and IDEs: Claude Code, Codex CLI, Cursor, Cline and the rest.
API Reference
Every endpoint by group: parameters, request and response examples, error causes.
OpenAPI document
The same contract, machine-readable: for a client generator or a Postman import.
openapi.public.en.json
Base URL and key ⧉ POST https://api.teamtoken.store/v1/chat/completions
Authorization: Bearer sk-…
x-api-key: sk-…The key is issued in the cabinet and goes into either header — whichever the client prefers. The same key works on every endpoint below.
Preferred header — Authorization: Bearer sk-… . Alternative for simple clients — x-api-key: sk-… . POST requests require Content-Type: application/json. Never keep a key in frontend code or a public repository — a key spends real money. Endpoints Text OpenAI- and Anthropic-compatible chat, responses and embeddings. Every reply carries its own cost.
Images Image generation and edits. A long generation returns a job you poll by id.
Video Asynchronous video generation from text, an image or another video, plus result delivery.
Account & catalog Which models are available and how much money the key's account has. The priced catalog needs no key.
OpenAPI document The same contract, machine-readable: generated from this very spec, ready for a client generator or a Postman import.
About prices Prices are live, and the catalog serves them — no key needed:
The key is issued right after signup; top up with a card, SBP or crypto.