اربط أنظمتك بـ Inboxy: أرسل كل أنواع رسائل واتساب، وأنشئ القوالب والحملات والرسائل المجدولة، وأدر جهات الاتصال والمحادثات والعملاء المحتملين والتذاكر والطلبات والمنتجات والـ Webhooks — بمفتاح API واحد.
مسارات /public ترجع هذا الشكل للنجاح، وباقي المسارات ترجع كائن JSON الخاص بها. كل خطأ على أي مسار بالمفتاح يأتي بالشكل الثاني دائماً، وأي حقول إضافية تكون داخل details.
المفتاح مفقود أو ملغى أو منتهي، أو المسار لا يقبل المفاتيح.
403
INSUFFICIENT_PERMISSIONS
المفتاح لا يملك الصلاحية المطلوبة.
403
SUBSCRIPTION_NOT_ACTIVE · FORBIDDEN
الباقة أو القناة لا تسمح بهذا الإجراء.
404
NOT_FOUND
المورد غير موجود في شركتك.
409
CONFLICT
حالة المورد لا تسمح بهذا الإجراء.
429
TOO_MANY_REQUESTS
60 طلباً في الدقيقة لكل مفتاح.
500
INTERNAL_ERROR
خطأ من جهتنا. أعد المحاولة لاحقاً وأرسل قيمة X-Request-Id للدعم.
الـ Webhooks
سجّل رابطاً عاماً (HTTPS) ليصلك كل ما يحدث في Inboxy لحظة حدوثه: الرسائل على كل القنوات، نقرات الأزرار، إيصالات التسليم والقراءة، التذاكر، العملاء المحتملون، وكل تغيّر في طلبات المتاجر.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/templates" \
-H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/templatestemplates:write
Create a WhatsApp template and submit it to Meta for review
Requires templates:write permission.
Body
namerequired
string
Lowercase letters, digits and underscores. Unique per language.
categoryrequired
MARKETING | UTILITY | AUTHENTICATION
languagerequired
string
Meta language code.
templateType
STANDARD | CAROUSEL | LIMITED_TIME_OFFER
headerType
NONE | TEXT | IMAGE | VIDEO | DOCUMENT
headerText
string
TEXT headers: up to 60 characters, at most one {{1}}.
headerExample
string
TEXT headers: sample for {{1}}. IMAGE/VIDEO/DOCUMENT headers: the media handle from POST /api/v1/whatsapp/media/upload-for-template.
headerMediaUrl
string
Media headers: the public URL of the same file, stored so every send attaches it automatically.
bodyTextrequired
string
Up to 1,024 characters. Variables are {{1}}, {{2}}, … in order.
bodyExamples
string[]
One sample value per body variable, in order. Meta reviews the template with these.
footerText
string
Up to 60 characters, no variables.
buttons
object[]
Up to 10 buttons.
carouselCards
object[]
CAROUSEL templates: 2–10 cards, each with a media header, body and buttons.
ltoText
string
LIMITED_TIME_OFFER: the offer headline.
ltoExpiration
string
LIMITED_TIME_OFFER: when the offer ends.
ltoCouponCode
string
LIMITED_TIME_OFFER: coupon shown on a copy-code button.
authSecurityDisclaimer
boolean
AUTHENTICATION: add "Do not share this code" (default true).
authExpirationMinutes
number
AUTHENTICATION: code lifetime shown to the customer.
variableMapping
object
Required when bodyText has variables: one entry per variable number, saying where the value comes from at send time. Types: `static` (value used as-is), `contact_field` (firstName, lastName, name, email, phone), `custom_field` (a contact custom-field key), `order_field` (last.order.total, last.order.product, last.order.status, last.order.date, last.order.shipping_address, last.order.tracking_number), `web_event_field` (a path in the triggering web event).
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/campaigns" \
-H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/campaignscampaigns:write
Create a campaign
Requires campaigns:write permission.
Body
namerequired
string
templateIdrequired
string
An APPROVED template id (GET /api/v1/whatsapp/templates).
audiencerequired
object
Who receives the campaign. `ALL`: every opted-in contact. `TAGS`: contacts with any of `tagIds`. `CONTACTS`: exactly `contactIds` (max 5,000). `IMPORT_BATCH`: the `batchId` returned by import-audience.
templateComponents
object[]
Meta template components; omit to use the template’s saved variable mapping.
scheduledAt
string
Omit to create a draft; run it with POST /campaigns/:id/run.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}" \
-H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/whatsapp/campaigns/{id}campaigns:write
Update a draft or scheduled campaign
Requires campaigns:write permission.
Path parameters
idrequired
string
Body
name
string
templateId
string
audience
object
Who receives the campaign. `ALL`: every opted-in contact. `TAGS`: contacts with any of `tagIds`. `CONTACTS`: exactly `contactIds` (max 5,000). `IMPORT_BATCH`: the `batchId` returned by import-audience.
Who receives the campaign. `ALL`: every opted-in contact. `TAGS`: contacts with any of `tagIds`. `CONTACTS`: exactly `contactIds` (max 5,000). `IMPORT_BATCH`: the `batchId` returned by import-audience.
The event that starts the workflow — any webhook platform event name, e.g. "whatsapp.message.received", "ecommerce.cart.abandoned", "web_event.received".
Each node: `{ id, type, position?, label?, config?, version? }`. `type` is a registered node type (e.g. "whatsapp.send.text", "time.delay", "ticket.create"); `config` is validated per type on publish. Max 500. Easiest start: export a workflow built in the dashboard (GET …/:workflowId/export) and edit it.
edgesrequired
object[]
Each edge: `{ id, source, target, sourceHandle? }` referencing node ids. Max 1000.
The event that starts the workflow — any webhook platform event name, e.g. "whatsapp.message.received", "ecommerce.cart.abandoned", "web_event.received".
Each node: `{ id, type, position?, label?, config?, version? }`. `type` is a registered node type (e.g. "whatsapp.send.text", "time.delay", "ticket.create"); `config` is validated per type on publish. Max 500. Easiest start: export a workflow built in the dashboard (GET …/:workflowId/export) and edit it.
edgesrequired
object[]
Each edge: `{ id, source, target, sourceHandle? }` referencing node ids. Max 1000.
curl -X GET "https://api.inboxy.chat/api/v1/ecommerce/customers" \
-H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ecommerce/customers/{id}ecommerce:read
Get a store customer with orders
Requires ecommerce:read permission.
Path parameters
idrequired
string
curl -X GET "https://api.inboxy.chat/api/v1/ecommerce/customers/{id}" \
-H "Authorization: Bearer inboxy_your_token"
Webhooks
GET/api/v1/webhooks/eventswebhooks:read
List webhook event types
Requires webhooks:read permission.
curl -X GET "https://api.inboxy.chat/api/v1/webhooks/events" \
-H "Authorization: Bearer inboxy_your_token"
GET/api/v1/webhookswebhooks:read
List webhooks
Requires webhooks:read permission.
curl -X GET "https://api.inboxy.chat/api/v1/webhooks" \
-H "Authorization: Bearer inboxy_your_token"
POST/api/v1/webhookswebhooks:write
Register a webhook
Requires webhooks:write permission.
Body
namerequired
string
Webhook name.
urlrequired
string
HTTPS endpoint to receive events. Must be a public, non-private-network URL.
eventsrequired
string[]
Events to receive: exact names from GET /api/v1/webhooks/events, "*" for everything, or a prefix wildcard such as "whatsapp.*", "ecommerce.order.*" or "ticket.*".
maxRetries
number
Max delivery retry attempts.
fieldExclusions
string[]
Dot-separated payload paths to omit from delivered payloads (max 20).
consecutiveFailureThreshold
number
Consecutive failures (5-1000) before the webhook auto-pauses.
curl -X GET "https://api.inboxy.chat/api/v1/webhooks/{webhookId}" \
-H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/webhooks/{webhookId}webhooks:write
Update a webhook
Requires webhooks:write permission.
Path parameters
webhookIdrequired
string
Body
name
string
Webhook name.
url
string
HTTPS endpoint to receive events.
events
string[]
Events to receive: exact names from GET /api/v1/webhooks/events, "*" for everything, or a prefix wildcard such as "whatsapp.*", "ecommerce.order.*" or "ticket.*".
status
ACTIVE | PAUSED | FAILED
Webhook status.
maxRetries
number
Max delivery retry attempts.
fieldExclusions
string[]
Dot-separated payload paths to omit from delivered payloads (max 20).
consecutiveFailureThreshold
number
Consecutive failures (5-1000) before the webhook auto-pauses.
Get a paginated list of products from the catalog. Requires products:read permission.
Query parameters
page
integer
pageSize
integer
search
string
Search by product name or SKU
categoryId
string
Filter by category ID
isActive
boolean
Filter by active status
curl -X GET "https://api.inboxy.chat/api/v1/public/products" \
-H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/products/{id}products:read
Get product by ID
Get a single product with full details. Requires products:read permission.
Path parameters
idrequired
string
Resource ID
curl -X GET "https://api.inboxy.chat/api/v1/public/products/{id}" \
-H "Authorization: Bearer inboxy_your_token"
Web events
GET/api/v1/web-eventsautomations:read
List web event integrations
Requires automations:read permission.
curl -X GET "https://api.inboxy.chat/api/v1/web-events" \
-H "Authorization: Bearer inboxy_your_token"
POST/api/v1/web-eventsautomations:write
Create an integration your website posts events to
Requires automations:write permission.
Body
namerequired
string
description
string
authTyperequired
HMAC_SHA256 | API_KEY
How your site authenticates when it posts events to POST /api/webhook/web-events/:integrationId — an `X-Webhook-Signature` HMAC-SHA256 of the raw body, or the secret in `X-Api-Key`. The secret is shown in the dashboard.
autoCreateContact
boolean
Create a contact when an event matches none.
contactMapping
object
`{ phoneField, emailField, nameField?, autoCreate, enrichFields?, displayColumns? }` — which JSON fields identify the contact.
curl -X GET "https://api.inboxy.chat/api/v1/web-events/{id}" \
-H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/web-events/{id}automations:write
Update an integration
Requires automations:write permission.
Path parameters
idrequired
string
Body
namerequired
string
description
string
authTyperequired
HMAC_SHA256 | API_KEY
How your site authenticates when it posts events to POST /api/webhook/web-events/:integrationId — an `X-Webhook-Signature` HMAC-SHA256 of the raw body, or the secret in `X-Api-Key`. The secret is shown in the dashboard.
autoCreateContact
boolean
Create a contact when an event matches none.
contactMapping
object
`{ phoneField, emailField, nameField?, autoCreate, enrichFields?, displayColumns? }` — which JSON fields identify the contact.
Connection status of every channel (WhatsApp, Instagram, Messenger, Telegram, website chat)
Aggregate connection state for all channels (WhatsApp, Instagram, Messenger, Telegram, Widget). One request, parallel-fetched. Requires channels:read permission.
curl -X GET "https://api.inboxy.chat/api/v1/me/channels" \
-H "Authorization: Bearer inboxy_your_token"
curl -X GET "https://api.inboxy.chat/api/v1/scheduled-messages" \
-H "Authorization: Bearer inboxy_your_token"
POST/api/v1/scheduled-messagesmessages:send
Schedule a message
Requires messages:send permission.
Body
channelrequired
WHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | SMS
recipientRefrequired
string
Phone number (WhatsApp/SMS) or the channel’s recipient id.
scheduledForrequired
string
conversationId
string
recurrence
NONE | DAILY | WEEKLY | MONTHLY
payloadrequired
object
`{kind:"text", text}` or `{kind:"template", templateName, languageCode, bodyVariables?, components?}`. Outside the 24-hour window WhatsApp needs a template; the response says `window_requires_template`.