API

API documentation

One key and one OpenAI-compatible endpoint for every model in the catalogue. Here is how to connect, what each endpoint returns, what usage is metered in, and what the error codes mean.

01

Quick start

  1. Create an API key in the dashboard, section “API keys”. The secret is shown once — store it.
  2. Set the base URL and the authorization header in your client.
  3. Send a request to any endpoint: usage is deducted from your balance automatically.
bash
curl https://llmall.store/v1/chat/completions \
  -H "Authorization: Bearer sk-llmall-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [{ "role": "user", "content": "Hello" }]
  }'
02

Base URL and authentication

Base URL: https://llmall.store/v1. Compatible with the OpenAI SDK — replacing base_url is enough.

Pass the secret in the Authorization header using the Bearer scheme. A key can be paused or revoked at any time; revocation takes effect on the gateway immediately.

python
from openai import OpenAI

client = OpenAI(
    base_url="https://llmall.store/v1",
    api_key="sk-llmall-...",
)

resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
03

Endpoints

EndpointWhat it doesStatus
POST /chat/completionsChat, OpenAI-compatible; supports streamingworks
POST /messagesChat in the Anthropic Messages API formatworks
GET /modelsModels available to your key under its policyworks
POST /embeddingsText embeddingsworks when the model has a provider configured
POST /images/generationsImage generationworks when the model has a provider configured
POST /audio/speech, /audio/transcriptionsSpeech synthesis and recognitionworks when the model has a provider configured
POST /videos/generationsVideo generationworks when the model has a provider configured

Some catalogue models have no provider configured and answer with a simulated result (for embeddings — a placeholder vector). CU usage is still charged. Check the specific model before production use.

04

What usage is metered in

The unit is CU (1 CU = $10 of estimated compute). Models are metered per 1K or 1M tokens, per embedding, per image, per second of video, or per request — the unit is shown on the model card.

Catalogue prices are shown in roubles and in CU. Model prices use the central bank rate; topping up uses a rate with the payment channel surcharge, so the amount you pay for the same volume is higher. The difference is shown at checkout before you confirm.

Top-up: SBP by QR code or a bank card. Minimum 1 CU.

05

Limits

Monthly and daily limits per key are optional: leave them empty and there is no cap — spending is bounded by your account balance. If you set a monthly limit and have a plan, it cannot exceed the plan's monthly limit.

The gateway enforces the limits: once a key budget is exhausted, requests return 429 insufficient_cu. Request rate is limited on the platform side; when exceeded, the API returns 429 with a Retry-After header — the number of seconds to wait.

06

Error codes

CodeMeaningWhat to do
400 / 422Bad request: malformed body or unknown fieldCheck the JSON shape and field names
401Key missing, revoked or invalidCheck the Authorization header
403Model disallowed by the key policyRemove the model or change the key policy
404Unknown path or model not foundCheck the endpoint list and GET /models
429 insufficient_cuBalance or key budget exhaustedTop up or raise the key limit
429 rate_limit_exceededRequest rate exceededWait Retry-After seconds and retry
500Gateway internal errorRetry later; if it persists, contact support
503 provider_unavailableThe model's provider is unavailableRetry later or pick another model
07

What you can set in the dashboard

Keys: name, monthly and daily limit in CU (optional), pause and revoke. The secret is shown once on creation.

Top-up: amount in CU or roubles, payment method (SBP QR or card). Minimum 1 CU.

Profile: name, password change, linked sign-in accounts (Google, Yandex ID).

Combos: your own set of models under one id — a request goes to the cheapest available member, and to the next one by price when it is busy.

Data masking subscription: before forwarding to the provider we detect names, phone numbers, emails, passports, Russian SNILS/INN and card numbers, replace them with markers, and restore the originals in the response. Marker-to-value mappings live in process memory only and are never persisted.

?

If it does not work

  • 401 — check the key is complete, with no spaces or line breaks.
  • 403 — the model is blocked by this key's policy, not the account's.
  • 429 with insufficient_cu and 429 with rate_limit_exceeded are different causes; check the type field.
  • Empty or unexpected response on a non-chat endpoint — the model has no provider configured, the answer was simulated.
  • Model not found — check GET /models: the list honours your key policy.