API kompatibilní s OpenAI
Poslední aktualizace: 11 lis 2026
Co to je
API kompatibilní s OpenAI umožňuje nástroji, který umí formát chat completions od OpenAI, používat chatovací modely ToRun s platbou z vašeho účtu ToRun. Programovací agent jako opencode může používat ToRun jako svého poskytovatele modelů vedle nástrojů MCP od ToRun.
Adresa a přihlášení
| Základní URL | https://mcp.torun.ai/v1 |
| Přihlášení | Authorization: Bearer <your developer key> |
Použijte stejný vývojářský klíč jako pro MCP server: viz Vývojářské klíče. Klíč vytvořený před přidáním API kompatibilního s OpenAI dostane odpověď 403 insufficient_scope. Oprávnění klíče se nikdy nemění, takže vytvořte nový klíč.
API má dva koncové body, GET /v1/models a POST /v1/chat/completions. Jakákoli jiná cesta pod /v1 odpoví 404 not_found.
Modely
GET /v1/models uvádí nejprve torun/auto a potom každý textový model, který může váš plán používat, podle jeho ID. U každého modelu je uvedeno:
- kolik textu dokáže přečíst (
context_length) a jak dlouhou odpověď dokáže napsat (max_completion_tokens), - zda umí volat nástroje (
supports_tools) a číst obrázky (supports_vision), - jeho cena v Runs za milion tokenů (
pricing:inputaoutput).
torun/auto nechá ToRun vybrat model pro každý požadavek: takový, který čte obrázky, když požadavek obsahuje obrázek, a takový, který volá nástroje, když posílá tools.
Chat completions
POST /v1/chat/completions přijímá:
messagess rolemisystem,developer(zpracovává se jakosystem),user,assistantatool,toolsatool_choice(auto,none,requirednebo jedna pojmenovaná funkce): vlastní nástroje vašeho nástroje se mu vracejí jako volání nástrojů a ToRun je nikdy nespouští,response_formatsjson_object.json_schemaje přijat a odpověď přijde v JSON, ale samotné schéma se nevynucuje,temperature(0 až 2),top_p(0 až 1),max_completion_tokensnebomax_tokens,stop(až 4 sekvence),seedareasoning_effort,streamastream_options.include_usage.
n větší než 1, logprobs, top_logprobs, zvuk a jakýkoli jiný výstup než text jsou odmítnuty s 400 unsupported_parameter, nikoli ignorovány.
Obrázky
Obrázek posílejte vložený, jako data:image/...;base64,... v části image_url, do 20 MB na požadavek. Obrázek poslaný jako odkaz je odmítnut s 400 image_url_not_supported: ToRun ho nestahuje. Obrázky procházejí bezpečnostní kontrolou, stejně jako v aplikaci.
Streamování
S "stream": true přichází odpověď jako server-sent events ve tvaru chat.completion.chunk:
- První blok nese roli
assistanta volání nástrojů se streamují se svýmindex. - Když není co poslat, přijde každých 15 sekund komentářový řádek
: keepalive; parsery SSE ho přeskočí. data: [DONE]ukončuje stream, který proběhl úspěšně.- S
stream_options.include_usagemá poslední blok prázdnéchoicesa neseusage. - Chyba po začátku streamu přijde jako jedna událost
data: {"error": ...}, bez[DONE].
Volání bez streamování se po 110 sekundách zastaví s 504 timeout. Dlouhé požadavky posílejte s "stream": true.
Využití
usage obsahuje prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens a completion_tokens_details.reasoning_tokens a navíc torun_credits: kolik volání stálo v Runs.
Použití v opencode
Konfigurace opencode na stránce Pro vývojáře přidá ToRun jako poskytovatele modelů vedle MCP serveru:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"torun": {
"npm": "@ai-sdk/openai-compatible",
"name": "ToRun",
"options": { "baseURL": "https://mcp.torun.ai/v1", "apiKey": "{env:TORUN_API_KEY}" },
"models": { "torun/auto": { "name": "ToRun Auto" } }
}
}
}
Jakýkoli jiný nástroj, který umí chatovací API OpenAI, funguje stejně. Karta OpenAI API na této stránce ukazuje toto volání:
curl https://mcp.torun.ai/v1/chat/completions \
-H "Authorization: Bearer $TORUN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "torun/auto", "messages": [{"role": "user", "content": "Hello"}]}'
Jak se volání platí
Volání API stojí stejně Runs jako stejné použití v aplikaci. Platí je jen placené prostředky: nejprve limit vašeho placeného plánu, potom peněženka, pokud jste to u klíče povolili. Bezplatný limit volání API nikdy neplatí. Platí měsíční a denní limity klíče a odpovědi procházejí bezpečnostní kontrolou stejně jako odpovědi v chatu.
Limity
Každý klíč může tomuto API poslat 60 požadavků za minutu a spouštět 4 completions současně. Nad tuto mez API odpoví 429 rate_limit_exceeded s hlavičkou Retry-After.
Chyby
Každá chyba má tvar {"error": {"message": ..., "type": ..., "param": ..., "code": ...}}. message je v jazyce, který požaduje hlavička Accept-Language požadavku.
| Stav | Kód | Význam |
|---|---|---|
| 400 | invalid_json, missing_parameter, invalid_parameter, unsupported_parameter |
Požadavek je chybně sestavený nebo používá parametr, který ToRun nepodporuje. |
| 400 | image_url_not_supported |
Obrázek byl poslán jako odkaz; pošlete ho vložený. |
| 400 | content_blocked |
Bezpečnostní kontrola obsah zablokovala. |
| 400 | upstream_rejected |
Poskytovatel modelu požadavek odmítl; zpráva uvádí proč. |
| 401 | invalid_api_key |
Klíč chybí, je chybně zadaný nebo zrušený. |
| 402 | insufficient_credits, wallet_spend_not_allowed, spending_cap_reached |
Účet nebo klíč nemůže volání zaplatit. |
| 403 | insufficient_scope |
Klíč byl vytvořen před přidáním tohoto API; vytvořte nový klíč. |
| 403 | model_not_available |
Model není součástí vašeho plánu. |
| 403 | account_suspended, no_developer_access |
Účet je pozastavený nebo nemá přístup pro vývojáře. |
| 404 | model_not_found |
Toto ID modelu není v seznamu GET /v1/models. |
| 404 | not_found |
Pod /v1 taková cesta není. |
| 429 | rate_limit_exceeded |
Příliš mnoho volání; počkejte dobu uvedenou v Retry-After. |
| 500 | internal_error |
Na straně ToRun něco selhalo. |
| 502 | upstream_error, empty_reply |
Poskytovatel modelu selhal nebo poslal prázdnou odpověď. |
| 503 | upstream_error, cap_unreadable, scan_unavailable |
Služba, kterou volání potřebuje, je chvíli nedostupná; zkuste to znovu. |
| 504 | timeout |
Volání bez streamování běželo déle než 110 sekund. |
Požadavek, který nelze zaplatit, dostane odpověď 402, ne 429, aby ho klient neopakoval pořád dokola.