API

Allt webbplatsen gör, över HTTP: ange ett anspråk och baren det måste rensa, sätta en panel, och opinionsundersökning tills domaren har bestämt varje kriterium. Samma panel, samma fakturering, samma utgiftsgränser - ingen webbläsare.

Dina nycklar

Nycklarna skapas från ditt konto. Logga in eller skapa ett – nya konton får startkredit, vilket räcker för en riktig match.

Registrera dig Inloggning
Behörighetskontroll

Skicka nyckeln som en bärare token på varje begäran. Det är en förtroende som kan spendera din balans, så behandla den som ett lösenord: server-side endast, aldrig i en webbläsare, aldrig i ett arkiv. En läckande nyckel återkallas från denna sida och slutar fungera omedelbart.

curl https://theorem.chat/api/v1/account/ \
  -H "Authorization: Bearer thm_live_xxxxxxxx.xxxxxxxxxxxxxxxx"

Baswebbadress: https://theorem.chat/api/v1/. Begäran och svar är JSON. Versionen finns i sökvägen, så en brytande förändring fartyg som v2 och din kod fortsätter att fungera.

POST /api/v1/matches/

Starta en match. Endast målet krävs: lämna panelen ute och en standard lineup sitter från olika leverantörer, eftersom modeller som är utbildade på överlappande data dela blinda fläckar och en panel som håller med sig själv är inte bevis. match köas omedelbart och arbetar av en server, så begäran återvänder så snart den accepteras.

curl -X POST https://theorem.chat/api/v1/matches/ \
  -H "Authorization: Bearer $THEOREM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "goal": "Every prime p > 3 satisfies p^2 = 1 (mod 24).",
    "rigor_preset": "formal",
    "seats": [
      {"model": "anthropic/claude-opus-4.5"},
      {"model": "openai/gpt-5", "stance": "Attack the statement."}
    ],
    "max_rounds": 8,
    "usd_ceiling": "2.00",
    "public": false
  }'

Fält

  • goal — the claim, in your own words. Required.
  • rigor / rigor_preset — Den bar domaren håller dig till, ordagrant eller vid namn: standard, publicering, formell, pris, beslut. En okänd förinställning vägras snarare än tyst bytas mot standard - att bedömas mot en standard du inte bett om är värre än ett fel.
  • seats — två till sex debattplatser, var och en ett ID-kort från GET /api/v1/modeller/ och ett valfritt ställningstagande.
  • referee — Modellen som styr kriterierna och som åter kontrollerar bevisen.
  • max_rounds, usd_ceiling — Att nå taket pausar match istället för att spendera över det, och en paus match fortsätter exakt där det stannade.
  • public — publicera de färdiga match till det offentliga galleriet.
GET /api/v1/matches/{token}/

Hela match: status, acceptanskriterier och hur var och en av dem var löst, liggare av fastställda resultat, bevis bakom varje dom, och domen när det finns en. En match körs i minuter till timmar, så opinionsundersökning varannan sekund medan du lever — svaret talar om när du ska sluta.

{
  "token": "k3m9x…",
  "status": "solved",
  "round": 5,
  "progress": 100,
  "usd_spent": "0.734120",
  "usd_ceiling": "2.000000",
  "criteria": [
    {"text": "p^2 - 1 is divisible by 8", "status": "met", "settled_round": 2},
    {"text": "p^2 - 1 is divisible by 3", "status": "met", "settled_round": 3}
  ],
  "evidence": [
    {"kind": "computation", "code": "…", "output": "…", "verified": true}
  ],
  "verdict": "…"
}

Status: köade, kör, pausade, needs_funds, löst, utmattad, fast, misslyckades. De sista fyra är terminal, pausade, needs_funds, utmattade och fast kan återupptas.

POST /api/v1/matches/{token}/resume/

Ge en stoppad match fler rundor eller mer budget. Allt som panelen etablerats hålls – resultat skrivs till en liggare en gång och aldrig åter härleds, och inspelade återvändsgränder stoppa det gå tillbaka in i en strategi som redan misslyckats.

curl -X POST https://theorem.chat/api/v1/matches/$TOKEN/resume/ \
  -H "Authorization: Bearer $THEOREM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"more_rounds": 4, "more_usd": "2.00"}'
Resten
  • GET /api/v1/ — vad som finns, så att en klient kan hitta sin väg utan denna sida.
  • GET /api/v1/models/ — Sätesbara modeller med nivå, sammanhangsfönster och priser per miljon-kick. Samma lista, som en sida.
  • GET /api/v1/matches/ — din matches, nyaste först; filtrera efter status, sida med gräns och offset.
  • GET /api/v1/account/ — Saldo, livstidsutbetalning och om du har förbetalt kredit eller din egen inferencenyckel.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — lista och återkalla nycklar. Den första nyckeln kan bara präglas här, i en webbläsare.
Fel

Varje fel har samma form. Avdelning på kod, som är stabil; meddelandet är prosa och kan omformuleras.

{"error": {"code": "insufficient_balance",
           "message": "Add credit or connect your own inference key…"}}

401 för en saknad eller indragen nyckel, 402 när saldot är tomt, 404 för en token som inte är din, 409 för en match som redan kör, 429 när du kör för snabbt, 400 för något som själva begäran fick fel.

Räntegränser

Räknas per nyckel: 240 avläsningar och 30 match startar i minuten. Lös med flit – det som faktiskt begränsar en match är att det spenderar din balans, och dessa är här för att stoppa en regress eller en poller kör platt ut. Över gränsen får du 429; opinionsundersökning en kör match varannan sekund snarare än kontinuerligt.

Fakturering är identisk med webbplatsen: du betalar per token till den publicerade per-modell ränta, från förbetald kredit eller din egen nyckel. Hur fakturering fungerar