نقاط النهاية
Chat completions
نقطة النهاية POST /chat/completions بصيغة محادثة OpenAI تعمل مع كل النماذج النصية، مع المعاملات والبث والاستجابة والأخطاء وأمثلة الطلب.
جرّبه في ساحة التجربةتستخدم نقطة نهاية chat completions صيغة المحادثة الخاصة بـ OpenAI وتعمل مع كل نموذج نصي في الكتالوج: GPT وClaude وGemini وLlama وDeepSeek وMistral ومئات غيرها. يُمرَّر جسم الطلب إلى المزوّد الأصلي دون تغيير. يقتصر دور api14 على التحقق من مفتاحك والنموذج والحدود والرصيد، ثم تسجيل الاستخدام عند انتهاء الطلب.
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
الطلب
| المعامل | النوع | الوصف |
|---|---|---|
model | string، إلزامي | معرّف النموذج، مثل anthropic/claude-sonnet-4.5. المتغيّرات مثل :online أو :nitro مسموح بها. راجع معرّفات النماذج. |
messages | array، إلزامي | المحادثة على شكل كائنات { role, content }. الأدوار: system وdeveloper وuser وassistant وtool. |
models | string[] | نماذج احتياطية تُجرَّب بالترتيب إذا فشل النموذج الأول. راجع توجيه المزوّدين. |
stream | boolean | بثّ الـ tokens كأحداث server-sent events. راجع Streaming. |
max_tokens / max_completion_tokens | integer | الحد الأعلى للـ tokens المولَّدة. |
temperature | number | درجة حرارة أخذ العيّنات، عادةً 0–2. |
top_p, top_k, min_p, top_a | number | عناصر تحكم أخرى في أخذ العيّنات. تتجاهلها النماذج التي لا تدعمها. |
frequency_penalty, presence_penalty, repetition_penalty | number | عناصر التحكم في التكرار. |
stop | string | string[] | تسلسلات الإيقاف. |
seed | integer | أخذ عيّنات حتمي قدر الإمكان. |
logprobs, top_logprobs | boolean, integer | إرجاع لوغاريتمات احتمالات الـ tokens عندما يدعمها النموذج. |
tools, tool_choice, parallel_tool_calls | استدعاء الدوال. راجع استدعاء الأدوات. | |
response_format | object | وضع JSON أو مخرجات وفق JSON Schema. راجع المخرجات المهيكلة. |
reasoning, include_reasoning | object, boolean | عناصر التحكم في التفكير. راجع الاستدلال. |
plugins, web_search_options | البحث على الويب. راجع البحث على الويب. | |
provider | object | تفضيلات المزوّد الأصلي. راجع توجيه المزوّدين. |
modalities | string[] | مثل ["image", "text"] لمخرجات الصور، أو ["text", "audio"] لمخرجات الصوت. |
prediction | object | مخرجات متوقعة ({ type: "content", content }) لتقليل زمن الاستجابة عند التعديلات. |
transforms | string[] | مثل ["middle-out"] لضغط الـ prompts التي تتجاوز نافذة السياق. |
user | string | معرّف المستخدم النهائي الخاص بك. |
يمكن أن يكون content في الرسالة نصًا أو مصفوفة من أجزاء المحتوى (text وimage_url وfile وinput_audio). راجع الرؤية والملفات.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);
الاستجابة
{
"id": "gen-1760000000-abc123",
"object": "chat.completion",
"created": 1760000000,
"model": "anthropic/claude-sonnet-4.5",
"provider": "Anthropic",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": { "role": "assistant", "content": "Hello! How can I help you today?" }
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 9,
"total_tokens": 21,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 0 },
"cost": 0.000171
}
}
usage.cost هو تكلفة الطلب بالدولار الأمريكي. يخصمها api14 من رصيدك بعد انتهاء الطلب. أما id فهو معرّف عملية التوليد، ويمكنك الاستعلام عنه لاحقًا عبر الاستعلام عن عملية توليد.
ملاحظات حول الفوترة
- تدفع السعر المُعلَن للنموذج؛ وتُعاد قيمة الرسوم في
usage.cost. راجع الأسعار والفوترة. - لا تُحتسب عليك الطلبات الفاشلة (أي رمز حالة 4xx أو 5xx).
- إذا تضمّن الطلب
models: [...]، فيجب أن يكون كل نموذج احتياطي مسموحًا به لمفتاحك وخطتك، وإلا رفضت البوابة الطلب قبل إرساله إلى المزوّد الأصلي.
الأخطاء
| الحالة | الرمز | متى |
|---|---|---|
| 400 | model_required | الحقل model مفقود. |
| 400 | invalid_json | جسم الطلب ليس كائن JSON. |
| 401 | invalid_api_key | المفتاح مفقود أو غير صالح أو ملغى. |
| 402 | insufficient_balance | رصيدك بالدولار يساوي $0. |
| 403 | model_not_allowed / plan_required | قائمة النماذج المسموح بها لمفتاحك أو خطتك لا تشمل هذا النموذج. |
| 404 | model_not_found | معرّف نموذج غير معروف أو معطَّل. |
| 413 | payload_too_large | حجم جسم الطلب أكبر من 25 MB. |
| 429 | rate_limited / daily_limit_reached | تم بلوغ حد RPM أو الحد اليومي بالدولار للمفتاح. |
| 502 | upstream_unavailable | تعذّر الوصول إلى المزوّد الأصلي. |
تعود أخطاء المزوّد الأصلي، مثل تجاوز طول السياق أو الإشراف على المحتوى، برمز حالتها الأصلي وبصيغة الخطأ نفسها. راجع الأخطاء.