API

كل ما يفعله الموقع، عبر HTTP: يعلن عن ادعاء ويجب أن يزيل الشريط، ويجلس فريق، ويستفتي حتى يقوم المحكم بتسوية كل معيار. نفس الفريق، نفس الفواتير، نفس حدود الإنفاق - لا متصفح.

مفاتيحك

المفاتيح تصنع من حسابك، ادخل، أو إنشاء واحد - الحسابات الجديدة تحصل على الائتمان الأولي، الذي يكفي ل match حقيقية.

التسجيل الدخول
التوثيق

إرسال المفتاح كرمز حامل على كل طلب. هو هوية التي يمكن أن تنفق رصيدك، لذلك التعامل معها مثل كلمة المرور: جانب الخادم فقط، أبدا في المتصفح، أبدا في المستودع. المفتاح المتسرب يتم إلغاؤه من هذه الصفحة وتوقف العمل فورا.

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

العنوان الشبكي الأساسي: 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 — 1- حدد النطاق الذي يطلبه المحكم منك، حرفياً أو بالاسم: معيار، نشر، رسمي، جائزة، قرار. ويتم رفض النطاق المسبق غير المعروف بدلاً من استبداله بالخيار الافتراضي - الحكم عليك على أساس معيار لم تطلبه أسوأ من الخطأ.
  • seats — من مقعدين إلى ستة مقاعد للمناقشة، لكل منها نموذج من GET /api/v1/models/ وموقف اختياري.
  • 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 الجاري كل بضعة ثوان بدلا من باستمرار.

الفواتير هي نفسها على الموقع: تدفع لكل رمز بسعر النموذج المنشور، من الائتمان المدفوع مسبقاً أو مفتاحك الخاص. كيف تعمل الفواتير