API

Alles wat de site doet, over HTTP: een claim en de bar moet worden duidelijk, plaats een paneel, en poll totdat de scheidsrechter elk criterium heeft geregeld. Zelfde paneel, dezelfde facturering, dezelfde uitgavenlimieten. Geen browser.

Uw sleutels

Sleutels worden gemaakt van uw account. Aanmelden, of maak een.. nieuwe accounts krijgen beginnende krediet, dat is genoeg voor een echte match.

Aanmelden Aanmelden
Authenticatie

Stuur de sleutel als token aan token aan token op elk verzoek. Het is een credential die je saldo kan besteden, dus behandel het als een wachtwoord: alleen server-side, nooit in een browser, nooit in een repository. Een gelekte sleutel wordt ingetrokken van deze pagina en stopt onmiddellijk met werken.

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

Basis URL: https://theorem.chat/api/v1/. Verzoeken en antwoorden zijn JSON. De versie is in het pad, dus een brekende verandering schepen als v2 en uw code blijft werken.

POST /api/v1/matches/

Start een match. Alleen het doel is vereist: laat het paneel uit en een standaard line-up zit van verschillende leveranciers, omdat modellen die zijn opgeleid op overlappende gegevens delen blinde vlekken en een panel dat met zichzelf overeenkomt geen bewijs is. De match wordt direct in de wachtrij geplaatst en gewerkt door een server, zodat het verzoek terugkeert zodra het wordt geaccepteerd.

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

Velden

  • goal — de claim, in uw eigen woorden.
  • rigor / rigor_preset — de bar die de scheidsrechter houdt u aan, letterlijk of op naam: standaard, publicatie, formele, prijs, beslissing. Een onbekende preset wordt geweigerd in plaats van rustig geruild voor de standaard.. worden beoordeeld tegen een standaard die u niet hebt gevraagd is erger dan een fout.
  • seats — twee tot zes vergaderplaatsen, elk een model id van GET /api/v1/modellen/ en een optionele houding.
  • referee — Het model dat de criteria bepaalt en het bewijs opnieuw controleert.
  • max_rounds, usd_ceiling — Het bereiken van het plafond pauzeert de match in plaats van het te besteden, en een gepauzeerde match hervat precies waar het stopte.
  • public — de eindversie van match te publiceren aan de publieke tribune.
GET /api/v1/matches/{token}/

De hele match: status, de acceptatiecriteria en hoe elk werd geregeld, het grootboek van gevestigde resultaten, het bewijs achter elke uitspraak, en het vonnis eenmaal er een. Een match loopt voor minuten tot uren, dus peiling om de paar seconden terwijl live.. de reactie vertelt je wanneer te stoppen.

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

Statussen: in de wachtrij, uitgevoerd, gepauzeerd, needs_funds, opgelost, uitgeput, vastgezet, mislukt. De laatste vier zijn terminal; gepauzeerd, needs_funds, uitgeput en vastgezet kunnen worden hervat.

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

Geef een gestopt match meer rondes of meer budget. Alles wat het paneel gevestigd wordt gehouden.. resultaten zijn geschreven aan een grootboek een keer en nooit opnieuw afgeleid, en opgenomen dode einden stoppen het lopen terug in een aanpak die al mislukt.

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"}'
De rest
  • GET /api/v1/ — wat er bestaat, zodat een klant zijn weg kan vinden zonder deze pagina.
  • GET /api/v1/models/ — stoelmodellen met hun niveau, contextvenster en per miljoen-token tarieven. Dezelfde lijst, als een pagina.
  • GET /api/v1/matches/ — uw matches, nieuwste eerste; filter op status, pagina met limiet en offset.
  • GET /api/v1/account/ — evenwicht, levenslange uitgaven en of u nu op prepaid krediet of uw eigen gevolgtrekkingssleutel.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — lijst en herroep sleutels. De eerste sleutel kan alleen hier worden geslagen, in een browser.
Fouten

Elke fout heeft dezelfde vorm. Branch op code, die stabiel is; bericht is proza en kan worden herschreven.

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

401 voor een ontbrekende of ingetrokken sleutel, 402 wanneer het saldo leeg is, 404 voor een token dat niet van jou is, 409 voor een match die al loopt, 429 als je te snel gaat, 400 voor alles wat het verzoek zelf verkeerd had.

Tarieflimieten

Telde per sleutel: 240 leest en 30 match begint per minuut. Los op doel. Wat eigenlijk beperkt een match is dat het uw saldo, en deze zijn hier om een retry loop of een poller lopen uit te sluiten. Over de limiet krijg je 429; poll een lopende match om de paar seconden in plaats van continu.

De facturering is identiek aan de site: u betaalt per token tegen het gepubliceerde tarief per model, van prepaid krediet of uw eigen sleutel. Hoe facturering werkt