Yearly Pay yearly and get 2 months free on every paid plan. See plans
Conectare Începe gratuit

API compatibil cu OpenAI

Ultima actualizare: 11 nov. 2026

Ce este

API-ul compatibil cu OpenAI permite unui instrument care folosește formatul chat completions al OpenAI să utilizeze modelele de chat ToRun, plătite din contul dvs. ToRun. Un agent de programare precum opencode poate folosi ToRun ca furnizor de modele, alături de instrumentele MCP ToRun.

Adresă și autentificare

URL de bază https://mcp.torun.ai/v1
Autentificare Authorization: Bearer <your developer key>

Folosiți aceeași cheie de dezvoltator ca pentru serverul MCP: consultați Chei de dezvoltator. O cheie creată înainte de adăugarea API-ului compatibil cu OpenAI primește răspunsul 403 insufficient_scope. Permisiunile unei chei nu se schimbă niciodată, așa că creați o cheie nouă.

API-ul are două puncte finale, GET /v1/models și POST /v1/chat/completions. Orice altă cale sub /v1 răspunde cu 404 not_found.

Modele

GET /v1/models listează mai întâi torun/auto, apoi fiecare model de text pe care îl poate folosi planul dvs., după ID-ul modelului. Pentru fiecare model se indică:

  • cât text poate citi (context_length) și cât de lung poate fi răspunsul pe care îl scrie (max_completion_tokens),
  • dacă poate apela instrumente (supports_tools) și citi imagini (supports_vision),
  • prețul său în Runs per milion de tokeni (pricing: input și output).

torun/auto îi permite lui ToRun să aleagă un model pentru fiecare cerere: unul care citește imagini când cererea conține o imagine și unul care apelează instrumente când trimite tools.

Chat completions

POST /v1/chat/completions acceptă:

  • messages, cu rolurile system, developer (tratat ca system), user, assistant și tool,
  • tools și tool_choice (auto, none, required sau o funcție anume): instrumentele proprii ale instrumentului dvs. îi revin ca apeluri de instrumente, iar ToRun nu le rulează niciodată,
  • response_format cu json_object. json_schema este acceptat și răspunsul vine în JSON, dar schema propriu-zisă nu este impusă,
  • temperature (de la 0 la 2), top_p (de la 0 la 1), max_completion_tokens sau max_tokens, stop (până la 4 secvențe), seed și reasoning_effort,
  • stream și stream_options.include_usage.

n mai mare de 1, logprobs, top_logprobs, audio și orice ieșire în afară de text sunt refuzate cu 400 unsupported_parameter, nu ignorate.

Imagini

Trimiteți imaginea inline, ca data:image/...;base64,... într-o parte image_url, până la 20 MB pe cerere. O imagine trimisă ca link este refuzată cu 400 image_url_not_supported: ToRun nu o descarcă. Imaginile trec printr-o verificare de siguranță, ca în aplicație.

Streaming

Cu "stream": true, răspunsul sosește ca server-sent events în forma chat.completion.chunk:

  • Primul fragment conține rolul assistant, iar apelurile de instrumente sunt transmise cu index propriu.
  • Cât timp nu există nimic de trimis, la fiecare 15 secunde sosește o linie de comentariu : keepalive; parserele SSE o sar.
  • data: [DONE] încheie un flux reușit.
  • Cu stream_options.include_usage, ultimul fragment are choices gol și conține usage.
  • O eroare apărută după începerea fluxului sosește ca un singur eveniment data: {"error": ...}, fără [DONE].

Un apel fără streaming este oprit după 110 secunde cu 504 timeout. Trimiteți cererile lungi cu "stream": true.

Utilizare

usage conține prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens și completion_tokens_details.reasoning_tokens, plus torun_credits: cât a costat apelul, în Runs.

Folosire în opencode

Configurația opencode de pe pagina Dezvoltatori adaugă ToRun ca furnizor de modele lângă serverul 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" } }
    }
  }
}

Orice alt instrument care folosește API-ul de chat OpenAI funcționează la fel. Fila OpenAI API a paginii arată acest apel:

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"}]}'

Cum se plătesc apelurile

Apelurile API costă aceleași Runs ca aceeași utilizare în aplicație. Le plătesc doar fondurile plătite: mai întâi alocarea planului dvs. plătit, apoi portofelul, dacă ați permis acest lucru pe cheie. Alocarea gratuită nu plătește niciodată apelurile API. Se aplică limitele lunare și zilnice ale cheii, iar răspunsurile trec printr-o verificare de siguranță la fel ca răspunsurile din chat.

Limite

Fiecare cheie poate trimite 60 de cereri pe minut către acest API și poate rula 4 completions în același timp. Peste acestea, API-ul răspunde cu 429 rate_limit_exceeded și antetul Retry-After.

Erori

Fiecare eroare are forma {"error": {"message": ..., "type": ..., "param": ..., "code": ...}}. message este în limba cerută de antetul Accept-Language al cererii.

Stare Cod Semnificație
400 invalid_json, missing_parameter, invalid_parameter, unsupported_parameter Cererea este formulată greșit sau folosește un parametru pe care ToRun nu îl acceptă.
400 image_url_not_supported O imagine a fost trimisă ca link; trimiteți-o inline.
400 content_blocked Verificarea de siguranță a blocat conținutul.
400 upstream_rejected Furnizorul modelului a refuzat cererea; mesajul spune de ce.
401 invalid_api_key Cheia lipsește, este scrisă greșit sau este revocată.
402 insufficient_credits, wallet_spend_not_allowed, spending_cap_reached Contul sau cheia nu poate plăti apelul.
403 insufficient_scope Cheia a fost creată înainte de adăugarea acestui API; creați o cheie nouă.
403 model_not_available Modelul nu este inclus în planul dvs.
403 account_suspended, no_developer_access Contul este suspendat sau nu are acces de dezvoltator.
404 model_not_found ID-ul modelului nu se află printre cele listate de GET /v1/models.
404 not_found Nu există o astfel de cale sub /v1.
429 rate_limit_exceeded Prea multe apeluri; așteptați timpul indicat în Retry-After.
500 internal_error Ceva nu a funcționat în partea ToRun.
502 upstream_error, empty_reply Furnizorul modelului a eșuat sau a trimis un răspuns gol.
503 upstream_error, cap_unreadable, scan_unavailable Un serviciu de care are nevoie apelul nu este disponibil momentan; încercați din nou.
504 timeout Un apel fără streaming a durat mai mult de 110 secunde.

O cerere care nu poate fi plătită primește răspunsul 402, nu 429, ca un client să nu o tot reîncerce.