API Hop

الوثائق

وثائق API Hop

واجهة Chat Completions المشتركة

واجهة محادثة موحدة لتبديل النماذج النصية عبر المعامل model. يتوافق تنسيق الطلب مع OpenAI Chat Completions.

POSThttps://api.apihop.ai/v1/chat-completions

واجهة محادثة موحدة لتبديل النماذج النصية عبر المعامل model. يتوافق تنسيق الطلب مع OpenAI Chat Completions.

يدعم المزود Claude Sonnet 4.6 (claude-sonnet-4-6)، لكنه غير منشور حاليا على API Hop. وليس خيار تكامل افتراضيا نشطا. قبل استدعاء أي نموذج، أكد الوصول من خلال استجابة GET https://api.apihop.ai/v1/models الخاصة بك.

تعيد نقطة النهاية هذه استجابة JSON كاملة واحدة افتراضيا. اضبط stream: true صراحة عندما تحتاج إلى بث SSE.

text
POST https://api.apihop.ai/v1/chat-completions

المصادقة

تتطلب جميع الطلبات المصادقة برمز Bearer.

http
Authorization: Bearer YOUR_API_KEY

إذا فشلت المصادقة، فتحقق مما يلي:

  • صحة مفتاح API
  • صلاحية المفتاح لعنوان API Base URL هذا
  • صحة كتابة ترويسة الطلب
  • ما إذا كان وكيل يعيد كتابة ترويسة المصادقة

جسم الطلب

modelstringمطلوبالقيمة الافتراضية: gpt-5.4

معرفات النماذج النصية الموثقة (أكد الوصول عبر GET https://api.apihop.ai/v1/models):

  • OpenAI: gpt-5.4 وgpt-5.5 وgpt-5.6-sol وgpt-5.6-terra وgpt-6-astra
  • Anthropic: claude-fable-5 وclaude-fable-5-1 وclaude-opus-4-6 وclaude-opus-4-7 وclaude-opus-4-8 وclaude-opus-5 وclaude-opus-5-5 وclaude-sonnet-5 وclaude-sonnet-5-5
  • DeepSeek: deepseek-v4-flash وdeepseek-v4-pro وdeepseek-v4.1-flash (معرف V4.1 Flash مستقل، ولا يتاح إلا بعد النشر والتفعيل؛ تحقق عبر GET https://api.apihop.ai/v1/models).
  • Gemini: gemini-3.6-flash وgemini-3.7-flash وgemini-3.8-flash وgemini-3.5-flash-lite وgemini-4-argon (بعد النشر والتفعيل)
  • نموذج Kimi: kimi-k3
  • نموذج MiniMax: minimax-m3

راجع كتالوج النماذج للقائمة الكاملة والنماذج الظاهرة لمفتاح API الحالي. استخدم استجابة GET https://api.apihop.ai/v1/models الخاصة بك مرجعا حاليا للإتاحة. راجع أدلة DeepSeek وGemini وKimi وMiniMax لملاحظات الاختيار والأمثلة الخاصة بكل عائلة.

messagesobject[]مطلوب

رسائل المحادثة. ينبغي أن تتضمن كل رسالة:

  • role: ‏system أو user أو assistant
  • content: محتوى الرسالة

مثال:

json
  [
    {"role": "system", "content": "You are a helpful Python tutor."},
    {"role": "user", "content": "How should I learn programming?"}
  ]

حدود أخذ العينات الخاصة بالنماذج: لا يقبل gpt-6-astra المعاملات القديمة temperature أو top_p أو top_logprobs؛ احذف هذه الحقول حتى عندما يدرجها عميل أقدم. تخفي ساحة تجربة GPT-6 Astra في API Hop أيضا ضوابط أخذ العينات والعقوبات القديمة. رفض claude-sonnet-5 المعامل top_p في إعادة تحقق موثقة للتكامل، لذا احذفه لهذا النموذج أيضا. تمرير حقل اختياري عبر وكيل لا يثبت دعم نموذج المزود المختار له.

temperaturenumberالقيمة الافتراضية: 1.0

درجة حرارة أخذ العينات. يستخدم العملاء المتوافقون مع OpenAI عادة القيم من 0 إلى 2، لكن النموذج المختار يتخذ قرار التحقق النهائي.

max_tokensinteger

الحد الأقصى الاختياري لرموز الإخراج كعدد صحيح موجب. احذف هذا الحقل لاستخدام القيمة الافتراضية لدى المزود للنموذج المختار؛ وتختلف القيم الافتراضية والحدود القصوى بحسب النموذج وإعداد المزود.

بحسب النموذج، قد تشمل الميزانية رموز الاستدلال والنص النهائي معا. قد تتسبب الميزانية الصغيرة في finish_reason: "length" أو اقتطاع الإجابة أو نفادها قبل النص النهائي. وقد تزيد زيادتها التكلفة.

max_completion_tokensinteger

بديل توافق اختياري لـmax_tokens، مع اعتبارات الميزانية نفسها. قد يقبل النموذج أحد هذين الحقلين فقط، لذا ابدأ بجسم بسيط عند تبديل النماذج. احذف كليهما لاستخدام القيمة الافتراضية لدى المزود.

streambooleanالقيمة الافتراضية: false

ما إذا كانت الاستجابة ستبث.

  • true: إرجاع أحداث يرسلها الخادم
  • false: إرجاع استجابة كاملة واحدة
top_pnumberالقيمة الافتراضية: 1.0

معامل أخذ العينات النووية. يستخدم العملاء المتوافقون مع OpenAI عادة القيم من 0 إلى 1؛ وينفذ النموذج المختار التحقق النهائي.

frequency_penaltynumberالقيمة الافتراضية: 0

عقوبة التكرار. يستخدم العملاء المتوافقون مع OpenAI عادة القيم من -2.0 إلى 2.0؛ وينفذ النموذج المختار التحقق النهائي.

presence_penaltynumberالقيمة الافتراضية: 0

عقوبة الوجود. يستخدم العملاء المتوافقون مع OpenAI عادة القيم من -2.0 إلى 2.0؛ وينفذ النموذج المختار التحقق النهائي.

stopstring | array

تسلسل إيقاف أو مصفوفة تسلسلات إيقاف. يحدد النموذج المختار العدد المقبول والسلوك.

nintegerالقيمة الافتراضية: 1

عدد الاستجابات المراد توليدها. استخدم رقما مثل 1، وليس سلسلة بين علامتي اقتباس.

اختلافات معاملات النماذج

تدعم النماذج النصية الحالية طلبات Chat الأساسية بالبث ودونه، لكن قبول المعاملات الاختيارية وتأثيرها يختلف بحسب النموذج المختار وتنفيذ التوافق لديه.

قبلت أحدث إعادة تحقق في 2026-09-26 النموذج claude-fable-5 مع temperature: 0 وأعادت نصا. ورفضت إعادة التحقق نفسها claude-sonnet-5 مع top_p: 0.9 بالحالة HTTP 400 والرسالة top_p is deprecated. احذف top_p لهذا النموذج. لا يثبت القبول تأثيرا في أخذ العينات ولا ضمانا للنماذج الأخرى أو الطلبات اللاحقة؛ فلا تفترض دعم جميع معاملات أخذ العينات.

قبلت فحوص OpenAI في 2026-09-26 المعامل stop لكل من gpt-5.6-sol وgpt-5.6-terra. قد يتغير قبول المعاملات مع المزود ولا يثبت فاعلية تسلسل الإيقاف.

يحافظ التمرير الأصلي لـChat المتوافق مع OpenAI على top_p وstop في طلب المزود. ويحافظ المسار الذي يحول Chat إلى Responses على top_p لكنه لا يمرر stop. تمرير الحقل لا يثبت دعم المزود أو تأثيره؛ ولا يتمتع أي من الحقلين بضمان على مستوى المنصة عبر المسارات.

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

مثال طلب

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": "Hello, introduce yourself briefly."
    }
  ],
  "stream": false
}

