Rasel / Docs
AR
POST/api/v2/templates

إنشاء قالب

ينشئ قالباً من أي نوع مدعوم. قوالب واتساب الرسمية تُرسل إلى ميتا حسب المرسل المعتمد. الاسم إنجليزي صغير مع _. أرفق وسائط الهيدر في نفس طلب multipart، أو ارفع أولاً عبر /api/v2/templates/media ثم مرّر headerAssetId.

متى تستخدمه. عندما يريد نظامك إنشاء قوالب برمجياً ثم إرسالها بعد الاعتماد.

مثال الطلب

مثال صحيح: قالب واتساب كامل (صورة + متغيرات + أزرار)

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"order_ready_notice","category":"whatsapp","subType":"utility","language":"ar","headerType":"image","headerAssetId":"ASSET_ID_FROM_MEDIA_UPLOAD","body":"مرحباً {{1}}، طلبك رقم {{2}} جاهز للاستلام. الإجمالي {{3}} ل.س.","bodyParameters":[{"index":1,"label":"أحمد"},{"index":2,"label":"A-1042"},{"index":3,"label":"25000"}],"footer":"راسل","buttons":[{"type":"url","text":"تتبع الطلب","url":"https://example.com/orders/{{1}}","urlExample":"https://example.com/orders/A-1042"},{"type":"phone","text":"اتصل بنا","url":"+963911111111"}]}'

مثال صحيح: قالب واتساب مع مستند في طلب واحد

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"invoice_notice","category":"whatsapp","subType":"utility","language":"ar","headerType":"document","body":"فاتورتك رقم {{1}} جاهزة.","headerMedia":"<multipart binary PDF>","payload":"{\"bodyParameters\":[{\"index\":1,\"label\":\"A-1042\"}]}","note":"Content-Type: multipart/form-data"}'

مثال صحيح: قالب SMS

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"sms_otp","category":"sms","subType":"otp","content":"رمز التحقق هو {{1}}"}'

مثال خاطئ: خطأ: اسم بحروف عربية

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"تأكيد_الطلب","category":"whatsapp","body":"مرحباً"}'

الاسم يجب أن يكون إنجليزيًا صغيرًا مع شرطة سفلية.

قالب واتساب رسمي تشغيلي مع وسائط الهيدر

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"order_ready_notice","category":"whatsapp","subType":"utility","language":"ar","headerType":"image","headerAssetId":"ASSET_ID_FROM_MEDIA_UPLOAD","body":"مرحباً {{1}}، طلبك رقم {{2}} جاهز للاستلام. الإجمالي {{3}} ل.س.","bodyParameters":[{"index":1,"label":"أحمد"},{"index":2,"label":"A-1042"},{"index":3,"label":"25000"}],"footer":"راسل","buttons":[{"type":"url","text":"تتبع الطلب","url":"https://example.com/orders/{{1}}","urlExample":"https://example.com/orders/A-1042"},{"type":"phone","text":"اتصل بنا","url":"+963911111111"}]}'

JSON path: upload an image via POST /api/v2/templates/media and replace headerAssetId, or send the same fields as multipart with headerMedia. {{1}} {{2}} {{3}} in body are filled from bodyParameters labels (examples for Meta) and later from variablesIndexed when sending. URL button uses {{1}} in the path; send the suffix with template.buttonVariables. Phone button dials the number in url.

قالب واتساب تشغيلي (المتن فقط)

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"order_confirmation","category":"whatsapp","subType":"utility","language":"ar","body":"مرحباً {{1}}، طلبك رقم {{2}} تم تأكيده.","bodyParameters":[{"index":1,"label":"أحمد"},{"index":2,"label":"12345"}]}'

قالب واتساب OTP لنسخ الرمز

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"login_otp","category":"whatsapp","subType":"otp","language":"ar","otpType":"copy_code","addSecurityRecommendation":true,"codeExpirationMinutes":10,"otpButtonText":"Copy code"}'

قالب جلسة واتساب ويب

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"session_welcome","category":"whatsapp","subType":"utility","language":"ar","provider":"user_session","body":"مرحباً {{1}}، شكراً لتواصلك معنا."}'

قالب SMS

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"sms_otp","category":"sms","subType":"otp","content":"رمز التحقق هو {{1}}"}'

قالب بريد

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"welcome_email","category":"email","subType":"utility","emailSubject":"Welcome","content":"<p>Hello {{1}}</p>"}'

ربط قالب واتساب رسمي موجود

curl --location 'https://raselsms.com/api/v2/templates' \--header 'X-API-Key: YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"name":"eshaar_order_status","creationMode":"manual_external_id","providerTemplateId":"1234567890","subType":"utility","language":"ar","manualVariableCount":2}'

مثال الاستجابة

201 — قالب واتساب كامل (صورة + متغيرات + أزرار)

