beta
واجهة نواة البرمجية
أنشئ تطبيقات وعدّلها وانشرها برمجيًا. أنشئ مفتاحًا من الإعدادات ← مفاتيح API، وأرسله في ترويسة Authorization.
المصادقة والحدود
Authorization: Bearer nawa_live_…— المفتاح يظهر مرة واحدة عند إنشائه، ونحفظ بصمته فقط.- مفتاح ملغى أو خاطئ ← 401 مع رسالة بالعربية والإنجليزية {error, error_ar}.
- 60 طلبًا في الدقيقة لكل مفتاح؛ بعدها 429 مع ترويسة Retry-After.
- الرصيد غير كافٍ للفئة المختارة ← 402. الفئات: fast (سريع) و smart (ذكي) و max (أقصى).
النقاط
| GET | /projects/ | مشاريع مساحة العمل المرتبطة بالمفتاح |
| POST | /projects/ | إنشاء مشروع من وصف {prompt, locale} |
| POST | /projects/{id}/messages/ | إرسال طلب {text, tier}: يبني مشروعًا جديدًا أو يعدّل تطبيقًا جاهزًا ← مهمة |
| GET | /jobs/{id}/ | حالة المهمة: queued | running | succeeded | failed |
| POST | /projects/{id}/publish/ | نشر الإصدار الحالي ← مهمة نتيجتها الرابط المباشر |
المواصفة الكاملة (OpenAPI 3.1): /api/v1/openapi.json
curl
# ١) أنشئ مشروعًا
curl -X POST https://nawa-ebon.vercel.app/api/v1/projects/ \
-H "Authorization: Bearer $NAWA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "موقع حجز لعيادة أسنان في دبي", "locale": "ar"}'
# ٢) ابنِ التطبيق (يعيد رقم مهمة)
curl -X POST https://nawa-ebon.vercel.app/api/v1/projects/$PROJECT_ID/messages/ \
-H "Authorization: Bearer $NAWA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "ابدأ البناء", "tier": "smart"}'
# ٣) تابع حالة المهمة
curl https://nawa-ebon.vercel.app/api/v1/jobs/$JOB_ID/ -H "Authorization: Bearer $NAWA_API_KEY"
# ٤) انشر
curl -X POST https://nawa-ebon.vercel.app/api/v1/projects/$PROJECT_ID/publish/ -H "Authorization: Bearer $NAWA_API_KEY"JavaScript
const NAWA = "https://nawa-ebon.vercel.app/api/v1";
const h = { Authorization: `Bearer ${process.env.NAWA_API_KEY}`, "Content-Type": "application/json" };
const project = await (await fetch(`${NAWA}/projects/`, { method: "POST", headers: h,
body: JSON.stringify({ prompt: "متجر قهوة مختصة مع طلب أونلاين", locale: "ar" }) })).json();
let { job } = await (await fetch(`${NAWA}/projects/${project.id}/messages/`, { method: "POST", headers: h,
body: JSON.stringify({ text: "ابدأ البناء", tier: "fast" }) })).json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
({ job } = await (await fetch(`${NAWA}/jobs/${job.id}/`, { headers: h })).json());
}
console.log(job.status, job.result); // الإصدار والتكلفة بالرصيدملاحظة: البناء الكامل يستغرق عدة دقائق ويُنفَّذ على مراحل في الخلفية؛ تابع المهمة حتى تصبح succeeded.