API

Lahat ng bagay ang site ay ginagawa, sa HTTP: estado ng isang claim at ang bar ito ay dapat na malinaw, upuan ng isang panel, at poll hanggang sa ang referee ay settled bawat pamantayan. Parehong panel, parehong billing, parehong limitasyon paggastos — walang browser.

Ang iyong mga susi

Keys ay nilikha mula sa iyong account. Mag-sign in, o lumikha ng isa — bagong account makakuha ng credit simula, na kung saan ay sapat para sa isang tunay na match.

Mag-sign Up Mag-login
Pag-authenticate

Ipadala ang key bilang isang bearer token sa bawat kahilingan. Ito ay isang kredensyal na maaaring gumastos ng iyong balanse, kaya tratuhin ito tulad ng isang password: server-side lamang, hindi kailanman sa isang browser, hindi kailanman sa isang repository. Ang isang leaked key ay revoked mula sa pahinang ito at tumitigil sa trabaho kaagad.

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

Base URL: https://theorem.chat/api/v1/. Mga kahilingan at mga tugon ay JSON. Ang bersyon ay sa path, kaya ang isang breaking pagbabago ships bilang v2 at ang iyong code ay patuloy na gumagana.

POST /api/v1/matches/

Simulan ang isang match. Lamang ang layunin ay kinakailangan: iwanan ang panel out at isang default na lineup ay nakaupo mula sa iba’t ibang mga vendor, dahil modelo na sinanay sa nakasalansan data ibahagi bulag spot at isang panel na sumasang-ayon sa kanyang sarili ay hindi katibayan. Ang match ay naka-queue kaagad at nagtrabaho sa pamamagitan ng isang server, kaya ang kahilingan ay bumalik sa lalong madaling ito ay tinanggap.

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

Patlang

  • goal — ang claim, sa iyong sariling mga salita. Kinakailangan.
  • rigor / rigor_preset — Ang bar ang referee hold ka sa, literal o sa pamamagitan ng pangalan: standard, publikasyon, pormal, premyo, desisyon. Ang isang hindi kilalang preset ay tinanggihan sa halip na tahimik swapped para sa default — na hinahatulan laban sa isang standard na hindi mo hilingin para sa ay mas masahol pa kaysa sa isang error.
  • seats — Ang mga ito ay maaaring maging isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo ng isang modelo.
  • referee — Ang modelo na patakaran sa mga pamantayan at muling-check ang katibayan. nagkakahalaga ng paggastos sa.
  • max_rounds, usd_ceiling — Ang pagabot sa ceiling pauses ang match sa halip na paggastos nakalipas ito, at isang paused match resumes eksaktong kung saan ito tumigil.
  • public — I-publish ang natapos match sa pampublikong gallery.
GET /api/v1/matches/{token}/

Ang buong match: katayuan, ang mga pamantayan ng pagtanggap at kung paano ang bawat isa ay settled, ang ledger ng itinatag na mga resulta, ang katibayan sa likod ng bawat ruling, at ang pasiya kapag may isa. Ang isang match tumatakbo para sa mga minuto sa oras, kaya poll bawat ilang segundo habang live - ang tugon ay nagsasabi sa iyo kung kailan upang ihinto.

{
  "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": "…"
}

Statuses: naka-queue, tumatakbo, paused, needs_funds, malutas, exhausted, naka-stuck, nabigo. Ang huling apat ay terminal; paused, needs_funds, exhausted at naka-stuck ay maaaring bumalik.

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

Magbigay ng isang tumigil match higit pang mga round o higit pang badyet. Lahat ng bagay na itinatag ng panel ay pinatili - mga resulta ay nakasulat sa isang ledger ng isang beses at hindi kailanman muling nagmula, at naitala dead ends ihinto ito naglalakad pabalik sa isang diskarte na nabigo.

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"}'
Ang natitirang bahagi
  • GET /api/v1/ — kung ano ang umiiral, kaya ang isang client ay maaaring mahanap ang paraan nito nang walang pahinang ito.
  • GET /api/v1/models/ — Ang mga ito ay mga modelong seatable na may kanilang mga antas, konteksto window at per-milyong-token rate. Parehong listahan, bilang isang pahina.
  • GET /api/v1/matches/ — ang iyong matches, pinakabagong unang; filter sa pamamagitan ng katayuan, pahina na may limitasyon at offset.
  • GET /api/v1/account/ — balanse, buhay na gastusin at kung ikaw ay sa prepaid credit o ang iyong sariling key sa pagbubuod.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — Ang unang key ay maaaring lamang minted dito, sa isang browser.
Mga pagkakamali

Branch sa code, na kung saan ay matatag; mensahe ay prosa at maaaring reworded.

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

401 para sa isang nawawalang o revoked key, 402 kapag ang balanse ay walang laman, 404 para sa isang token na hindi ang iyong, 409 para sa isang match na ay patakbo na, 429 kapag ikaw ay pagpunta masyadong mabilis, 400 para sa anumang bagay ang kahilingan mismo got mali.

Mga limitasyon sa rate

Binibilang bawat key: 240 basahin at 30 match nagsisimula sa isang minuto. Loose sa layunin — kung ano ang aktwal na limitasyon ng isang match ay na ito ay nagastos ang iyong balanse, at ang mga ito ay dito upang ihinto ang isang muling subukan loop o isang poller tumatakbo flat out. Sa paglipas ng limitasyon na makuha mo 429; poll ng isang tumatakbo match bawat ilang segundo sa halip na patuloy.

Ang pagbili ay kapareho ng sa site: nagbabayad ka sa bawat token sa nai-publish na bawat modelo rate, mula sa prepaid credit o ang iyong sariling key. Paano gumagana ang billing