{  "success": true,  "data": {    "template": {      "id": "6800tpl123def4567890aaaa",      "name": "order_ready_notice",      "category": "whatsapp",      "subType": "utility",      "language": "ar",      "status": "pending",      "headerType": "image",      "headerValue": null,      "headerAssetId": null,      "headerPreviewUrl": null,      "allowsHeaderMediaOverride": true,      "provider": "meta",      "officialSenderId": "platform",      "officialSender": {        "id": "platform",        "scope": "platform",        "isPlatform": true,        "isDefault": true,        "label": null,        "phoneNumber": null,        "displayName": "platform"      },      "isPlatformNumber": true,      "isDefault": false,      "createdAt": "2026-09-01T10:00:00.000Z"    }  }}

201 — قالب واتساب مع مستند في طلب واحد

{  "success": true,  "data": {    "template": {      "id": "6800tpl123def4567890aaaa",      "name": "invoice_notice",      "category": "whatsapp",      "subType": "utility",      "language": "ar",      "status": "pending",      "headerType": "image",      "headerValue": null,      "headerAssetId": null,      "headerPreviewUrl": null,      "allowsHeaderMediaOverride": true,      "provider": "meta",      "officialSenderId": "platform",      "officialSender": {        "id": "platform",        "scope": "platform",        "isPlatform": true,        "isDefault": true,        "label": null,        "phoneNumber": null,        "displayName": "platform"      },      "isPlatformNumber": true,      "isDefault": false,      "createdAt": "2026-09-01T10:00:00.000Z"    }  }}

201 — قالب SMS

{  "success": true,  "data": {    "template": {      "id": "6800tplsms",      "name": "sms_otp",      "category": "sms",      "status": "active"    }  }}

400 — خطأ: اسم بحروف عربية

{  "success": false,  "code": "VALIDATION_ERROR",  "error": "Invalid template name"}

الاسم يجب أن يكون إنجليزيًا صغيرًا مع شرطة سفلية.

401 — مفتاح API مفقود أو غير صالح.

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "UNAUTHORIZED",  "error": "Missing or invalid API key"}

403 — الهاتف غير موثّق أو الصلاحية غير كافية (غالباً messages:create أو api_keys:read).

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "FORBIDDEN",  "error": "Phone not verified or missing permission"}

429 — تم تجاوز حد الطلبات. انتظر Retry-After إن وُجد.

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "RATE_LIMITED",  "error": "Rate limit exceeded",  "retryAfterSeconds": 30}

طلب HTTP

POST /api/v2/templates

ترويسات الطلب

الترويسةالنوعالوصف
X-API-Keystringمفتاح Rasel API. أرسله في كل طلب موثّق ما عدا الويب هوك الوارد. *

جسم الطلب

الحقلالنوعالوصفمثال
namestringالاسم الظاهر أو معرّف القالب الإنجليزي الصغير، حسب المسار. *
categoryenumفئة القالب: whatsapp أو sms أو message أو email. *
subTypeenumالنوع الفرعي مثل utility أو otp أو marketing أو free. *
languagestringلغة قالب ميتا مثل ar أو en. تُستخدم لقوالب واتساب الرسمية.
bodystringمتن قالب واتساب مع عناصر نائبة مرقمة. اربطه بـ bodyParameters عند الإنشاء وvariablesIndexed عند الإرسال.
contentstringفي الإرسال الموحّد: كائن المحتوى (نص أو رمز OTP أو موضوع البريد). في القوالب: متن SMS أو الرسالة، أو HTML/نص البريد.
emailSubjectstringمطلوب عندما تكون الفئة email.
headerTypeenumنوع الهيدر: text أو image أو video أو document.
headerValuestringقيمة الهيدر النصي عندما يكون headerType هو text.
headerAssetIdstringالمعرّف من مسار رفع الوسائط. غير مطلوب إذا أُرسل headerMedia أو file أو headerMediaUrl.
footerstringتذييل واتساب اختياري. لا يُستخدم في قوالب جلسة واتساب ويب.
buttonsjsonأزرار واتساب المضبوطة على القالب.
bodyParametersjsonقيم أمثلة تُرسل إلى ميتا للعناصر النائبة المرقمة في المتن.
otpTypeenumنوع زر OTP في واتساب الرسمي: copy_code أو one_tap أو zero_tap.
addSecurityRecommendationbooleanعند true تضيف ميتا سطر توصية الأمان القياسي لرمز OTP.
codeExpirationMinutesintegerصلاحية رمز OTP بالدقائق (1–90) لقوالب واتساب الرسمية.
otpButtonTextstringتسمية زر نسخ رمز OTP في واتساب الرسمي.
packageNamestringاسم حزمة أندرويد لـ one-tap أو zero-tap.
signatureHashstringبصمة توقيع تطبيق أندرويد لـ one-tap أو zero-tap.
zeroTapTermsAcceptedbooleanيجب أن تكون true عندما يكون otpType هو zero_tap.
providerenumفلتر أو قيمة مزوّد القالب: user_session أو meta أو internal.
templateTargetenumضع user_session لإنشاء قالب جلسة واتساب ويب (نفس provider=user_session).
officialSenderIdstringمعرّف مرسل واتساب الرسمي من /api/v2/official-senders. مرادف sender.officialId. استخدم platform لرقم ميتا الافتراضي عند قائمة القوالب.
creationModeenumاستخدم manual_external_id لربط قالب واتساب رسمي موجود مع providerTemplateId.
providerTemplateIdstringمعرّف قالب واتساب الرسمي / ميتا عند الربط اليدوي.
manualVariableCountintegerعدد متغيرات المتن عند ربط قالب رسمي موجود.

