API

Todo lo que el sitio hace, sobre HTTP: indicar una reclamación y la barra que debe limpiar, asiento un panel, y encuesta hasta que el árbitro ha establecido cada criterio. Mismo panel, la misma facturación, los mismos límites de gastos — ningún navegador.

Tus llaves

Las claves se crean desde su cuenta. Inicie sesión o cree una — las nuevas cuentas obtienen crédito inicial, que es suficiente para un match real.

Registrarse Inicio de sesión
Autenticación

Envía la clave como un token portador en cada solicitud. Es una credencial que puede gastar su saldo, así que trátela como una contraseña: solo lado del servidor, nunca en un navegador, nunca en un repositorio. Una clave filtrada se revoca de esta página y deja de funcionar inmediatamente.

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

URL base: https://theorem.chat/api/v1/. Las peticiones y respuestas son JSON. La versión está en la ruta, por lo que un cambio de ruptura naves como v2 y su código sigue funcionando.

POST /api/v1/matches/

Comience un match. Sólo se requiere el objetivo: dejar el panel fuera y una alineación predeterminada está sentada de diferentes proveedores, porque los modelos formados en la superposición de datos comparten puntos ciegos y un panel que está de acuerdo con sí mismo no es evidencia. El match es en cola inmediatamente y trabajado por un servidor, por lo que la solicitud vuelve tan pronto como se acepta.

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

Campos

  • goal — la reclamación, en sus propias palabras.
  • rigor / rigor_preset — la barra que el árbitro le sostiene, literal o por nombre: estándar, publicación, formal, premio, decisión. Un preset desconocido se rechaza en lugar de cambiar silenciosamente por el defecto — ser juzgado contra un estándar que no pidió es peor que un error.
  • seats — dos a seis asientos de debate, cada uno un modelo de identificación de GET /api/v1/modelos/ y una postura opcional.
  • referee — el modelo que rige los criterios y vuelve a comprobar las pruebas.
  • max_rounds, usd_ceiling — Alcanzar el techo detiene el match en lugar de pasarlo, y un match pausado se reanuda exactamente donde se detuvo.
  • public — publicar el match terminado a la galería pública.
GET /api/v1/matches/{token}/

El match completo: el estado, los criterios de aceptación y cómo se estableció cada uno, el libro mayor de los resultados establecidos, las pruebas detrás de cada fallo, y el veredicto una vez que hay uno. Un match funciona por minutos a horas, por lo que encuestar cada pocos segundos mientras está en vivo — la respuesta le dice cuándo parar.

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

Estadoes: cola, ejecución, pausa, needs_funds, resuelto, agotado, atascado, fallado. Los últimos cuatro son terminal; pausado, needs_funds, agotado y atascado se puede reanudar.

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

Dar una parada match rondas más o más presupuesto. Todo el panel establecido se mantiene — los resultados se escriben en un libro mayor una vez y nunca se re-derivan, y los callejones sin salida registrados lo detienen caminando de nuevo en un enfoque que ya falló.

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"}'
El resto
  • GET /api/v1/ — lo que existe, para que un cliente pueda encontrar su camino sin esta página.
  • GET /api/v1/models/ — modelos con su nivel, ventana de contexto y tasas por millón de token. La misma lista, como una página.
  • GET /api/v1/matches/ — su matches, el más nuevo primero; filtro por estado, página con límite y offset.
  • GET /api/v1/account/ — equilibrio, gasto de por vida y si usted está en crédito prepago o su propia inferencia clave.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — lista y revocar las claves. La primera clave sólo se puede acuñar aquí, en un navegador.
Errores

Cada fallo tiene la misma forma. Rama en código, que es estable; mensaje es prosa y puede ser reescrito.

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

401 para una llave que falta o revocada, 402 cuando el saldo está vacío, 404 para un token que no es tuyo, 409 para un match que ya está en funcionamiento, 429 cuando se va demasiado rápido, 400 para cualquier cosa que la petición en sí se equivocó.

Límites de las tasas

Contado por clave: 240 lecturas y 30 match comienza por minuto. Desconectarse a propósito — lo que realmente limita un match es que gasta su saldo, y estos están aquí para detener un bucle de reintento o un poller corriendo a fondo. Sobre el límite se obtiene 429; encuestar un match en ejecución cada pocos segundos en lugar de continuar.

La facturación es idéntica al sitio: usted paga por token a la tasa publicada por modelo, desde crédito prepago o su propia clave. Cómo funciona la facturación