API

Tudo o que o site faz, sobre HTTP: indicar uma reclamação e a barra que ele deve limpar, assinar um painel e pesquisa até que o árbitro tenha resolvido todos os critérios.

As suas chaves

As chaves são criadas a partir da sua conta. Entre ou crie uma — novas contas recebem crédito inicial, o que é suficiente para um real match.

Inscrever-se Login
Autenticação

Enviar a chave como um token de portador em cada pedido. É um credencial que pode gastar o seu saldo, então trate-o como uma senha: o lado do servidor apenas, nunca em um navegador, nunca em um repositório. Uma chave vazada é revogada desta página e pára de funcionar imediatamente.

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

URL da base: https://theorem.chat/api/v1/. Pedidos e respostas são JSON. A versão está no caminho, por isso uma mudança de navegação como v2 e seu código continua a funcionar.

POST /api/v1/matches/

Comece um match. Só é necessáriobjetivo: deixar o painel fora e um lineup padrão está sentado de diferentes fornecedores, porque modelos treinados em pontos sobrepostos compartilhar dados e um painel que concorda com si não é evidência. O match é encadeado imediatamente e trabalhado por um servidor, assim o pedido retorna assim que é aceite.

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 — a reivindicação, em suas próprias palavras.
  • rigor / rigor_preset — o bar que o árbitro tem a você, a verbatim ou por nome: padrão, publicação, prêmio, decisão. Um predefinido desconhecido é recusado em vez de troca silenciosa pelo padrão — ser julgado contra um padrão que você não pediu é pior que um erro.
  • seats — dois a seis lugares de debate, cada um um id modelo de GET /api/v1/models/ e uma postura opcional.
  • referee — o modelo que regula os critérios e verifica as evidências.
  • max_rounds, usd_ceiling — limites duros. Alcançando o teto pausa o match em vez de gastar além dele, e um match pausados retoma exatamente onde ele parou.
  • public — publicar os match terminados para a galeria pública.
GET /api/v1/matches/{token}/

O estado, os critérios de aceitação e de como cada um foi resolvido, o livro de resultados estabelecidos, as provas por trás de cada decisão, e o veredicto uma vez que existe um. A match corre por minutos a horas, assim sonda a cada poucos segundos enquanto está vivo — a resposta diz-lhe quando 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": "…"
}

Estado: encadeado, executado, pausado, needs_funds, resolvido, exausto, preso, falhado. Os últimos quatro são terminal; pausado, needs_funds, exausto e preso podem ser retomados.

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

Dê um tempo de match mais ou mais voltas ou mais orçamento. Tudo o que o painel estabelecido é mantido – os resultados são escritos para um livro uma vez e nunca re-derrived, e registrou extremidades mortas parar de voltar para uma abordagem que já falha.

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"}'
O resto
  • GET /api/v1/ — o que existe, para que um cliente possa encontrar o seu caminho sem esta página.
  • GET /api/v1/models/ — modelos assentes com sua camada, janela de contexto e taxas por milhões de toneladas. A mesma lista, como uma página.
  • GET /api/v1/matches/ — seu matches, mais recente primeiro; filtrar por status, página com limite e offset.
  • GET /api/v1/account/ — balança, tempo de vida e se você está em crédito pré-pago ou sua própria chave de inferência.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — listar e revogar as chaves. A primeira chave só pode ser minted aqui, em um navegador.
Erros

Cada falha tem a mesma forma. Branco no código, que é estável; mensagem é prosa e pode ser reformulado.

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

401 para uma chave faltante ou revogada, 402 quando o saldo está vazio, 404 para um token que não é seu, 409 para um match que já está a correr, 429 quando você está indo muito rápido, 400 para qualquer coisa que o pedido em si se enganou.

Limites de taxa

Contado por chave: 240 lidas e 30 match começa por minuto. Solta por propósito — o que realmente limita um match é que ele gasta o seu saldo, e estes estão aqui para parar um loop de repetição ou um polender a correr plano fora. Sobre o limite você recebe 429; pesquisa um match a cada poucos segundos em vez de continuamente.

A facturação é idêntica ao site: você paga por token à taxa publicada por modelo, a partir de crédito pré-pago ou sua própria chave. Como funciona a facturação