حقول الاستجابة

الحقلالنوعالوصفمثال
successbooleanصحيح عندما ينجح الإجراء، أو عندما ينجح مستلم واحد على الأقل في الدفعة.
dataobjectالبيانات الأساسية في مسارات القوائم وملخص الحساب.
data.templateobjectمرجع القالب (id أو key) واللغة والمتغيرات وهيدر اختياري لهذا الإرسال.
data.template.idstringمعرّف المورد.
data.template.namestringالاسم الظاهر أو معرّف القالب الإنجليزي الصغير، حسب المسار.
data.template.categoryenumفئة القالب: whatsapp أو sms أو message أو email.
data.template.subTypeenumالنوع الفرعي مثل utility أو otp أو marketing أو free.
data.template.statusenumحالة التسليم أو السجل. في الإرسال: sent أو queued أو scheduled. في الموارد الأخرى هي فلتر الحالة أو قيمتها.
data.template.languagestringلغة قالب ميتا مثل ar أو en. تُستخدم لقوالب واتساب الرسمية.
data.template.bodystringمتن قالب واتساب مع عناصر نائبة مرقمة. اربطه بـ bodyParameters عند الإنشاء وvariablesIndexed عند الإرسال.
data.template.bodyParametersjsonقيم أمثلة تُرسل إلى ميتا للعناصر النائبة المرقمة في المتن.
data.template.headerTypeenumنوع الهيدر: text أو image أو video أو document.
data.template.headerValuestringقيمة الهيدر النصي عندما يكون headerType هو text.
data.template.headerAssetIdstringالمعرّف من مسار رفع الوسائط. غير مطلوب إذا أُرسل headerMedia أو file أو headerMediaUrl.
data.template.headerPreviewUrlstringرابط معاينة لوسائط الهيدر المخزّنة.
data.template.allowsHeaderMediaOverridebooleanصحيح عندما يقبل هذا القالب الرسمي هيدر ملف أو رابط لكل إرسال.
data.template.footerstringتذييل واتساب اختياري. لا يُستخدم في قوالب جلسة واتساب ويب.
data.template.buttonsjsonأزرار واتساب المضبوطة على القالب.
data.template.urlButtonVariablesjsonقيم لواحق أزرار الرابط في هذا القالب.
data.template.indexedPlaceholdersstring-listمتغيرات المتن المرقمة، مثل {{1}}.
data.template.contentstringفي الإرسال الموحّد: كائن المحتوى (نص أو رمز OTP أو موضوع البريد). في القوالب: متن SMS أو الرسالة، أو HTML/نص البريد.
data.template.parametersjsonالقيم التجريبية أو المرتبطة لمتغيرات متن القالب.
data.template.providerstringفلتر أو قيمة مزوّد القالب: user_session أو meta أو internal.
data.template.providerTemplateIdstringمعرّف قالب واتساب الرسمي / ميتا عند الربط اليدوي.
data.template.manualProviderenumالمزوّد المسجّل عند ربط هذا القالب يدوياً.
data.template.officialSenderIdstringمعرّف مرسل واتساب الرسمي من /api/v2/official-senders. مرادف sender.officialId. استخدم platform لرقم ميتا الافتراضي عند قائمة القوالب.
data.template.officialSenderobjectرقم واتساب الرسمي المرتبط بهذا القالب.
data.template.officialSender.idstringمعرّف المورد.
data.template.officialSender.scopeenumplatform عند استخدام الرقم الافتراضي، وإلا مرسل محدد.
data.template.officialSender.isPlatformbooleanصحيح عندما يستخدم القالب الرقم الافتراضي للمنصة.
data.template.officialSender.isDefaultbooleanصحيح عندما يكون هذا المرسل أو القالب هو الافتراضي للحساب.
data.template.officialSender.labelstringتسمية المرسل الجاهزة للعرض تجمع الاسم والرقم.
data.template.officialSender.phoneNumberstringالرقم الظاهر الموثّق بصيغة E.164.
data.template.officialSender.displayNamestringالاسم الظاهر لمرسل واتساب الرسمي.
data.template.isPlatformNumberbooleanصحيح عندما يكون القالب مرتبطاً برقم المنصة الرسمي الافتراضي.
data.template.isDefaultbooleanصحيح عندما يكون هذا المرسل أو القالب هو الافتراضي للحساب.
data.template.createdAtstringوقت الإنشاء.
messagestringرسالة نتيجة مقروءة بعد الإنشاء أو الرفع.

