Letno Plačajte letno in pridobite 2 meseca brezplačno pri vsakem plačljivem paketu. Oglejte si pakete
Prijava Začni brezplačno

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: input in output).

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:

  • messages z vlogami system, developer (obravnava se kot system), user, assistant in tool,
  • tools in tool_choice (auto, none, required ali ena poimenovana funkcija): lastna orodja vašega orodja se mu vrnejo kot klici orodij, ToRun pa jih nikoli ne zažene,
  • response_format z json_object. json_schema je sprejet in odgovor pride v JSON, vendar sama shema ni uveljavljena,
  • temperature (od 0 do 2), top_p (od 0 do 1), max_completion_tokens ali max_tokens, stop (do 4 zaporedja), seed in reasoning_effort,
  • stream in stream_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 svojim index.
  • 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_usage ima zadnji del prazen choices in nosi usage.
  • 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.