API Hop

الوثائق

وثائق API Hop

استجابات OpenAI متعددة الوسائط

واجهة Responses API متوافقة مع OpenAI. تستخدم نقطة النهاية هذه input بتنسيق OpenAI، وتدعم النصوص وروابط الصور العامة وإدخال ملفات PDF واستدعاءات الأدوات وخيارات الاستدلال ومعاملات التدفق.

POSThttps://api.apihop.ai/openai/responses

واجهة Responses API متوافقة مع OpenAI. تستخدم نقطة النهاية هذه input بتنسيق OpenAI، وتدعم النصوص وروابط الصور العامة وإدخال ملفات PDF واستدعاءات الأدوات وخيارات الاستدلال ومعاملات التدفق.

text
POST https://api.apihop.ai/openai/responses

المصادقة

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

http
Authorization: Bearer YOUR_API_KEY

نص الطلب

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

النماذج النشطة حاليًا التي تدعم Responses:

  • gpt-5.4
  • gpt-5.5
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-6-astra

راجع كتالوج النماذج لمعرفة النماذج الظاهرة لمفتاح API الحالي.

inputstring | object[]

محتوى الإدخال. مطلوب ما لم تُقدَّم قيمة غير فارغة في previous_response_id. يؤدي حذف الحقلين أو استخدام نوع إدخال غير صالح إلى 400 قبل الفوترة.

الصيغ المدعومة:

  • سلسلة نصية تعادل إدخالًا نصيًا واحدًا بدور user.
  • مصفوفة من عناصر الإدخال لسجل المحادثة والإدخال متعدد الوسائط ونتائج استدعاءات الأدوات.

قد يحتوي كل كائن في مصفوفة الإدخال على الحقول التالية:

typestring

نوع عنصر الإدخال.

القيم الشائعة:

  • message: إدخال رسالة.
  • function_call_output: نتيجة استدعاء أداة دالة.
rolestring

الدور عندما تكون type=message.

القيم الشائعة:

  • developer
  • system
  • user
  • assistant
contentstring | object[]

محتوى الرسالة.

استخدم مصفوفة من كتل المحتوى للطلبات متعددة الوسائط. تدعم كتل المحتوى:

typestring

نوع كتلة المحتوى.

المدعوم حاليًا:

  • input_text
  • input_image
  • input_file
textstring

المحتوى النصي عندما تكون type=input_text.

image_urlstring

رابط صورة عام عندما تكون type=input_image.

تُدعم فقط روابط الصور http:// أو https:// المتاحة للعامة. لا تُدعم روابط بيانات Base64 مثل data:image/...;base64,....

detailstringالقيمة الافتراضية: auto

مستوى تفاصيل الصورة عندما تكون type=input_image.

القيم الشائعة:

  • auto
  • low
  • high
file_datastring

رابط بيانات محتوى الملف عندما تكون type=input_file. يمكن لملفات PDF استخدام data:application/pdf;base64,....

filenamestring

اسم الملف عندما تكون type=input_file.

instructionsstring

تعليمات النظام أو المطوّر التي تُدرج في سياق النموذج.

max_output_tokensinteger

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

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

ما إذا كانت الاستجابة تُرسل كتدفق.

  • false: إعادة استجابة كاملة واحدة
  • true: إعادة أحداث SSE بتنسيق OpenAI Responses
temperaturenumberالقيمة الافتراضية: 1.0

درجة حرارة أخذ العينات، وعادةً تكون من 0 إلى 2.

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

معامل أخذ العينات النووية، وعادةً يكون من 0 إلى 1.

textobject

إعداد إخراج النص.

text.formatobject

إعداد تنسيق النص، مثل { "type": "text" } أو مخطط JSON.

text.verbositystring

مستوى تفصيل الإخراج، مثل low أو medium أو high. يعتمد الدعم على النموذج المختار.

toolsobject[]

تعريفات الأدوات. يعتمد توفرها على النموذج المختار والميزات المتاحة.

tool_choicestring | object

سياسة اختيار الأدوات.

parallel_tool_callsboolean

ما إذا كان يُسمح باستدعاء الأدوات بالتوازي.

reasoningobject

الخيارات المتعلقة بالاستدلال.

includestring[]

حقول إضافية لتضمينها في الاستجابة.

prompt_cache_keystring

مفتاح التخزين المؤقت للتعليمات لإعادة استخدام ذاكرة التعليمات المؤقتة.

prompt_cache_retentionstring

سياسة الاحتفاظ بذاكرة التعليمات المؤقتة. تعتمد القيم المدعومة على النموذج المختار والميزات المتاحة.

safety_identifierstring

معرّف ثابت للمستخدم النهائي لضوابط السلامة.

storeboolean

ما إذا كان يمكن تخزين حالة الاستجابة.

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

  • يحافظ التمرير الأصلي المتوافق مع OpenAI Responses على top_p في الطلب المرسل إلى المزوّد؛ ويعتمد التحقق وسلوك أخذ العينات على النموذج والمزوّد المختارين. قبلت فحوص 2026-09-26 القيمة top_p: 0.9 للنماذج gpt-5.5 وgpt-5.6-sol وgpt-5.6-terra. القبول والتمرير لا يثبتان تأثيرًا على أخذ العينات ولا يضمنان دعم قيم أو نماذج أخرى أو طلبات لاحقة. ابدأ بطلب بسيط يقتصر على الضروري.
  • ينطبق الدعم المذكور في هذه الصفحة على نقطة النهاية العادية /openai/responses فقط. ولا يعني أن النموذج نفسه يدعم /openai/responses/compact أو WebSocket أو previous_response_id مع حفظ الحالة.
  • لا تملك نماذج GPT الخمسة المذكورة أعلاه حاليًا قناة Compact جرى التحقق منها. تُرفض طلبات Compact قبل الفوترة عند عدم توفر قناة مفعّلة صراحةً. وتظل Responses العادية وResponses WebSocket متاحتين.

