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 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_usdthe 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

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.