سجّل الدخول إلى لوحة التحكم، وموّل رصيدًا، ثم أنشئ مفتاح API. تُعرض قيمة المفتاح مرة واحدة. نحن نخزّن بصمته فقط، فإن فقدته فلا سبيل لدينا لعرضه عليك مرة أخرى — أنشئ مفتاحًا جديدًا وأبطل القديم.
أبقِه بعيدًا عن كود الواجهة الأمامية وعن git. كل ما يستطيع قراءة المفتاح يستطيع إنفاق رصيدك.
أفريكان أوبن راوتر متوافق مع واجهة chat-completions الخاصة بـ OpenAI. إن كان كودك يتعامل مع OpenAI بالفعل، فالتغيير الوحيد هو الـ base URL والمفتاح.
# Python from openai import OpenAI client = OpenAI( base_url="https://api.africaopenrouter.com/v1", api_key="<AOR_API_KEY>", )
// Node import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.africaopenrouter.com/v1", apiKey: process.env.AOR_API_KEY, });
response = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "Say hello in three words."}],
)
print(response.choices[0].message.content)
أو باستخدام curl:
curl https://api.africaopenrouter.com/v1/chat/completions \ -H "Authorization: Bearer $AOR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5.6-sol","messages":[{"role":"user","content":"Hello"}]}'
مرّر stream=True واقرأ الأجزاء فور وصولها. البثّ الذي يفشل في
منتصفه يُبلَّغ عنه كطلب فاشل، فلا تضطر أبدًا إلى تخمين ما إذا
كان النص الذي وصلك كاملًا.
stream = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "Count to five."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
استخدم اسم النموذج كما هو عند المزوّد — gpt-5.6-sol — لا اسمًا
بديلًا من أفريكان أوبن راوتر. كتالوج لوحة التحكم هو المرجع لما يمكنك استدعاؤه
وكم يكلّف؛ وصفحة الأسعار تعرض الأسعار الحالية.
| الحالة | الرمز | ما العمل |
|---|---|---|
| 401 | invalid_token | المفتاح خاطئ أو مُبطَل أو لم يُنشر بعد. تأكّد أنك أرسلت
Authorization: Bearer <key>. |
| 400 | invalid_request | لم يجتز محتوى الطلب فحص البنية — غالبًا بسبب غياب
model، أو قائمة رسائل فارغة، أو اسم نموذج
فيه مسافات زائدة. |
| 402 | wallet_denied | رصيدك لا يغطي أسوأ تكلفة محتملة للطلب. اشحن الرصيد. |
| 404 | model_unavailable | النموذج غير موجود في كتالوج مساحة عملك. |
| 429 | — | تحديد للمعدّل عند الحافة، قبل أن تصل الطلبات إلى البوابة. وهذه
الحالة ليست JSON: محتوى الرد هو error code: 1015
بصيغة text/plain، ومدة الانتظار في ترويسة
Retry-After بالثواني. اعرف الحالة 429
من رمز الحالة لا من محتوى الرد — فكل صف آخر هنا يستخدم قالب JSON
المذكور أعلاه. |
| 503 | provider_unavailable | فشل المزوّد. إعادة المحاولة آمنة — فأنت لا يُخصم منك مقابل طلب لم ينتج شيئًا. |
قبل الاتصال بالمزوّد نحجز أسوأ تكلفة محتملة للطلب من رصيدك. وعند انتهائه نسوّي المبلغ الحقيقي ونعيد الفرق. والطلب المرفوض قبل وصوله إلى مزوّد لا يكلّف شيئًا. وكل طلب مسوّى يظهر في لوحة التحكم بعدد توكنزه ومبلغه الدقيق.
أنشئ المفتاح الجديد أولًا، وانشره، ثم أبطل القديم — بهذا الترتيب، حتى لا يعمل شيء ولو للحظة بلا بيانات اعتماد صالحة.
[email protected]. أرفق
request_id من محتوى الخطأ؛ فهو أسرع طريق لنا لمعرفة ما حدث لطلب
بعينه.