أمثلة الطلبات

تتضمن الأمثلة أدناه input. يمكن لطلب المتابعة حذف input إذا قدّم previous_response_id صالحًا وكانت القناة المختارة تدعم المتابعة مع حفظ الحالة. لا يفعّل معرّف الاستجابة هذه الإمكانية في قناة لا تدعمها. وتظل نتائج الأدوات عناصر إدخال صالحة، بما فيها function_call_output.

النص

json
{
  "model": "gpt-5.4",
  "input": "Hello, introduce yourself in one sentence."
}

معاملات بأسلوب Codex CLI

json
{
  "model": "gpt-5.5",
  "input": "Reply with READY only.",
  "reasoning": {
    "effort": "xhigh"
  },
  "store": false,
  "text": {
    "verbosity": "low"
  },
  "stream": true
}

فهم الصور

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "What is in this image?"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/cat.png",
          "detail": "high"
        }
      ]
    }
  ]
}

إدخال الملفات

استخدم file_data مع filename لإرسال محتوى PDF. يجب أن يكون file_data رابط بيانات كاملًا.

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Summarize the key points in this PDF."
        },
        {
          "type": "input_file",
          "file_data": "data:application/pdf;base64,JVBERi0xLjQKJc...",
          "filename": "report.pdf"
        }
      ]
    }
  ]
}

إدخال الصور والملفات

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Give three conclusions based on the image and attachment."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/chart.png",
          "detail": "high"
        },
        {
          "type": "input_file",
          "file_data": "data:application/pdf;base64,JVBERi0xLjQKJc...",
          "filename": "notes.pdf"
        }
      ]
    }
  ]
}

الإخراج المتدفق

json
{
  "model": "gpt-5.4",
  "stream": true,
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Explain this diagram step by step."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/diagram.png"
        }
      ]
    }
  ]
}

الاستجابة

تتبع الاستجابات غير المتدفقة تنسيق OpenAI Responses. وقد تختلف الحقول الفعلية بحسب قدرات النموذج المختار.

idstring

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

objectstring

نوع كائن الاستجابة، ويكون عادةً response.

created_atinteger

الطابع الزمني للإنشاء.

modelstring

النموذج المستخدم فعليًا.

outputobject[]

قائمة عناصر الإخراج. تشمل العناصر الشائعة message وfunction_call والإخراج المتعلق بالأدوات.

usageobject

إحصاءات استخدام الرموز، مثل input_tokens وoutput_tokens وtotal_tokens.

مثال على النجاح

json
{
  "id": "resp_123",
  "object": "response",
  "created_at": 1766534400,
  "model": "gpt-5.4",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "text": "The image shows a cat, and the attachment is a document about pet care."
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 128,
    "output_tokens": 42,
    "total_tokens": 170
  }
}

الاستجابة المتدفقة

عند ضبط stream=true، تعيد نقطة النهاية أحداثًا يرسلها الخادم عبر SSE.

text
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"The image"}

event: response.completed
data: {"type":"response.completed","response":{"id":"resp_123"}}

اقرأ الأحداث حتى response.completed أو إغلاق الاتصال.

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

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

تستخدم أخطاء HTTP التي تنشئها المنصة الحقول المباشرة أدناه بدلًا من تغليفها داخل error. وقد تحتفظ بعض أخطاء المزوّد ببنيتها الأصلية؛ ولا تتبع الأخطاء داخل تدفق SSE بدأ بالفعل مثال استجابة HTTP هذا.

json
{
  "code": 40000,
  "message": "Insufficient credit. Required: 30000, Available: 20000",
  "type": "api_error"
}

ملاحظات

  • تستخدم نقطة النهاية Responses الحقل input وليس messages. إذا كان عميلك يرسل messages فقط، فاستخدم /openai/v1/chat/completions.
  • يستخدم إدخال الصور input_image؛ ويجب أن يكون image_url رابطًا عامًا يبدأ بـ http:// أو https://. لا تُدعم روابط بيانات Base64 للصور.
  • يستخدم إدخال الملفات input_file. لملفات PDF، استخدم file_data مع filename؛ وينبغي أن يكون file_data رابطًا كاملًا بصيغة data:application/pdf;base64,....
  • يعتمد إدخال الصوت وإخراجه وأدوات توليد الصور والبحث في الملفات وغيرها من القدرات المتقدمة على النموذج المختار والميزات المتاحة.
  • تشكل الحقول المدرجة في هذه الصفحة عقد طلبات Responses العام الحالي؛ فلا تفترض توفر حقول غير مدرجة.
  • /openai/responses هو المسار العام الموصى به.
  • يتبع /v1/responses عقد الطلب والاستجابة العام نفسه.
  • يتبع /compat/v1/responses عقد الطلب والاستجابة العام نفسه.
  • يتبع /openai/v1/responses عقد الطلب والاستجابة العام نفسه.