API kompatibilné s OpenAI
Posledná aktualizácia: 11 nov 2026
Čo to je
API kompatibilné s OpenAI umožňuje nástroju, ktorý ovláda formát chat completions od OpenAI, používať chatovacie modely ToRun s platbou z vášho účtu ToRun. Programovací agent ako opencode môže používať ToRun ako svojho poskytovateľa modelov vedľa nástrojov MCP od ToRun.
Adresa a prihlásenie
| Základná URL | https://mcp.torun.ai/v1 |
| Prihlásenie | Authorization: Bearer <your developer key> |
Použite rovnaký vývojársky kľúč ako pre MCP server: pozrite Vývojárske kľúče. Kľúč vytvorený pred pridaním API kompatibilného s OpenAI dostane odpoveď 403 insufficient_scope. Oprávnenia kľúča sa nikdy nemenia, takže vytvorte nový kľúč.
API má dva koncové body, GET /v1/models a POST /v1/chat/completions. Akákoľvek iná cesta pod /v1 odpovie 404 not_found.
Modely
GET /v1/models uvádza najprv torun/auto a potom každý textový model, ktorý môže váš plán používať, podľa jeho ID. Pri každom modeli je uvedené:
- koľko textu dokáže prečítať (
context_length) a ako dlhú odpoveď dokáže napísať (max_completion_tokens), - či vie volať nástroje (
supports_tools) a čítať obrázky (supports_vision), - jeho cena v Runs za milión tokenov (
pricing:inputaoutput).
torun/auto nechá ToRun vybrať model pre každú požiadavku: taký, ktorý číta obrázky, keď požiadavka obsahuje obrázok, a taký, ktorý volá nástroje, keď posiela tools.
Chat completions
POST /v1/chat/completions prijíma:
messagess rolamisystem,developer(spracúva sa akosystem),user,assistantatool,toolsatool_choice(auto,none,requiredalebo jedna pomenovaná funkcia): vlastné nástroje vášho nástroja sa mu vracajú ako volania nástrojov a ToRun ich nikdy nespúšťa,response_formatsjson_object.json_schemaje prijatý a odpoveď príde v JSON, ale samotná schéma sa nevynucuje,temperature(0 až 2),top_p(0 až 1),max_completion_tokensalebomax_tokens,stop(až 4 sekvencie),seedareasoning_effort,streamastream_options.include_usage.
n väčšie ako 1, logprobs, top_logprobs, zvuk a akýkoľvek iný výstup než text sú odmietnuté s 400 unsupported_parameter, nie ignorované.
Obrázky
Obrázok posielajte vložený, ako data:image/...;base64,... v časti image_url, do 20 MB na požiadavku. Obrázok poslaný ako odkaz je odmietnutý s 400 image_url_not_supported: ToRun ho nesťahuje. Obrázky prechádzajú bezpečnostnou kontrolou, rovnako ako v aplikácii.
Streamovanie
S "stream": true prichádza odpoveď ako server-sent events v tvare chat.completion.chunk:
- Prvý blok nesie rolu
assistanta volania nástrojov sa streamujú so svojímindex. - Keď nie je čo poslať, príde každých 15 sekúnd komentárový riadok
: keepalive; parsery SSE ho preskočia. data: [DONE]ukončuje stream, ktorý prebehol úspešne.- S
stream_options.include_usagemá posledný blok prázdnechoicesa nesieusage. - Chyba po začiatku streamu príde ako jedna udalosť
data: {"error": ...}, bez[DONE].
Volanie bez streamovania sa po 110 sekundách zastaví s 504 timeout. Dlhé požiadavky posielajte s "stream": true.
Využitie
usage obsahuje prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens a completion_tokens_details.reasoning_tokens a navyše torun_credits: koľko volanie stálo v Runs.
Použitie v opencode
Konfigurácia opencode na stránke Pre vývojárov pridá ToRun ako poskytovateľa modelov vedľa MCP servera:
{
"$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" } }
}
}
}
Akýkoľvek iný nástroj, ktorý ovláda chatovacie API OpenAI, funguje rovnako. Karta OpenAI API na tejto stránke ukazuje toto volanie:
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"}]}'
Ako sa volania platia
Volania API stoja rovnako Runs ako rovnaké použitie v aplikácii. Platia ich len platené prostriedky: najprv limit vášho plateného plánu, potom peňaženka, ak ste to pri kľúči povolili. Bezplatný limit volania API nikdy neplatí. Platia mesačné a denné limity kľúča a odpovede prechádzajú bezpečnostnou kontrolou rovnako ako odpovede v chate.
Limity
Každý kľúč môže tomuto API poslať 60 požiadaviek za minútu a spúšťať 4 completions súčasne. Nad túto hranicu API odpovie 429 rate_limit_exceeded s hlavičkou Retry-After.
Chyby
Každá chyba má tvar {"error": {"message": ..., "type": ..., "param": ..., "code": ...}}. message je v jazyku, ktorý požaduje hlavička Accept-Language požiadavky.
| Stav | Kód | Význam |
|---|---|---|
| 400 | invalid_json, missing_parameter, invalid_parameter, unsupported_parameter |
Požiadavka je chybne zostavená alebo používa parameter, ktorý ToRun nepodporuje. |
| 400 | image_url_not_supported |
Obrázok bol poslaný ako odkaz; pošlite ho vložený. |
| 400 | content_blocked |
Bezpečnostná kontrola obsah zablokovala. |
| 400 | upstream_rejected |
Poskytovateľ modelu požiadavku odmietol; správa uvádza prečo. |
| 401 | invalid_api_key |
Kľúč chýba, je chybne zadaný alebo zrušený. |
| 402 | insufficient_credits, wallet_spend_not_allowed, spending_cap_reached |
Účet alebo kľúč nemôže volanie zaplatiť. |
| 403 | insufficient_scope |
Kľúč bol vytvorený pred pridaním tohto API; vytvorte nový kľúč. |
| 403 | model_not_available |
Model nie je súčasťou vášho plánu. |
| 403 | account_suspended, no_developer_access |
Účet je pozastavený alebo nemá prístup pre vývojárov. |
| 404 | model_not_found |
Toto ID modelu nie je v zozname GET /v1/models. |
| 404 | not_found |
Pod /v1 taká cesta nie je. |
| 429 | rate_limit_exceeded |
Príliš veľa volaní; počkajte čas uvedený v Retry-After. |
| 500 | internal_error |
Na strane ToRun niečo zlyhalo. |
| 502 | upstream_error, empty_reply |
Poskytovateľ modelu zlyhal alebo poslal prázdnu odpoveď. |
| 503 | upstream_error, cap_unreadable, scan_unavailable |
Služba, ktorú volanie potrebuje, je chvíľu nedostupná; skúste to znova. |
| 504 | timeout |
Volanie bez streamovania bežalo dlhšie než 110 sekúnd. |
Požiadavka, ktorú nemožno zaplatiť, dostane odpoveď 402, nie 429, aby ju klient neopakoval stále dokola.