API

Semua yang tapak lakukan, melalui HTTP: menyatakan tuntutan dan bar ia mesti bersih, duduk panel, dan undi sehingga penilai telah menyelesaikan setiap kriteria. Panel sama, bil sama, had belanja sama — tiada pelayar.

Kunci awak.

Kekunci dicipta dari akaun anda. Log masuk, atau cipta satu — akaun baru mendapat kredit permulaan, yang cukup untuk match sebenar.

Daftar Masuk Log masuk
Pengesahan

Hantar kekunci sebagai token pemegang pada setiap permintaan. Ia adalah kredensial yang boleh menghabiskan baki anda, jadi anggap ia seperti kata laluan: hanya sisi pelayan, tidak pernah dalam pelayar, tidak pernah dalam repositori. Kekunci yang bocor ditarik balik dari halaman ini dan berhenti berfungsi dengan serta merta.

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

URL Asas: https://theorem.chat/api/v1/. Permintaan dan maklum balas adalah JSON. Versi adalah dalam laluan, jadi perubahan pecah dihantar sebagai v2 dan kod anda terus berfungsi.

POST /api/v1/matches/

Mulakan match. Hanya matlamat diperlukan: tinggalkan panel dan garisan piawai diletakkan dari pembekal yang berbeza, kerana model yang dilatih pada data tumpang tindih berkongsi titik buta dan panel yang bersetuju dengan dirinya sendiri bukan bukti. match diiringi segera dan dikerjakan oleh pelayan, jadi permintaan kembali sebaik ia diterima.

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

Medan

  • goal — tuntutan, dalam kata-kata anda sendiri.
  • rigor / rigor_preset — bar yang penilai memegang anda kepada, secara bertulis atau mengikut nama: piawai, penerbitan, formal, hadiah, keputusan. Praset tidak diketahui ditolak daripada ditukarkan secara senyap untuk piawai - dinilai terhadap piawai yang anda tidak minta adalah lebih teruk daripada ralat.
  • seats — dua hingga enam tempat duduk debat, setiap satu id model dari GET /api/v1/models/ dan satu kedudukan pilihan.
  • referee — model yang memerintah kriteria dan memeriksa semula bukti. berbaloi untuk dibelanjakan pada.
  • max_rounds, usd_ceiling — had keras. Mencapai siling mematikan match daripada menghabiskan melebihinya, dan match yang dihentikan meneruskan tepat di mana ia berhenti.
  • public — menerbitkan match yang selesai ke galeri awam.
GET /api/v1/matches/{token}/

Seluruh match: status, kriteria penerimaan dan bagaimana setiap satu diselesaikan, buku besar hasil yang ditubuhkan, bukti di belakang setiap keputusan, dan keputusan apabila ada satu. match berjalan selama beberapa minit hingga jam, jadi sokong setiap beberapa saat semasa hidup - respon memberitahu anda bila untuk berhenti.

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

Status: berbaris gilir, berjalan, jeda, needs_funds, selesai, kehabisan, terperangkap, gagal. Empat terakhir adalah terminal; jeda, needs_funds, kehabisan dan terperangkap boleh dilanjutkan.

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

Berikan match pusingan lagi atau lebih bajet. Semua panel yang ditubuhkan disimpan - hasil ditulis ke buku besar sekali dan tidak pernah diperoleh semula, dan mati lemas direkodkan menghentikannya berjalan kembali ke pendekatan yang telah gagal.

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"}'
Selebihnya
  • GET /api/v1/ — apa yang ada, jadi klien boleh mencari jalannya tanpa halaman ini.
  • GET /api/v1/models/ — model seatable dengan tingkat mereka, tetingkap konteks dan per-juta-token kadar. Senarai yang sama, sebagai halaman.
  • GET /api/v1/matches/ — anda matches, terkini pertama; penapis mengikut status, halaman dengan had dan ofset.
  • GET /api/v1/account/ — baki, perbelanjaan seumur hidup dan sama ada anda menggunakan kredit prabayar atau kunci kesimpulan anda sendiri.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — Senarai dan batalkan kekunci. Kekunci pertama hanya boleh dihasilkan di sini, dalam pelayar.
Ralat

Setiap kegagalan mempunyai bentuk yang sama. Cawangan pada kod, yang stabil; mesej adalah prosa dan boleh diucap semula.

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

401 untuk kekunci hilang atau ditarik balik, 402 apabila baki kosong, 404 untuk token yang bukan milik anda, 409 untuk match yang sudah berjalan, 429 apabila anda terlalu cepat, 400 untuk apa-apa permintaan sendiri yang salah.

Had kadar

Dikira per kekunci: 240 bacaan dan 30 match mula satu minit. Lemah pada tujuan — apa yang sebenarnya membatasi match ialah ia menghabiskan baki anda, dan ini di sini untuk menghentikan cubaan semula atau poller berjalan kehabisan. Di atas had anda dapat 429; poll match berjalan setiap beberapa saat bukannya terus.

Bil adalah sama seperti laman web: anda membayar setiap token pada kadar per model yang diterbitkan, dari kredit prabayar atau kunci anda sendiri. Bagaimana bil berfungsi