Vos clés
Les clés sont créées à partir de votre compte. Connectez-vous ou créez-en un — les nouveaux comptes obtiennent un crédit de départ, ce qui est suffisant pour un vrai match.
Inscription
Connexion
Authentification
Envoyer la clé comme un jeton porteur sur chaque requête. C'est un titre de créance qui peut dépenser votre solde, alors traitez-la comme un mot de passe: côté serveur seulement, jamais dans un navigateur, jamais dans un dépôt. Une clé divulguée est révoquée de cette page et cesse de fonctionner immédiatement.
curl https://theorem.chat/api/v1/account/ \
-H "Authorization: Bearer thm_live_xxxxxxxx.xxxxxxxxxxxxxxxx"
URL de base: https://theorem.chat/api/v1/. Les demandes et réponses sont JSON. La version est dans le chemin, donc un changement de rupture est livré comme v2 et votre code continue de fonctionner.
POST /api/v1/matches/
Démarrer un match. Seul le but est requis : laisser le panneau dehors et une ligne par défaut est assise de différents fournisseurs, car les modèles formés sur le chevauchement des données partagent des points aveugles et un panneau qui est d'accord avec lui-même n'est pas une preuve. Le match est en file d'attente immédiatement et travaillé par un serveur, de sorte que la requête retourne dès qu'il est accepté.
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
}'
Champs
GET /api/v1/matches/{token}/
Tout le match: statut, critères d'acceptation et comment chacun a été réglé, le grand livre des résultats établis, les preuves derrière chaque décision, et le verdict une fois qu'il y en a un. Un match court pendant des minutes à des heures, donc sondage toutes les quelques secondes pendant la vie — la réponse vous indique quand arrêter.
{
"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": "…"
}
Statuts : en file d'attente, en cours d'exécution, en pause, needs_funds, résolu, épuisé, bloqué, échoué. Les quatre derniers sont terminal; en pause, needs_funds, épuisé et bloqué peut être repris.
POST /api/v1/matches/{token}/resume/
Donnez un arrêt match tours de plus ou plus de budget. Tout ce que le panel établi est conservé — les résultats sont écrits à un grand livre une fois et jamais re-découvert, et enregistrés des extrémités mortes l'arrêtent en marchant à nouveau dans une approche qui a déjà échoué.
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"}'
Erreurs
Chaque échec a la même forme. Branche sur le code, qui est stable; message est prose et peut être reformulé.
{"error": {"code": "insufficient_balance",
"message": "Add credit or connect your own inference key…"}}
401 pour une clé manquante ou révoquée, 402 lorsque le solde est vide, 404 pour un jeton qui n'est pas le vôtre, 409 pour un match qui est déjà en cours, 429 lorsque vous allez trop vite, 400 pour tout ce que la demande elle-même a mal tourné.
Limites de taux
Compte par clé : 240 lis et 30 match commence une minute. Déplacez-vous volontairement — ce qui limite un match c'est qu'il dépense votre solde, et ceux-ci sont ici pour arrêter une boucle de réessayer ou un pollinisateur qui court à plat.
La facturation est identique au site : vous payez par jeton au taux publié par modèle, à partir de crédit prépayé ou de votre propre clé.
Comment fonctionne la facturation