وثائق API Hop
واجهة Chat Completions المشتركة
واجهة محادثة موحدة لتبديل النماذج النصية عبر المعامل model. يتوافق تنسيق الطلب مع OpenAI Chat Completions.
https://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.
POST https://api.apihop.ai/v1/chat-completionsالمصادقة
تتطلب جميع الطلبات المصادقة برمز Bearer.
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أوassistantcontent: محتوى الرسالة
مثال:
[
{"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 تأثيرا في أخذ العينات. يجب أن تغطي ميزانيات الإخراج تفكير النموذج ونصه النهائي معا.
مثال طلب
{
"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إحصاءات استخدام الرموز.
مثال نجاح
{
"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:
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: رمز خطأ رقمي للمنصة، مستقل عن حالة HTTP وليس سلسلة نصيةmessage: وصف خطأ مقروء للبشرtype: القيمةapi_errorrequestId: معرف طلب اختياري للتشخيص
| حالة HTTP | code | المعنى |
|---|---|---|
| 400 | 10000 | طلب غير صحيح |
| 401 | 20000 | مصادقة مفقودة أو غير صحيحة |
| 402 | 40000 | رصيد غير كاف |
| 403 | 20001 | الوصول مرفوض أو النموذج غير متاح لهذا المفتاح |
| 404 | 30000 | النموذج أو المورد غير موجود |
| 409 | 30001 | تعارض الطلب |
| 422 | 10001 | خطأ تحقق |
| 429 | 40001 | تجاوز حد المعدل |
| 500 | 50003 | خطأ داخلي |
| 502 | 50000 | خطأ المزود |
| 503 | 50001 | الخدمة غير متاحة |
| 504 | 50002 | انتهاء مهلة البوابة |
افحص حالة HTTP أولا لتحديد نجاح الطلب، ثم قارن code الرقمي للمعالجة الخاصة بالتطبيق. لا تقارن code بسلاسل مثل "400"، ولا تفترض مساواته لحالة HTTP، ولا تحلل message كمعرف خطأ ثابت. ترفض messages المفقودة أو ذات النوع الخاطئ بالحالة HTTP 400 وcode: 10000 قبل استدعاء المزود.
ينطبق تنسيق الخطأ هذا على استجابات HTTP في Chat Completions، وليس الأخطاء داخل بث SSE بدأ بالفعل أو بروتوكولات API الأخرى. لكتالوج النماذج ونقاط نهاية البروتوكولات الأصلية تنسيقات أخطاء موثقة خاصة بها.