API, združljiv z OpenAI
Zadnja posodobitev: 11 nov. 2026
Kaj je to
API, združljiv z OpenAI, omogoča orodju, ki podpira OpenAI obliko chat completions, da uporablja ToRun modele za klepet s plačilom z vašega računa ToRun. Agent za programiranje, kot je opencode, lahko uporablja ToRun kot svojega ponudnika modelov ob orodjih MCP ToRun.
Naslov in prijava
| Osnovni URL | https://mcp.torun.ai/v1 |
| Prijava | Authorization: Bearer <your developer key> |
Uporabite isti razvijalski ključ kot za strežnik MCP: glejte Razvijalski ključi. Ključ, ustvarjen pred dodajanjem API-ja, združljivega z OpenAI, dobi odgovor 403 insufficient_scope. Dovoljenja ključa se nikoli ne spremenijo, zato ustvarite nov ključ.
API ima dve končni točki, GET /v1/models in POST /v1/chat/completions. Vsaka druga pot pod /v1 odgovori z 404 not_found.
Modeli
GET /v1/models najprej navede torun/auto, nato pa vsak besedilni model, ki ga lahko uporablja vaš paket, po njegovem ID-ju. Pri vsakem modelu je navedeno:
- koliko besedila lahko prebere (
context_length) in kako dolg odgovor lahko napiše (max_completion_tokens), - ali lahko kliče orodja (
supports_tools) in bere slike (supports_vision), - njegova cena v Runs na milijon žetonov (
pricing:inputinoutput).
torun/auto omogoči, da ToRun za vsako zahtevo izbere model: takega, ki bere slike, ko zahteva vsebuje sliko, in takega, ki kliče orodja, ko pošlje tools.
Chat completions
POST /v1/chat/completions sprejme:
messagesz vlogamisystem,developer(obravnava se kotsystem),user,assistantintool,toolsintool_choice(auto,none,requiredali ena poimenovana funkcija): lastna orodja vašega orodja se mu vrnejo kot klici orodij, ToRun pa jih nikoli ne zažene,response_formatzjson_object.json_schemaje sprejet in odgovor pride v JSON, vendar sama shema ni uveljavljena,temperature(od 0 do 2),top_p(od 0 do 1),max_completion_tokensalimax_tokens,stop(do 4 zaporedja),seedinreasoning_effort,streaminstream_options.include_usage.
n nad 1, logprobs, top_logprobs, zvok in vsak izhod razen besedila so zavrnjeni z 400 unsupported_parameter, ne pa prezrti.
Slike
Sliko pošljite vdelano, kot data:image/...;base64,... v delu image_url, do 20 MB na zahtevo. Slika, poslana kot povezava, je zavrnjena z 400 image_url_not_supported: ToRun je ne prenese. Slike gredo skozi varnostno preverjanje, tako kot v aplikaciji.
Pretakanje
Z "stream": true odgovor prispe kot server-sent events v obliki chat.completion.chunk:
- Prvi del nosi vlogo
assistant, klici orodij pa se pretakajo s svojimindex. - Ko ni ničesar za poslati, vsakih 15 sekund prispe vrstica komentarja
: keepalive; razčlenjevalniki SSE jo preskočijo. data: [DONE]konča uspešen tok.- Z
stream_options.include_usageima zadnji del prazenchoicesin nosiusage. - Napaka po začetku toka prispe kot en dogodek
data: {"error": ...}, brez[DONE].
Klic brez pretakanja se po 110 sekundah ustavi z 504 timeout. Dolge zahteve pošljite z "stream": true.
Poraba
usage vsebuje prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens in completion_tokens_details.reasoning_tokens ter torun_credits: koliko je klic stal, v Runs.
Uporaba v opencode
Konfiguracija opencode na strani Za razvijalce doda ToRun kot ponudnika modelov ob strežniku MCP:
{
"$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" } }
}
}
}
Vsako drugo orodje, ki podpira OpenAI API za klepet, deluje enako. Zavihek OpenAI API na tej strani prikazuje ta klic:
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"}]}'
Kako se klici plačujejo
Klici API stanejo enako Runs kot enaka uporaba v aplikaciji. Plačajo jih samo plačljiva sredstva: najprej kvota vašega plačljivega paketa, nato denarnica, če ste to dovolili pri ključu. Brezplačna kvota nikoli ne plača klicev API. Veljata mesečna in dnevna omejitev ključa, odgovori pa gredo skozi varnostno preverjanje enako kot odgovori v klepetu.
Omejitve
Vsak ključ lahko temu API-ju pošlje 60 zahtev na minuto in hkrati izvaja 4 completions. Nad tem API odgovori z 429 rate_limit_exceeded z glavo Retry-After.
Napake
Vsaka napaka ima obliko {"error": {"message": ..., "type": ..., "param": ..., "code": ...}}. message je v jeziku, ki ga zahteva glava Accept-Language zahteve.
| Stanje | Koda | Pomen |
|---|---|---|
| 400 | invalid_json, missing_parameter, invalid_parameter, unsupported_parameter |
Zahteva je napačno oblikovana ali uporablja parameter, ki ga ToRun ne podpira. |
| 400 | image_url_not_supported |
Slika je bila poslana kot povezava; pošljite jo vdelano. |
| 400 | content_blocked |
Varnostno preverjanje je blokiralo vsebino. |
| 400 | upstream_rejected |
Ponudnik modela je zahtevo zavrnil; sporočilo navaja razlog. |
| 401 | invalid_api_key |
Ključ manjka, je napačno vnesen ali preklican. |
| 402 | insufficient_credits, wallet_spend_not_allowed, spending_cap_reached |
Račun ali ključ ne more plačati klica. |
| 403 | insufficient_scope |
Ključ je bil ustvarjen pred dodajanjem tega API-ja; ustvarite nov ključ. |
| 403 | model_not_available |
Model ni v vašem paketu. |
| 403 | account_suspended, no_developer_access |
Račun je začasno onemogočen ali nima razvijalskega dostopa. |
| 404 | model_not_found |
ID modela ni med tistimi, ki jih navaja GET /v1/models. |
| 404 | not_found |
Pod /v1 ni take poti. |
| 429 | rate_limit_exceeded |
Preveč klicev; počakajte čas, naveden v Retry-After. |
| 500 | internal_error |
Nekaj je šlo narobe na strani ToRun. |
| 502 | upstream_error, empty_reply |
Ponudnik modela je odpovedal ali poslal prazen odgovor. |
| 503 | upstream_error, cap_unreadable, scan_unavailable |
Storitev, ki jo klic potrebuje, trenutno ni na voljo; poskusite znova. |
| 504 | timeout |
Klic brez pretakanja je trajal dlje kot 110 sekund. |
Zahteva, ki je ni mogoče plačati, dobi odgovor 402, ne 429, da je odjemalec ne ponavlja nenehno.