الاستجابة

idstring

معرف فريد للاستجابة.

objectstring

نوع الكائن، وعادة chat.completion أو chat.completion.chunk للبث.

createdinteger

طابع وقت الإنشاء بصيغة Unix.

modelstring

معرف النموذج المعاد في الاستجابة.

choicesarray

الخيارات المولدة، بما فيها محتوى الرسالة والفهرس وسبب الانتهاء.

usageobject

إحصاءات استخدام الرموز.

مثال نجاح

json
{
  "id": "chatcmpl-9876543210",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "I am an AI assistant that can help with writing, coding, and analysis."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 42,
    "total_tokens": 70
  }
}

استجابة الخطأ

راجع رموز الأخطاء وتشخيصها للمرجع الكامل للرموز واختلافات البروتوكولات وخطوات التشخيص.

تستخدم أخطاء HTTP في Chat Completions جسم JSON مسطحا، بما فيه أخطاء HTTP من المزود المعادة قبل بدء بث SSE. مثلا، تعيد HTTP 402:

json
{
  "code": 40000,
  "message": "Insufficient credit. Required: 30000, Available: 20000",
  "type": "api_error"
}
  • code: رمز خطأ رقمي للمنصة، مستقل عن حالة HTTP وليس سلسلة نصية
  • message: وصف خطأ مقروء للبشر
  • type: القيمة api_error
  • requestId: معرف طلب اختياري للتشخيص
حالة HTTPcodeالمعنى
40010000طلب غير صحيح
40120000مصادقة مفقودة أو غير صحيحة
40240000رصيد غير كاف
40320001الوصول مرفوض أو النموذج غير متاح لهذا المفتاح
40430000النموذج أو المورد غير موجود
40930001تعارض الطلب
42210001خطأ تحقق
42940001تجاوز حد المعدل
50050003خطأ داخلي
50250000خطأ المزود
50350001الخدمة غير متاحة
50450002انتهاء مهلة البوابة

افحص حالة HTTP أولا لتحديد نجاح الطلب، ثم قارن code الرقمي للمعالجة الخاصة بالتطبيق. لا تقارن code بسلاسل مثل "400"، ولا تفترض مساواته لحالة HTTP، ولا تحلل message كمعرف خطأ ثابت. ترفض messages المفقودة أو ذات النوع الخاطئ بالحالة HTTP 400 وcode: 10000 قبل استدعاء المزود.

ينطبق تنسيق الخطأ هذا على استجابات HTTP في Chat Completions، وليس الأخطاء داخل بث SSE بدأ بالفعل أو بروتوكولات API الأخرى. لكتالوج النماذج ونقاط نهاية البروتوكولات الأصلية تنسيقات أخطاء موثقة خاصة بها.