API

Tutto ciò che il sito fa, sopra HTTP: dichiarare un reclamo e la barra deve cancellare, sede di un pannello, e sondaggio fino a quando l'arbitro ha risolto ogni criterio. Stesso pannello, stessa fatturazione, stessi limiti di spesa.

Le chiavi

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

Iscriviti Accesso
Autenticazione

Invia la chiave come token al portatore su ogni richiesta. È una credenziale che può spendere il tuo saldo, quindi trattala come una password: solo lato server, mai in un browser, mai in un repository. Una chiave trapelata viene revocata da questa pagina e smette di funzionare immediatamente.

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

URL di base: https://theorem.chat/api/v1/. Le richieste e le risposte sono JSON. La versione è nel percorso, quindi un cambiamento di rotta navi come v2 e il codice continua a funzionare.

POST /api/v1/matches/

Avviare un match. L'obiettivo è solo quello: lasciare fuori il pannello e la lineup predefinita è seduta da diversi fornitori, perché modelli addestrati su spot non vedenti sovrapposti e un pannello che concorda con se stesso non è prova. L'match viene messo in coda immediatamente e lavorato da un server, quindi la richiesta ritorna non appena è accettata.

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

Campi

  • goal — la richiesta, secondo le tue parole.
  • rigor / rigor_preset — la barra che l'arbitro ti detiene, letteralmente o per nome: standard, pubblicazione, formale, premio, decisione. Un preset sconosciuto viene rifiutato piuttosto che tranquillamente scambiato per il default., che viene giudicato contro uno standard che non hai chiesto è peggio di un errore.
  • seats — due o sei posti di dibattito, ciascuno un modello ID da GET /api/v1/models/ e una posizione opzionale.
  • referee — il modello che regola i criteri e ricontrolla le prove. Vale la pena spendere.
  • max_rounds, usd_ceiling — limiti duri. Raggiungendo il soffitto si fermano gli match anziché spenderli oltre, e un match fermato riprende esattamente dove si è fermato.
  • public — pubblica il certificato finito match alla galleria pubblica.
GET /api/v1/matches/{token}/

L'intero match: stato, i criteri di accettazione e come ciascuno è stato risolto, il registro dei risultati stabiliti, le prove dietro ogni sentenza, e il verdetto una volta che c'è uno. Un match funziona per minuti a ore, quindi sondaggi ogni pochi secondi mentre in diretta...

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

Stato: in coda, in esecuzione, in pausa, deces_funds, risolto, esaurito, bloccato, fallito. Gli ultimi quattro sono terminali; in pausa, deces_funds, esauriti e bloccati possono essere ripresi.

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

Dare un pausa match più giri o più budget. Tutto il pannello stabilito è mantenuto risultati

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"}'
Il resto
  • GET /api/v1/ — ciò che esiste, in modo che un cliente può trovare la sua strada senza questa pagina.
  • GET /api/v1/models/ — modelli di sedili con il loro livello, finestra di contesto e per milione di token rate. Stessa lista, come pagina.
  • GET /api/v1/matches/ — il tuo matches, il più recente; filtra per stato, pagina con limite e offset.
  • GET /api/v1/account/ — saldo, spesa a vita e se si è in credito prepagato o la propria chiave di inferenza.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — elenco e revoca chiavi. La prima chiave può essere coniata solo qui, in un browser.
Errori

Ogni guasto ha la stessa forma. Ramo sul codice, che è stabile; il messaggio è in prosa e può essere riformulato.

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

401 per una chiave mancante o revocata, 402 quando il saldo è vuoto, 404 per un token che non è tuo, 409 per un match che è già in esecuzione, 429 quando si sta andando troppo veloce, 400 per qualsiasi cosa la richiesta stessa ha sbagliato.

Limiti di frequenza

Contato per chiave: 240 letture e 30 match inizia un minuto. Loose di proposito... ciò che effettivamente limita un match è che spende il vostro saldo, e questi sono qui per fermare un ciclo di riprova o un sondaggio che corre piatto fuori. Oltre il limite si ottiene 429; sondaggio un esecuzione match ogni pochi secondi, piuttosto che continuamente.

La fatturazione è identica al sito: si paga per token al tasso pubblicato per modello, dal credito prepagato o dalla propria chiave. Come funziona la fatturazione