API

Zvese zvachose nzvimbo inoita, pamusoro HTTP: kuratidza chikumbiro uye bar inofanira kubvisa, kugara panel, uye poll kusvika mutongi akazvipira chero zvinangwa. Same panel, same billing, same kubhadharisa zvirambidzo — hapana browser.

Mabhureki ako

Keys are created from your account. Sign in, or create one — new accounts get starting credit, which is enough for a real match.

Kutanga Kupinda
Ku_zivana

Kutumira chiratidzo sechiratidzo chekutakura pazuva rega rega. Icho chiratidzo chinodarika mari yako, saka shandisai sepassword: pane server-side chete, kwete mubrowser, kwete murepository. Chiratidzo chakabuda chinodzoserwa kubva pane ino peji uye chinomira kushanda panguva imwe chete.

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

Base URL: https://theorem.chat/api/v1/. Mibvunzo uye mazano ndiJSON. Iyo vhezheni iri munzira, saka kuparadza kuchinja ships se v2 uye yako kodhi inogara ichishanda.

POST /api/v1/matches/

Kutanga match. Only chinangwa chinodiwa: kubvisa panel uye default lineup iri kugara kubva akasiyana vatengesi, nekuti mamodheru akadzidziswa pazvikanganiso data kubatana blind spots uye panel kuti anobvumirana neimwe chete haasi chokwadi. The match iri kumirira nguva dzose uye anoshanda ne server, saka dambudziko rinodzokera pashure panguva yacho yakavakirwa.

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

Mamwe mafomu

  • goal — mashoko ekuti chii chinonzi chikumbiro, mumashoko ako.
  • rigor / rigor_preset — bar referendamu anokuchengeta iwe, verbatim kana nezita: standard, kuburitswa, formal, mubairo, chisarudzo. A unknown preset is refused rather than quietly swapped for the default — being judged against a standard you did not ask for is worse than a error.
  • seats — maviri kusvika makumi maviri kuongorora zvigaro, mumwe neumwe a model id kubva GET /api/v1/models/ uye zvakasiyana pfungwa.
  • referee — iyo model iyo inotonga pazvinangwa uye inoongororazve chokwadi. Zvinokosha kubhadharisa.
  • max_rounds, usd_ceiling — Kusvika chivharo inoramba match sezviri kupfuura kubhadharisa pamusoro kwayo, uye a paused match anoenderera mberi chaizvo apo yakanga yakati wandei.
  • public — Kuburitsa yakati wandei match kugara kwevagari.
GET /api/v1/matches/{token}/

The whole match: status, the acceptance criteria and how each was settled, the ledger of established results, the evidence behind every ruling, and the verdict once there is one. A match runs for minutes to hours, so poll every few seconds while live — the response tells you when to stop.

{
  "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: queued, running, paused, needs_funds, solved, exhausted, stuck, failed. The last four are terminal; paused, needs_funds, exhausted and stuck can be resumed.

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

Give a stopped match more rounds or more budget. Everything the panel established is kept — results are written to a ledger once and never re-derived, and recorded dead ends stop it walking back into an approach that already failed.

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"}'
Chimwe chinhu
  • GET /api/v1/ — chii chiripo, saka mutengi anogona kuwana nzira yake pasina iyi peji.
  • GET /api/v1/models/ — seatable mamodheru nechinzvimbo chavo, context window uye per-million-token mitengo. Same list, as a page.
  • GET /api/v1/matches/ — yako matches, nyowani yekutanga; filter by status, page with limit and offset.
  • GET /api/v1/account/ — balance, hupenyu hwekubhadhara uye kana iwe uri paPrepaid Credit kana yako yese inference key.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — Kuisa uye kubvisa makeys. Iyo yekutanga key inogona kugadzirwa chete pano, mubrowser.
Maitiro

Kukundikana kwese kunoita sekwakafanana. Branch on code, which is stable; message is prose and may be reworded.

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

401 yechiratidzo chisingaperi kana chakavharwa, 402 kana mari yacho yasara isina chinhu, 404 yechiratidzo chisina chinhu, 409 yechiratidzo chine match chakati chatanga kushanda, 429 kana uchienda nekukurumidza, 400 yechiratidzo chinoda kuti chikumbiro chiite zvakaipa.

Kuwedzera

Kunyorwa nechiratidzo: 240 zvinoverenga uye 30 match anotanga muminitsi. Loose pa chinangwa — chii chaizvo zvinorambidza match ndechokuti inobhadhara mari yako, uye izvi zviri pano kuti arege kuedza loop kana poller kutenderera flat out. pamusoro pechinangwa iwe unowana 429; poll a kutenderera match zvose mazuva mashoma kupfuura zvakasimba.

Billing imwecheteyo newebsite: unobhadhara nechiratidzo pazvinoratidzwa nechigadzirwa chitsva, kubva kubhadharwa kwemari kana yako yega kiyi. Maitiro ekushandisa billing