YAIB

beta

واجهة نواة البرمجية

أنشئ تطبيقات وعدّلها وانشرها برمجيًا. أنشئ مفتاحًا من الإعدادات ← مفاتيح API، وأرسله في ترويسة Authorization.

المصادقة والحدود

النقاط

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.