رموز الحالة

الحالةالوصف
201تم الإنشاء.
400طلب غير صالح، أو خطأ تحقق، أو المورد لا يمكن استخدامه في هذه الحالة.
401مفتاح API مفقود أو غير صالح.
403الهاتف غير موثّق، أو الصلاحية ناقصة، أو الحساب لا يستطيع تنفيذ هذا الإجراء.
409تعارض، مثل إعادة استخدام مفتاح Idempotency بجسم مختلف، أو جلسة غير جاهزة.
429تم تجاوز حد المعدل، أو وصل عدد محاولات التحقق إلى الحد الأقصى.
503المزوّد غير متاح أو انتهت مهلة الاتصال.

جرّب الطلب

لست مسجلاً، أو رفض الخادم هذه الجلسة. القوائم تبقى فارغة إلى أن تسجّل الدخول أو تكتب مفتاحاً صالحاً، ولن يظهر حساب شخص آخر.

المتغيرات

معرّف مرسل واتساب الرسمي من /api/v2/official-senders. مرادف sender.officialId. استخدم platform لرقم ميتا الافتراضي عند قائمة القوالب.

الاسم الظاهر أو معرّف القالب الإنجليزي الصغير، حسب المسار.

فئة القالب: whatsapp أو sms أو message أو email.

النوع الفرعي مثل utility أو otp أو marketing أو free.

لغة قالب ميتا مثل ar أو en. تُستخدم لقوالب واتساب الرسمية.

متن قالب واتساب مع عناصر نائبة مرقمة. اربطه بـ bodyParameters عند الإنشاء وvariablesIndexed عند الإرسال.

في الإرسال الموحّد: كائن المحتوى (نص أو رمز OTP أو موضوع البريد). في القوالب: متن SMS أو الرسالة، أو HTML/نص البريد.

مطلوب عندما تكون الفئة email.

نوع الهيدر: text أو image أو video أو document.

قيمة الهيدر النصي عندما يكون headerType هو text.

المعرّف من مسار رفع الوسائط. غير مطلوب إذا أُرسل headerMedia أو file أو headerMediaUrl.

تذييل واتساب اختياري. لا يُستخدم في قوالب جلسة واتساب ويب.

أزرار واتساب المضبوطة على القالب.

قيم أمثلة تُرسل إلى ميتا للعناصر النائبة المرقمة في المتن.

نوع زر OTP في واتساب الرسمي: copy_code أو one_tap أو zero_tap.

عند true تضيف ميتا سطر توصية الأمان القياسي لرمز OTP.

صلاحية رمز OTP بالدقائق (1–90) لقوالب واتساب الرسمية.

تسمية زر نسخ رمز OTP في واتساب الرسمي.

اسم حزمة أندرويد لـ one-tap أو zero-tap.

بصمة توقيع تطبيق أندرويد لـ one-tap أو zero-tap.

يجب أن تكون true عندما يكون otpType هو zero_tap.

فلتر أو قيمة مزوّد القالب: user_session أو meta أو internal.

ضع user_session لإنشاء قالب جلسة واتساب ويب (نفس provider=user_session).

استخدم manual_external_id لربط قالب واتساب رسمي موجود مع providerTemplateId.

معرّف قالب واتساب الرسمي / ميتا عند الربط اليدوي.

عدد متغيرات المتن عند ربط قالب رسمي موجود.

الطلب

{  "name": "order_ready_notice",  "category": "whatsapp",  "subType": "utility",  "language": "ar",  "headerType": "image",  "headerAssetId": "ASSET_ID_FROM_MEDIA_UPLOAD",  "body": "مرحباً {{1}}، طلبك رقم {{2}} جاهز للاستلام. الإجمالي {{3}} ل.س.",  "bodyParameters": [    {      "index": 1,      "label": "أحمد"    },    {      "index": 2,      "label": "A-1042"    },    {      "index": 3,      "label": "25000"    }  ],  "footer": "راسل",  "buttons": [    {      "type": "url",      "text": "تتبع الطلب",      "url": "https://example.com/orders/{{1}}",      "urlExample": "https://example.com/orders/A-1042"    },    {      "type": "phone",      "text": "اتصل بنا",      "url": "+963911111111"    }  ]}

الاستجابة

نفّذ طلباً لعرض الاستجابة.