Årsvis Betala årsvis och få 2 månader gratis på alla betalplaner. Se planerna
Logga in Kom igång gratis

OpenAI-kompatibelt API

Senast uppdaterad 11 nov. 2026

Vad det är

Med det OpenAI-kompatibla API:et kan ett verktyg som stöder OpenAI:s format för chat completions använda ToRuns chattmodeller, betalade från ditt ToRun-konto. En kodningsagent som opencode kan använda ToRun som modelleverantör vid sidan av ToRuns MCP-verktyg.

Adress och inloggning

Bas-URL https://mcp.torun.ai/v1
Inloggning Authorization: Bearer <your developer key>

Använd samma utvecklarnyckel som för MCP-servern: se Utvecklarnycklar. En nyckel som skapades innan det OpenAI-kompatibla API:et lades till får 403 insufficient_scope. En nyckels behörigheter ändras aldrig, så skapa en ny nyckel.

API:et har två ändpunkter, GET /v1/models och POST /v1/chat/completions. Varje annan sökväg under /v1 svarar 404 not_found.

Modeller

GET /v1/models listar först torun/auto och sedan varje textmodell som din plan kan använda, efter modell-id. För varje modell anges:

  • hur mycket text den kan läsa (context_length) och hur långt svar den kan skriva (max_completion_tokens),
  • om den kan anropa verktyg (supports_tools) och läsa bilder (supports_vision),
  • dess pris i Runs per miljon tokens (pricing: input och output).

torun/auto låter ToRun välja en modell för varje förfrågan: en som läser bilder när förfrågan innehåller en bild, och en som anropar verktyg när den skickar tools.

Chat completions

POST /v1/chat/completions tar emot:

  • messages, med rollerna system, developer (behandlas som system), user, assistant och tool,
  • tools och tool_choice (auto, none, required eller en namngiven funktion): ditt verktygs egna verktyg kommer tillbaka till det som verktygsanrop, och ToRun kör dem aldrig,
  • response_format med json_object. json_schema accepteras och svaret kommer som JSON, men själva schemat tillämpas inte,
  • temperature (0 till 2), top_p (0 till 1), max_completion_tokens eller max_tokens, stop (upp till 4 strängar), seed och reasoning_effort,
  • stream och stream_options.include_usage.

n större än 1, logprobs, top_logprobs, ljud och all annan utdata än text nekas med 400 unsupported_parameter i stället för att ignoreras.

Bilder

Skicka en bild inbäddad som data:image/...;base64,... i en image_url-del, upp till 20 MB per förfrågan. En bild som skickas som länk nekas med 400 image_url_not_supported: ToRun hämtar den inte. Bilder går igenom säkerhetskontrollen, som i appen.

Strömning

Med "stream": true kommer svaret som server-sent events i formatet chat.completion.chunk:

  • Den första delen bär rollen assistant, och verktygsanrop strömmas med sitt eget index.
  • När det inte finns något att skicka kommer en kommentarsrad : keepalive var 15:e sekund; SSE-tolkare hoppar över den.
  • data: [DONE] avslutar en lyckad ström.
  • Med stream_options.include_usage har den sista delen tom choices och bär usage.
  • Ett fel efter att strömmen har börjat kommer som en enda händelse data: {"error": ...}, utan [DONE].

Ett anrop utan strömning stoppas efter 110 sekunder med 504 timeout. Skicka långa förfrågningar med "stream": true.

Användning

usage innehåller prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens och completion_tokens_details.reasoning_tokens, samt torun_credits: vad anropet kostade i Runs.

Använda det i opencode

Opencode-konfigurationen på sidan Utvecklare lägger till ToRun som modelleverantör bredvid MCP-servern:

{
  "$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" } }
    }
  }
}

Vilket annat verktyg som helst som stöder OpenAI:s chatt-API fungerar på samma sätt. Fliken OpenAI API på sidan visar det här anropet:

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

Hur anrop betalas

API-anrop kostar lika många Runs som samma användning i appen. Bara betalda medel betalar för dem: först din betalda plans kvot och sedan din plånbok, om du har tillåtit det för nyckeln. Den kostnadsfria kvoten betalar aldrig för API-anrop. Nyckelns månads- och dagsgräns gäller, och svaren går igenom säkerhetskontrollen precis som chattsvar.

Gränser

Varje nyckel kan skicka 60 förfrågningar per minut till det här API:et och köra 4 completions samtidigt. Över det svarar API:et 429 rate_limit_exceeded med ett Retry-After-huvud.

Fel

Varje fel har formen {"error": {"message": ..., "type": ..., "param": ..., "code": ...}}. message är på det språk som förfrågans Accept-Language-huvud ber om.

Status Kod Betydelse
400 invalid_json, missing_parameter, invalid_parameter, unsupported_parameter Förfrågan är felaktig eller använder en parameter som ToRun inte stöder.
400 image_url_not_supported En bild skickades som länk; skicka den inbäddad.
400 content_blocked Säkerhetskontrollen stoppade innehållet.
400 upstream_rejected Modelleverantören nekade förfrågan; meddelandet anger orsaken.
401 invalid_api_key Nyckeln saknas, är felskriven eller har återkallats.
402 insufficient_credits, wallet_spend_not_allowed, spending_cap_reached Kontot eller nyckeln kan inte betala för anropet.
403 insufficient_scope Nyckeln skapades innan det här API:et lades till; skapa en ny nyckel.
403 model_not_available Modellen ingår inte i din plan.
403 account_suspended, no_developer_access Kontot är avstängt eller har ingen utvecklaråtkomst.
404 model_not_found Modell-id:t finns inte i GET /v1/models.
404 not_found Det finns ingen sådan sökväg under /v1.
429 rate_limit_exceeded För många anrop; vänta den tid som anges i Retry-After.
500 internal_error Något gick fel hos ToRun.
502 upstream_error, empty_reply Modelleverantören misslyckades eller skickade ett tomt svar.
503 upstream_error, cap_unreadable, scan_unavailable En tjänst som anropet behöver är tillfälligt otillgänglig; försök igen.
504 timeout Ett anrop utan strömning tog längre än 110 sekunder.

En förfrågan som inte kan betalas får 402 och inte 429, så att en klient inte försöker igen om och om igen.