API
Wszystko co robi strona, w porównaniu z HTTP: podaje roszczenie i bar musi oczyścić, siedzieć panel, i ankiet dopóki sąd nie ustalić każde kryterium. Ten sam panel, ten sam rachunk, te same limity wydatków – brak przeglądarki.
Twoje kluczyki
Klucze są tworzone z konta. Zaloguj się lub utwórz – nowe konta otrzymują kredyt startowy, co wystarczy na prawdziwą match.
Podpisz
Zalogowanie
Uwierzytelnienie
Wyślij klucz jako tokena na każde żądanie. Jest to kredencial, który może wydać saldo, więc traktuj go jak hasło: tylko serwer-bok, nigdy w przeglądarce, nigdy w repozytorium. Wyciekły klucz zostaje odwołany z tej strony i przestanie działać natychmiast.
curl https://theorem.chat/api/v1/account/ \
-H "Authorization: Bearer thm_live_xxxxxxxx.xxxxxxxxxxxxxxxx"
Baza URL: https://theorem.chat/api/v1/. Żądania i odpowiedzi są JSON. Wersja jest na drodze, więc łamanie statków zmianowych jako v2 i kod ciągle działa.
POST /api/v1/matches/
Rozpocznij match. Wymagany jest tylko cel: niech panel wyjdzie z danego miejsca i domyślny zestaw siedzi od różnych dostawców, ponieważ modele wyszkolone na nakładających się miejscach udostępniania danych niezauważone są i panel, który sam się zgadza. match jest w kolejce natychmiast i pracował przez serwer, więc wniosek zwraca się, jak tylko zostanie przyjęty.
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
}'
Pola
GET /api/v1/matches/{token}/
Całe match: status, kryteria akceptacji i sposób ustalenia każdego, księga ustalonych wyników, dowody za każdym orzeczeniem, a werdykt, gdy jest jeden. match biegnie przez minuty do godzin, więc ankietowanie co kilka sekund w czasie życia – odpowiedź mówi, kiedy zatrzymać.
{
"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": "…"
}
Statusy: w kolejce, w kolejce, wstrzymane, fundacje potrzebne, rozwiązane, wyczerpane, utknięte, nie udało się. Ostatnie cztery są terminalem; wstrzymane, potrzebne_ fundusze, wyczerpane i utknięte mogą być wznowione.
POST /api/v1/matches/{token}/resume/
Podaj zatrzymane match więcej rund lub więcej budżetu. Wszystko, co utworzony panel jest przechowywany – wyniki są zapisywane do księgi raz i nigdy nie ponownie powołowane, i zapisane ślepe zaułki zatrzymują go w drodze do podejścia, które już nie udało się.
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"}'
Błądy
Każda awaria ma taki sam kształt. Oddział na kod, który jest stabilny; wiadomość jest proza i może być przeformułowany.
{"error": {"code": "insufficient_balance",
"message": "Add credit or connect your own inference key…"}}
401 dla brakującego lub cofniętego klucza, 402 kiedy bilans jest pusty, 404 dla tokenu, który nie jest twój, 409 dla match, który już działa, 429 kiedy idziesz za szybko, 400 dla czegokolwiek sam wniosek źle.
Limity stawek
Policzane na klucz: 240 reads i 30 match starts na minutę. Rozluźnij się celowo — co rzeczywiście ogranicza match to, że wydaje saldo, a te są tutaj, aby zatrzymać pętlę powtórzenia lub polera wybiega. Nad granicą dostaniesz 429; ankietować match co kilka sekund zamiast ciągle.
Rachunk jest identyczny z stroną: płacisz za jeden token w opublikowanej stawce za model, z kredytu przedpłatnego lub własnego klucza.
Jak działa rachunki