واجهة واحدة للنصّ والصور والفيديو والصوت، متوافقة مع صيغة OpenAI. تعمل بمفتاح واحد، وتُحاسَب على ما تستهلكه فعلاً.
احصل على مفتاحك من نقطة، ثمّ ضعه في صفحة التكاملات داخل منصّتك. المفتاح يبدأ
بـ nq-live- ويُعرض مرّة واحدة عند إنشائه.
عنوان الخدمة:
https://ai.noqta.tn/v1
الاستيثاق بترويسة Authorization كأيّ واجهة متوافقة مع OpenAI:
curl https://ai.noqta.tn/v1/chat/completions \
-H "Authorization: Bearer nq-live-..." \
-H "Content-Type: application/json" \
-d '{
"model": "noqta-pro",
"messages": [{"role": "user", "content": "اكتب سؤالاً عن التمثيل الضوئي"}]
}'
أيّ مكتبة تتحدّث لغة OpenAI تعمل هنا دون تعديل: غيّر
base_url إلى العنوان أعلاه، وضع مفتاحك مكان مفتاحها.
لا شيء آخر يتغيّر.
from openai import OpenAI
client = OpenAI(api_key="nq-live-...", base_url="https://ai.noqta.tn/v1")
answer = client.chat.completions.create(
model="noqta-pro",
messages=[{"role": "user", "content": "..."}],
)
الأسماء في العمود الأوّل هي ما تطلبه في شفرتك، وهي الثابتة: إن بدّلنا ما خلفها بنموذج أحدث لن يتغيّر عندك سطر. والعمود الثاني يقول أيّ نموذج هو بالضبط — لأنّك تدفع مقابله، ومن حقّك أن تعرف ما تشتري.
| تطلبه باسم | وهو فعلاً | السعر |
|---|---|---|
noqta-pro
نصّ
|
anthropic/claude-opus-5
أقوى نموذج للنصّ
|
$7.50 دخل / مليون $0.75 دخل مُخبّأ / مليون $37.50 خرج / مليون |
noqta-fast
نصّ
|
anthropic/claude-opus-5-fast
الأسرع للردود القصيرة
|
حسب الاستهلاك |
noqta-mini
نصّ
|
anthropic/claude-haiku-4.5
الأرخص للمهامّ البسيطة
|
$1.50 دخل / مليون $0.15 دخل مُخبّأ / مليون $7.50 خرج / مليون |
noqta-image
صورة
|
google/gemini-3-pro-image
توليد الصور
|
≈ $0.20 / صورة |
noqta-image-fast
صورة
|
google/gemini-2.5-flash-image
توليد صور سريع
|
$0.45 دخل / مليون $0.05 دخل مُخبّأ / مليون $3.75 خرج / مليون |
noqta-avatar
فيديو
|
heygen/avatar-iv
فيديو ناطق من صورة
|
حسب الاستهلاك |
noqta-podcast
صوت
|
elevenlabs/genfm
درس يتحوّل إلى حلقة بصوتين
|
$0.18 / دقيقة منتَجة |
noqta-video
فيديو
|
bytedance/seedance-2.5
توليد فيديو من نصّ
|
≈ $1.73 / مقطع |
«الدخل المُخبّأ» هو الجزء الذي كرّرت إرساله ولم يتغيّر — مستنداتك مثلاً حين تولّد منها عشرين درساً. أعِد إرسال النصّ نفسه في بداية كلّ طلب يُقرأ من المخبأ بعُشر السعر. هذا أكبر توفير متاح لك، وأكبر من أثر تبديل النموذج نفسه.
«الرمز» (token) جزء من كلمة. الصفحة العربيّة الواحدة نحو ٧٠٠ رمز، فمليون رمز نحو ألف وأربعمئة صفحة. الصور والمقاطع تُحاسَب على الوحدة لا على الرموز، والرقم المعروض أمامها هو وسيط ما كلّفته فعلاً على هذه الخدمة — تقديرٌ لا تسعيرة.
POST /chat/completionsيقبل ما تقبله OpenAI: messages وmax_tokens
وtemperature وstream. البثّ المتدفّق مدعوم بصيغة
server-sent events.
POST /images/generationscurl https://ai.noqta.tn/v1/images/generations \
-H "Authorization: Bearer nq-live-..." \
-H "Content-Type: application/json" \
-d '{"model": "noqta-image", "prompt": "مخطّط خليّة نباتيّة، بلا نصّ"}'
تعود الصورة في data[0].b64_json.
POST /videos/generationsالفيديو غير متزامن: الطلب يعيد رقم مهمّة فوراً، ثمّ تسأل عنها حتّى تكتمل.
POST /videos/generations → {"id": "...", "status": "pending"}
GET /videos/{id} → {"status": "completed", "data": [{"url": "..."}]}
GET /videos/{id}/content → الملفّ نفسه
POST /audio/podcastsيحوّل نصّاً — درساً مثلاً — إلى حوار بصوتين، لا إلى قراءة آليّة له. النصّ مصدرٌ يُبنى عليه الحوار، لا سطورٌ تُتلى: مئتا حرف تصير خمس دقائق.
curl https://ai.noqta.tn/v1/audio/podcasts \
-H "Authorization: Bearer nq-live-..." \
-H "Content-Type: application/json" \
-d '{"model": "noqta-podcast", "text": "متن الدرس…", "language": "ar"}'
غير متزامن كالفيديو، وبالشكل نفسه:
POST /audio/podcasts → {"id": "...", "status": "processing"}
GET /audio/podcasts/{id} → {"status": "completed", "title": "...", "seconds": 335}
GET /audio/podcasts/{id}/content → ملفّ mp3
وsolo: true يجعلها صوتاً واحداً بدل اثنين، وhost_voice
وguest_voice يختاران الصوتين.
402 بدل أن تستمرّ الكلفة.| الرمز | المعنى |
|---|---|
| 401 | المفتاح ناقص أو ملغى. |
| 402 | بلغ الحساب سقفه الشهريّ. |
| 404 | اسم نموذج غير موجود — راجع الجدول أعلاه. |
| 413 | الطلب أكبر ممّا يقبله هذا النموذج. |
| 429 | طلبات كثيرة بسرعة. أعد المحاولة بعد قليل. |
| 503 | الخدمة غير متاحة مؤقّتاً. أعد المحاولة. |
شكل الخطأ هو شكل OpenAI نفسه، فمعالجة الأخطاء في مكتبتك تعمل كما هي:
{"error": {"message": "...", "type": "invalid_request_error", "code": 404}}