API

Сайт HTTP орқали бажарадиган барча ишларни: талабни ва у тозалаши керак бўлган барни кўрсатинг, панелни ўрнатинг ва токи судья барча критерияларни ҳал қилгунча сўров ўтказинг. Худди шу панел, худди шу ҳисоб-китоб, худди шу сарфланиш чегаралари - браузер йўқ.

Сизнинг қулфларингиз

Алоқалар ҳисобингиздан яратилади. Кириб боринг ёки янгисини яратинг - янги ҳисоблар бошланғич кредит олади, бу ҳақиқий match учун етарли.

Ройхатдан ўтиш Кириш
Тасдиқлаш

Ҳар бир талабда калитни ташувчи токен сифатида юборинг. Бу сизнинг балансингизни сарфлаши мумкин бўлган ишончли маълумот, шунинг учун уни махфий сўзга ўхшатинг: фақат сервер томони, ҳеч қачон браузерда, ҳеч қачон репозиторияда. Оқиб чиққан калит бу саҳифадан бекор қилинади ва тезда ишдан чиқади.

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

Ассоциатив URL: https://theorem.chat/api/v1/. Со'ровлар ва жавоблар JSON. Версия йўлда, шунинг учун бузилган ўзгариш v2 сифатида юборилади ва кодингиз ишлашда давом этади.

POST /api/v1/matches/

match ни бошлаш. Фақат мақсад талаб этилади: панелни қолдириш ва турли ишлаб чиқарувчилардан стандарт режани ўрнатиш, чунки ўхшаш маълумотлар бўйича тайёрланган моделлар кўр нуқталарни ўртоқлашади ва ўзи билан мос келадиган панел далил эмас. match тезда навбатга қўйилади ва сервер томонидан ишланади, шунинг учун талаб қабул қилинганда қайтарилади.

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

Доиралар

  • goal — Сизнинг сўзларингиз билан талабни ёзинг.
  • rigor / rigor_preset — Судя сизга тегишли бўлган устун, сўзма-сўз ёки исм бўйича: стандарт, нашр, расмий, мукофот, қарор. Номаълум олдинги танлашлар аввалги танлашлар билан алмаштирилмайди, балки рад этилади - сиз сўрамаган стандарт бўйича судланганингиз хатодан ҳам ёмонроқдир.
  • seats — иккидан олтигача баҳслашувчи ўринлар, ҳар бири GET /api/v1/models/дан модел ID ва ихтиёрий позиция.
  • referee — Критерийларни бошқарадиган ва далилларни қайта текширадиган модел.
  • max_rounds, usd_ceiling — Қўшимча чекловлар. Тақсимловчига етиб бориш matchни тўхтатиб қўяди, уни сарфлаш ўрнига, ва тўхтатиб қўйилган match тўхтаб қолган жойдан давом эттирилади.
  • public — match-ни жамоат галереясига чоп этиш.
GET /api/v1/matches/{token}/

Барча match: аҳвол, қабул қилиш мезонлари ва ҳар бирининг ҳал қилиниши, аниқланган натижалар рўйхати, ҳар бир ҳукм ортидаги далиллар ва ҳукм чиқарилганда ҳукм. match дақиқадан соатгача ишлайди, шунинг учун ҳар бир дақиқада сўров ўтказинг - жавоб сизга қачон тўхташни айтиб беради.

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

Ҳолатлар: навбатда, ишлаётган, тўхтаб қолган, needs_funds, ҳал қилинган, тугаган, тўхтаб қолган, хато. Сўнгги тўрттаси терминаллардир; тўхтаб қолган, needs_funds, тугаган ва тўхтаб қолган давом эттирилиши мумкин.

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

match та раунд ёки бюджетдан ортиқ тўхтатиб қўйилган. Панелда ўрнатилган барча нарса сақланиб қолади - натижалар бир марта ёзилади ва ҳеч қачон қайта келтирилмайди, ва ёзилган тўхтаб қолганлар уни ҳали муваффақиятсиз бўлган ёндашувга қайтишдан тўхтатади.

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"}'
Қўшиш
  • GET /api/v1/ — мавжуд бўлган нарсаларни кўрсатади, шунинг учун клиент бу саҳифасиз ҳам йўлини топиши мумкин.
  • GET /api/v1/models/ — уларнинг даражаси, контекст ойнаси ва миллион-токен ставкалари билан ўрнатиш моделлари. Ўзи рўйхат, саҳифа сифатида.
  • GET /api/v1/matches/ — Сизнинг matches, аввал янгиси; ҳолати, чегара ва офсет билан саҳифа бўйича филтрлаш.
  • GET /api/v1/account/ — баланс, умр давомида сарфланган маблағ ва сизнинг олдиндан тўланган кредит ёки ўзингизнинг индукция қулфида эканингизни кўрсатади.
  • GET /api/v1/keys/, DELETE /api/v1/keys/{prefix}/ — Калитлар рўйхатини яратиш ва бекор қилиш. Биринчи калит фақат браузерда бу ерда яратилиши мумкин.
Хатолар

Ҳар бир хато бир хил кўринишда. Кодда бўлиниш, бу барқарор; хабар проза ва қайта ёзилиши мумкин.

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

401 йўқолган ёки бекор қилинган қулф учун, 402 баланс бўш бўлганда, 404 сизга тегишли бўлмаган қулф учун, 409 match ишга тушганида, 429 сиз тез ҳаракат қилаётганда, 400 талабнинг ўзида хато бўлганда.

Сигнал тезлиги чегаралари

Ҳар бир тугма учун ҳисобланган: дақиқада 240 ўқиш ва 30 match бошланиш. Мақсадга кўра бўш - matchни чекловчи нарса балансингизни сарфлаши ва булар қайта уриниш циклини ёки сўровчининг тўлиқ ишлашини тўхтатиш учун. Чегарадан ошиб кетсангиз 429ни оласиз; matchни доимий эмас, ҳар бир секундда сўровчи қилиб ишлатингиз.

Ҳисоб-китоб сайтга ўхшаш: сиз ҳар бир модел учун эълон қилинган нархда, олдиндан тўланган кредит ёки ўзингизнинг калитингиздан ҳар бир токен учун тўлов тўлайсиз. Ҳисоблаш қандай ишлайди