Developers

Inboxy API reference

Connect your systems to Inboxy — send every kind of WhatsApp message, create templates, campaigns and scheduled messages, and manage contacts, conversations, leads, tickets, orders, products and webhooks — with one API token.

547 endpoints

Quick start

  1. In the dashboard open API and create a token.
  2. Pick only the scopes your integration needs. The token is shown once — store it safely.
  3. Send it in the Authorization header on every request.
curl "https://api.inboxy.chat/api/v1/public/contacts?pageSize=5" \
  -H "Authorization: Bearer inboxy_your_token"

Send your first WhatsApp message

Outside the 24-hour window WhatsApp needs an approved template (GET /whatsapp/templates); inside it, plain text works. The key needs messages:send.

curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/template" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{"to":"966500000000","templateName":"order_shipped","languageCode":"ar"}'

Scopes

ai:readai:writeanalytics:readautomations:readautomations:writecampaigns:readcampaigns:writechannels:readchannels:writecontacts:readcontacts:writeconversations:readconversations:writeecommerce:readecommerce:writeknowledge:readknowledge:writeleads:readleads:writelibrary:readlibrary:writemeetings:readmeetings:writemessages:readmessages:sendorders:readorders:writeproducts:readproducts:writetasks:readtasks:writeteam:readtemplates:readtemplates:writetickets:readtickets:writewebhooks:readwebhooks:write

Responses & errors

The /public routes return this success shape; every other route returns its own JSON object. Every error on every route called with a token has the second shape, with any extra fields under details.

{
  "success": true,
  "data": [ ... ],
  "meta": { "total": 120, "page": 1, "pageSize": 20, "totalPages": 6 }
}

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_PERMISSIONS",
    "message": "API token lacks required permission: templates:write",
    "details": { }
  }
}
400BAD_REQUEST · VALIDATION_ERRORThe body or query is invalid. The message says which field.
401UNAUTHORIZEDMissing, revoked or expired token, or a route keys cannot call.
403INSUFFICIENT_PERMISSIONSThe token lacks the scope this route needs.
403SUBSCRIPTION_NOT_ACTIVE · FORBIDDENThe plan or channel does not allow this action.
404NOT_FOUNDThe resource is not in your company.
409CONFLICTThe resource is not in a state that allows this (for example a template missing its media).
429TOO_MANY_REQUESTS60 requests per minute per token.
500INTERNAL_ERROROur fault. Retry later; quote the X-Request-Id header to support.

Webhooks

Register a public HTTPS URL and Inboxy calls it the moment something happens: messages on every channel, button taps, delivery and read receipts, tickets, leads, and every order change from connected stores.

curl -X POST "https://api.inboxy.chat/api/v1/webhooks" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{"name":"CRM sync","url":"https://example.com/inboxy","events":["message.received","ecommerce.order.*","ticket.*"]}'
  • Subscribe to exact event names, "*" for everything, or a prefix like "whatsapp.*".
  • Any 2xx within 30 seconds is a success. Otherwise we retry 3 times by default (up to 9) with exponential backoff starting at 1 second.
  • After 50 consecutive failures (configurable) the webhook pauses and your admins are notified. Redeliver the last 7 days of failures with /replay.
  • A retry can deliver the same event twice — deduplicate on the payload id.

Payload

{
  "id": "cmfk2x9q10001abcd",
  "event": "ecommerce.order.shipped",
  "timestamp": "2026-09-15T18:42:10.512Z",
  "data": {
    "source": "orders",
    "occurredAt": "2026-09-15T18:42:09.000Z",
    "channelId": null,
    "conversationId": "cmfk1...",
    "contactId": "cmfk0...",
    "messageId": null,
    "externalMessageId": null,
    "payload": { "orderId": "...", "platform": "SHOPIFY", "status": "shipped" }
  }
}

Verify the signature

Every request carries X-Inboxy-Timestamp and X-Inboxy-Signature = sha256=HMAC_SHA256(secret, "timestamp.body"). Get the secret from GET /webhooks/:id/secret.

import crypto from 'node:crypto';

// Use the raw request body — not a re-serialized object.
export function isFromInboxy(rawBody, headers, secret) {
  const timestamp = headers['x-inboxy-timestamp'];
  const received = headers['x-inboxy-signature'] || '';
  if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false; // 5-minute window
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(`${timestamp}.${rawBody}`)
    .digest('hex');
  return received.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));
}

Events (77)

message.*
message.receivedWhen a new message is received
message.sentWhen a message is sent
message.status_updatedWhen an outbound message is delivered, read or fails
contact.*
contact.createdWhen a new contact is created
contact.updatedWhen a contact is updated
conversation.*
conversation.openedWhen a conversation is opened
conversation.closedWhen a conversation is closed/resolved
conversation.assignedWhen a conversation is assigned to an agent
conversation.createdA new conversation starts on any channel
conversation.resolvedA conversation is resolved or closed (by an agent, AI or automation)
order.*
order.createdWhen an order is created
order.updatedWhen an order status changes
order.completedWhen an order is completed
order.cancelledWhen an order is cancelled
campaign.*
campaign.startedWhen a campaign starts running
campaign.completedWhen a campaign finishes
agent.*
agent.responseWhen an AI agent responds
whatsapp.*
whatsapp.message.receivedWhatsApp: a text message arrives
whatsapp.media.receivedWhatsApp: an image, video, audio, document or sticker arrives
whatsapp.voice.receivedWhatsApp: a voice note arrives
whatsapp.location.receivedWhatsApp: the customer shares a location
whatsapp.contact_card.receivedWhatsApp: the customer shares a contact card
whatsapp.reaction.receivedWhatsApp: the customer reacts to a message
whatsapp.button.clickedWhatsApp: the customer taps a reply button
whatsapp.list.selectedWhatsApp: the customer picks a list row
whatsapp.template.replyWhatsApp: the customer taps a template quick-reply button
whatsapp.flow.completedWhatsApp: the customer submits a WhatsApp Flow
whatsapp.order.placedWhatsApp: the customer sends a cart from the catalog
whatsapp.referral.receivedWhatsApp: a conversation starts from a click-to-WhatsApp ad
whatsapp.message.status_changedWhatsApp: an outbound message is sent, delivered, read or fails
instagram.*
instagram.message.receivedInstagram: a DM arrives
instagram.media.receivedInstagram: a DM with media arrives
instagram.reaction.receivedInstagram: the customer reacts to a message
instagram.button.clickedInstagram: the customer taps a button or quick reply
instagram.story.replyInstagram: the customer replies to your story
instagram.story.mentionInstagram: the customer mentions you in their story
instagram.referral.receivedInstagram: a conversation starts from an ad or link
instagram.first.inboundInstagram: a customer's first message ever
messenger.*
messenger.message.receivedMessenger: a message arrives
messenger.media.receivedMessenger: a message with media arrives
messenger.voice.receivedMessenger: a voice message arrives
messenger.location.receivedMessenger: the customer shares a location
messenger.reaction.receivedMessenger: the customer reacts to a message
messenger.button.clickedMessenger: the customer taps a button or quick reply
messenger.template.replyMessenger: the customer answers a template
messenger.referral.receivedMessenger: a conversation starts from an ad or m.me link
messenger.first.inboundMessenger: a customer's first message ever
telegram.*
telegram.message.receivedTelegram: a message arrives
telegram.media.receivedTelegram: a message with media arrives
telegram.location.receivedTelegram: the customer shares a location
telegram.command.receivedTelegram: the customer sends a /command
telegram.button.clickedTelegram: the customer taps an inline button
telegram.first.inboundTelegram: a customer's first message ever
widget.*
widget.chat.openedWebsite chat: a visitor opens the chat
widget.message.receivedWebsite chat: a visitor sends a message
widget.media.receivedWebsite chat: a visitor sends a file
widget.button.clickedWebsite chat: a visitor taps a button
widget.form.submittedWebsite chat: a visitor submits a form
widget.first.inboundWebsite chat: a visitor's first message ever
lead.*
lead.createdA lead is created
ticket.*
ticket.createdA support ticket is created
ticket.assignedA ticket is assigned
ticket.status_changedA ticket changes status
task.*
task.createdA task is created
task.assignedA task is assigned
task.completedA task is completed
web_event.*
web_event.receivedYour website sends a tracked event (web events API)
ecommerce.*
ecommerce.order.createdStore: a new order is placed
ecommerce.order.confirmedStore: an order is confirmed
ecommerce.order.paidStore: an order is paid
ecommerce.order.shippedStore: an order ships
ecommerce.order.deliveredStore: an order is delivered
ecommerce.order.cancelledStore: an order is cancelled
ecommerce.order.refundedStore: an order is refunded
ecommerce.order.status_changedStore: any other order status change
ecommerce.cart.abandonedStore: a cart is abandoned
ecommerce.customer.createdStore: a new customer registers

Contacts

GET/api/v1/contactscontacts:read

List contacts

Requires contacts:read permission.

Query parameters

searchstringName, phone or email.
tagIdsstringComma-separated tag ids.
hasPhoneboolean
hasEmailboolean
hasOrdersboolean
channelTypestringChannel the contact came from.
sourcestringComma-separated sources (MANUAL, WHATSAPP, SHOPIFY, …).
statusstringComma-separated: ACTIVE, INACTIVE, ARCHIVED.
labelstringComma-separated: HOT_LEAD, WARM_LEAD, COLD_LEAD, FOLLOW_UP, VIP, CHURNED, DO_NOT_CONTACT.
lifecycleStagestringComma-separated: LEAD, SUBSCRIBER, OPPORTUNITY, CUSTOMER, REPEAT_CUSTOMER, EVANGELIST.
assignedAgentIdstring
minTotalSpentnumber
maxTotalSpentnumber
lastInteractionAfterstringISO date-time.
lastInteractionBeforestringISO date-time.
createdAfterstringISO date-time.
createdBeforestringISO date-time.
pageintegerPage number (default 1).
limitintegerPage size.
sortByname | createdAt | updatedAt
sortOrderasc | descSort direction.
curl -X GET "https://api.inboxy.chat/api/v1/contacts" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/contactscontacts:write

Create a contact

Requires contacts:write permission.

Body

namerequiredstringContact display name.
firstNamestringFirst name.
lastNamestringLast name.
phonestringPhone number, digits only (no leading +).
emailstringEmail address.
avatarstringAvatar image URL.
externalIdstringID of this contact in an external system.
customFieldsobjectArbitrary key/value custom fields.
tagIdsstring[]Tag IDs to attach to the contact.
curl -X POST "https://api.inboxy.chat/api/v1/contacts" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ahmed Al-Otaibi",
  "firstName": "firstName",
  "lastName": "lastName",
  "phone": "966500000000",
  "email": "ahmed@example.com",
  "avatar": "avatar",
  "externalId": "externalId",
  "customFields": {},
  "tagIds": [
    "tagIds"
  ]
}'
POST/api/v1/contacts/find-or-createcontacts:write

Find a contact or create it

Requires contacts:write permission.

Body

phonerequiredstringPhone number to search for, or create if no contact matches.
namestringName to use if a new contact is created. Defaults to the phone number.
curl -X POST "https://api.inboxy.chat/api/v1/contacts/find-or-create" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "966500000000",
  "name": "Ahmed Al-Otaibi"
}'
GET/api/v1/contacts/custom-field-keyscontacts:read

List custom field keys

Requires contacts:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/contacts/custom-field-keys" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/contacts/{id}contacts:read

Get a contact

Requires contacts:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/contacts/{id}contacts:write

Update a contact

Requires contacts:write permission.

Path parameters

idrequiredstring

Body

namestringContact display name.
firstNamestringFirst name.
lastNamestringLast name.
phonestringPhone number, digits only (no leading +).
emailstringEmail address.
avatarstringAvatar image URL.
externalIdstringID of this contact in an external system.
customFieldsobjectArbitrary key/value custom fields.
tagIdsstring[]Tag IDs to attach to the contact.
labelHOT_LEAD | WARM_LEAD | COLD_LEAD | FOLLOW_UP | VIP | CHURNED | DO_NOT_CONTACTCDP label, or null to clear.
statusACTIVE | INACTIVE | ARCHIVEDContact status.
lifecycleStageLEAD | SUBSCRIBER | OPPORTUNITY | CUSTOMER | REPEAT_CUSTOMER | EVANGELISTCDP lifecycle stage.
assignedAgentIdstringUser ID of the assigned agent, or null to unassign.
notesstringFree-text notes on the contact.
curl -X PUT "https://api.inboxy.chat/api/v1/contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ahmed Al-Otaibi",
  "firstName": "firstName",
  "lastName": "lastName",
  "phone": "966500000000",
  "email": "ahmed@example.com",
  "avatar": "avatar",
  "externalId": "externalId",
  "customFields": {},
  "tagIds": [
    "tagIds"
  ],
  "label": "HOT_LEAD",
  "status": "ACTIVE",
  "lifecycleStage": "LEAD",
  "assignedAgentId": "assignedAgentId",
  "notes": "notes"
}'
DELETE/api/v1/contacts/{id}contacts:write

Delete a contact

Requires contacts:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/contacts/{id}/tags/{tagId}contacts:write

Add a tag to a contact

Requires contacts:write permission.

Path parameters

idrequiredstring
tagIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/contacts/{id}/tags/{tagId}" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/contacts/{id}/tags/{tagId}contacts:write

Remove a tag from a contact

Requires contacts:write permission.

Path parameters

idrequiredstring
tagIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/contacts/{id}/tags/{tagId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/contacts/tags/allcontacts:read

List tags

Requires contacts:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/contacts/tags/all" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/contacts/tagscontacts:write

Create a tag

Requires contacts:write permission.

Body

namerequiredstringTag name, max 100 characters. Letters, numbers, spaces and - _ . , & ( ) # only.
colorstringHex color for the tag.
curl -X POST "https://api.inboxy.chat/api/v1/contacts/tags" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "VIP",
  "color": "#3bc1a8"
}'
PUT/api/v1/contacts/tags/{tagId}contacts:write

Update a tag

Requires contacts:write permission.

Path parameters

tagIdrequiredstring

Body

namestringTag name.
colorstringHex color for the tag.
curl -X PUT "https://api.inboxy.chat/api/v1/contacts/tags/{tagId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "color": "color"
}'
DELETE/api/v1/contacts/tags/{tagId}contacts:write

Delete a tag

Requires contacts:write permission.

Path parameters

tagIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/contacts/tags/{tagId}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/contacts/{id}/statuscontacts:write

Set contact status

Requires contacts:write permission.

Path parameters

idrequiredstring

Body

statusrequiredACTIVE | INACTIVE | ARCHIVEDNew contact status.
curl -X PATCH "https://api.inboxy.chat/api/v1/contacts/{id}/status" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "ACTIVE"
}'
PATCH/api/v1/contacts/{id}/stagecontacts:write

Set contact lifecycle stage

Requires contacts:write permission.

Path parameters

idrequiredstring

Body

lifecycleStagerequiredLEAD | SUBSCRIBER | OPPORTUNITY | CUSTOMER | REPEAT_CUSTOMER | EVANGELISTNew lifecycle stage.
curl -X PATCH "https://api.inboxy.chat/api/v1/contacts/{id}/stage" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "lifecycleStage": "CUSTOMER"
}'
PATCH/api/v1/contacts/{id}/assigncontacts:write

Assign a contact to an agent

Requires contacts:write permission.

Path parameters

idrequiredstring

Body

agentIdstringUser ID to assign the contact to, or null to unassign.
curl -X PATCH "https://api.inboxy.chat/api/v1/contacts/{id}/assign" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "agentId": "agentId"
}'
POST/api/v1/contacts/{id}/notecontacts:write

Add a note to a contact

Requires contacts:write permission.

Path parameters

idrequiredstring

Body

noterequiredstringNote text to append to the contact.
curl -X POST "https://api.inboxy.chat/api/v1/contacts/{id}/note" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "note": "note"
}'
GET/api/v1/contacts/{id}/timelinecontacts:read

Get a contact timeline

Requires contacts:read permission.

Path parameters

idrequiredstring

Query parameters

limitinteger
offsetintegerRows to skip (default 0).
typesstringComma-separated activity types, e.g. MESSAGE_SENT,TAG_ADDED.
curl -X GET "https://api.inboxy.chat/api/v1/contacts/{id}/timeline" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/contacts/bulk/tagscontacts:write

Tag many contacts

Requires contacts:write permission.

Body

contactIdsrequiredstring[]Contact IDs to update.
tagIdsrequiredstring[]Tag IDs to add or remove.
actionrequiredadd | removeWhether to add or remove the tags.
curl -X POST "https://api.inboxy.chat/api/v1/contacts/bulk/tags" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "contactIds"
  ],
  "tagIds": [
    "tagIds"
  ],
  "action": "add"
}'
GET/api/v1/public/contactscontacts:read

List contacts

Get a paginated list of contacts. Requires contacts:read permission.

Query parameters

pageinteger
pageSizeinteger
searchstringSearch by name, phone, or email
tagIdsstringComma-separated tag IDs
statusstring
createdAfterstring
createdBeforestring
curl -X GET "https://api.inboxy.chat/api/v1/public/contacts" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/contacts/{id}contacts:read

Get contact by ID

Get a single contact with tags and conversation count. Requires contacts:read permission.

Path parameters

idrequiredstringResource ID
curl -X GET "https://api.inboxy.chat/api/v1/public/contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token"

Messages

POST/api/v1/whatsapp/messages/catalog-cardmessages:send

Send an Inboxy product or service card

Requires messages:send permission.

Body

conversationIdrequiredstringWhatsApp conversation to send into.
itemTyperequiredproduct | service
itemIdrequiredstringProduct or service id.
languagerequiredar | en
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/catalog-card" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "conversationId": "conversationId",
  "itemType": "product",
  "itemId": "itemId",
  "language": "ar"
}'
POST/api/v1/whatsapp/media/uploadmessages:send

Upload media to WhatsApp and get a media id for sends

Requires messages:send permission.

Body

mediaTyperequiredimage | video | audio | document
mediaUrlstring
base64string
filenamestring
mimeTypestring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/media/upload" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "mediaType": "image",
  "mediaUrl": "mediaUrl",
  "base64": "base64",
  "filename": "filename",
  "mimeType": "mimeType"
}'
POST/api/v1/whatsapp/messages/textmessages:send

Send a WhatsApp text message

Requires messages:send permission.

Body

torequiredstring
bodyrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/text" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "body": "body",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/templatemessages:send

Send an approved WhatsApp template

Requires messages:send permission.

Body

torequiredstring
templateNamerequiredstring
languageCoderequiredstring
componentsstring[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/template" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "templateName": "templateName",
  "languageCode": "languageCode",
  "components": [],
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/buttonsmessages:send

Send a WhatsApp reply-buttons message

Requires messages:send permission.

Body

torequiredstring
bodyrequiredstring
buttonsrequiredobject[]
headerstring
headerImagestring
footerstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/buttons" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "body": "body",
  "buttons": [
    {
      "id": "id",
      "title": "title"
    }
  ],
  "header": "header",
  "headerImage": "headerImage",
  "footer": "footer",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/listmessages:send

Send a WhatsApp list message

Requires messages:send permission.

Body

torequiredstring
bodyrequiredstring
buttonTextrequiredstring
sectionsrequiredstring[]
headerstring
footerstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/list" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "body": "body",
  "buttonText": "buttonText",
  "sections": [],
  "header": "header",
  "footer": "footer",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/cta-urlmessages:send

Send a WhatsApp call-to-action URL button

Requires messages:send permission.

Body

torequiredstring
bodyrequiredstring
displayTextrequiredstring
urlrequiredstring
headerstring
headerImagestring
footerstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/cta-url" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "body": "body",
  "displayText": "displayText",
  "url": "url",
  "header": "header",
  "headerImage": "headerImage",
  "footer": "footer",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/location-requestmessages:send

Ask the customer to share their location

Requires messages:send permission.

Body

torequiredstring
bodyrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/location-request" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "body": "body",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/catalogmessages:send

Send the WhatsApp catalog

Requires messages:send permission.

Body

torequiredstring
bodyrequiredstring
footerstring
thumbnailProductRetailerIdstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/catalog" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "body": "body",
  "footer": "footer",
  "thumbnailProductRetailerId": "thumbnailProductRetailerId",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/productmessages:send

Send one catalog product

Requires messages:send permission.

Body

torequiredstring
catalogIdrequiredstring
productRetailerIdrequiredstring
bodystring
footerstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/product" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "catalogId": "catalogId",
  "productRetailerId": "productRetailerId",
  "body": "body",
  "footer": "footer",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/product-listmessages:send

Send a multi-product message

Requires messages:send permission.

Body

torequiredstring
headerrequiredstring
bodyrequiredstring
catalogIdrequiredstring
sectionsrequiredobject[]
footerstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/product-list" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "header": "header",
  "body": "body",
  "catalogId": "catalogId",
  "sections": [
    {
      "title": "title",
      "productRetailerIds": [
        "productRetailerIds"
      ]
    }
  ],
  "footer": "footer",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/mediamessages:send

Send WhatsApp media (image, video, audio, document)

Requires messages:send permission.

Body

torequiredstring
mediaTyperequiredimage | video | audio | document
mediaUrlrequiredstring
captionstring
filenamestring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/media" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "mediaType": "image",
  "mediaUrl": "mediaUrl",
  "caption": "caption",
  "filename": "filename",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/locationmessages:send

Send a location pin

Requires messages:send permission.

Body

torequiredstring
latituderequirednumber
longituderequirednumber
namestring
addressstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/location" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "latitude": 1,
  "longitude": 1,
  "name": "name",
  "address": "address",
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/contactsmessages:send

Send contact cards

Requires messages:send permission.

Body

torequiredstring
contactsstring[]
contactobject
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/contacts" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "contacts": [],
  "contact": {},
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/contactmessages:send

Send one contact card

Requires messages:send permission.

Body

torequiredstring
contactsstring[]
contactobject
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/contact" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "contacts": [],
  "contact": {},
  "conversationId": "conversationId"
}'
POST/api/v1/whatsapp/messages/{messageId}/readmessages:send

Mark an inbound WhatsApp message as read

Requires messages:send permission.

Path parameters

messageIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/messages/{messageId}/read" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/inbox/conversations/{conversationId}/messagesmessages:send

Reply in a conversation on any channel

Requires messages:send permission.

Path parameters

conversationIdrequiredstring

Body

contentstringMessage text. Required when type is "text"; optional caption for media types.
typetext | image | video | audio | documentMessage type. Defaults to "text".
fileDatastringBase64-encoded file content. Required when type is image, video, audio or document.
fileNamestringOriginal file name for media messages.
mimeTypestringMIME type of the media file.
curl -X POST "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/messages" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "مرحباً، كيف يمكنني مساعدتك؟",
  "type": "text",
  "fileData": "fileData",
  "fileName": "invoice.pdf",
  "mimeType": "image/jpeg"
}'
POST/api/v1/interactive-messages/send-savedmessages:send

Send a saved interactive message into a conversation

Requires messages:send permission.

Body

conversationIdrequiredstring
messageIdrequiredstringId of a saved interactive message (GET /api/v1/interactive-messages).
channelrequiredWHATSAPP | INSTAGRAM | MESSENGER | WEB
curl -X POST "https://api.inboxy.chat/api/v1/interactive-messages/send-saved" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "conversationId": "conversationId",
  "messageId": "messageId",
  "channel": "WHATSAPP"
}'
GET/api/v1/public/conversations/{id}/messagesmessages:read

List messages in a conversation

Get paginated messages for a conversation in chronological order. Requires messages:read permission.

Path parameters

idrequiredstringResource ID

Query parameters

pageinteger
pageSizeinteger
beforestringFetch messages before this date (cursor pagination)
curl -X GET "https://api.inboxy.chat/api/v1/public/conversations/{id}/messages" \
  -H "Authorization: Bearer inboxy_your_token"

Templates

POST/api/v1/whatsapp/media/upload-for-templatetemplates:write

Upload a template header file and get its media handle

Requires templates:write permission.

Body

mediaTyperequiredimage | video | document
mediaUrlstringPublic URL to fetch. Send this or base64.
base64stringFile content, base64-encoded.
filenamestring
mimeTypestring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/media/upload-for-template" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "mediaType": "image",
  "mediaUrl": "https://cdn.example.com/banner.jpg",
  "base64": "base64",
  "filename": "banner.jpg",
  "mimeType": "image/jpeg"
}'
GET/api/v1/whatsapp/templatestemplates:read

List WhatsApp templates

Requires templates:read permission.

Query parameters

statusPENDING | APPROVED | REJECTED | PAUSED | DISABLED
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

namerequiredstringLowercase letters, digits and underscores. Unique per language.
categoryrequiredMARKETING | UTILITY | AUTHENTICATION
languagerequiredstringMeta language code.
templateTypeSTANDARD | CAROUSEL | LIMITED_TIME_OFFER
headerTypeNONE | TEXT | IMAGE | VIDEO | DOCUMENT
headerTextstringTEXT headers: up to 60 characters, at most one {{1}}.
headerExamplestringTEXT headers: sample for {{1}}. IMAGE/VIDEO/DOCUMENT headers: the media handle from POST /api/v1/whatsapp/media/upload-for-template.
headerMediaUrlstringMedia headers: the public URL of the same file, stored so every send attaches it automatically.
bodyTextrequiredstringUp to 1,024 characters. Variables are {{1}}, {{2}}, … in order.
bodyExamplesstring[]One sample value per body variable, in order. Meta reviews the template with these.
footerTextstringUp to 60 characters, no variables.
buttonsobject[]Up to 10 buttons.
carouselCardsobject[]CAROUSEL templates: 2–10 cards, each with a media header, body and buttons.
ltoTextstringLIMITED_TIME_OFFER: the offer headline.
ltoExpirationstringLIMITED_TIME_OFFER: when the offer ends.
ltoCouponCodestringLIMITED_TIME_OFFER: coupon shown on a copy-code button.
authSecurityDisclaimerbooleanAUTHENTICATION: add "Do not share this code" (default true).
authExpirationMinutesnumberAUTHENTICATION: code lifetime shown to the customer.
variableMappingobjectRequired 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 POST "https://api.inboxy.chat/api/v1/whatsapp/templates" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "order_shipped",
  "category": "UTILITY",
  "language": "ar",
  "templateType": "STANDARD",
  "headerType": "TEXT",
  "headerText": "Your order is on its way",
  "headerExample": "headerExample",
  "headerMediaUrl": "headerMediaUrl",
  "bodyText": "مرحباً {{1}}، طلبك رقم {{2}} في الطريق إليك.",
  "bodyExamples": [
    "سارة",
    "10234"
  ],
  "footerText": "Inboxy Store",
  "buttons": [
    {
      "type": "QUICK_REPLY",
      "text": "Track order",
      "url": "https://shop.example.com/orders/{{1}}",
      "urlExample": "urlExample",
      "phoneNumber": "+966500000000",
      "couponCode": "couponCode",
      "otpType": "COPY_CODE",
      "flowId": "flowId",
      "flowAction": "navigate"
    }
  ],
  "carouselCards": [
    {
      "headerMediaHandle": "headerMediaHandle",
      "headerMediaUrl": "headerMediaUrl",
      "headerFormat": "IMAGE",
      "bodyText": "bodyText",
      "bodyExamples": [
        "bodyExamples"
      ],
      "buttons": [
        {
          "type": "QUICK_REPLY",
          "text": "Track order",
          "url": "https://shop.example.com/orders/{{1}}",
          "urlExample": "urlExample",
          "phoneNumber": "+966500000000",
          "couponCode": "couponCode",
          "otpType": "COPY_CODE",
          "flowId": "flowId",
          "flowAction": "navigate"
        }
      ]
    }
  ],
  "ltoText": "ltoText",
  "ltoExpiration": "2026-01-01T00:00:00.000Z",
  "ltoCouponCode": "ltoCouponCode",
  "authSecurityDisclaimer": true,
  "authExpirationMinutes": 1,
  "variableMapping": {
    "1": {
      "type": "contact_field",
      "value": "firstName"
    },
    "2": {
      "type": "order_field",
      "value": "last.order.tracking_number"
    }
  }
}'
GET/api/v1/whatsapp/templates/{templateId}templates:read

Get a WhatsApp template

Requires templates:read permission.

Path parameters

templateIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/templates/{templateId}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/whatsapp/templates/{templateId}/mediatemplates:write

Attach the media every send of this template uses

Requires templates:write permission.

Path parameters

templateIdrequiredstring

Body

headerMediaIdstringMedia id (from POST /api/v1/whatsapp/media/upload) to attach as the header on every send.
carouselCardsobject[]
curl -X PATCH "https://api.inboxy.chat/api/v1/whatsapp/templates/{templateId}/media" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "headerMediaId": "headerMediaId",
  "carouselCards": [
    {
      "index": 1,
      "mediaId": "mediaId"
    }
  ]
}'
POST/api/v1/whatsapp/templates/synctemplates:write

Sync templates and their approval status from Meta

Requires templates:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/templates/sync" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/whatsapp/templates/{templateName}templates:write

Delete a WhatsApp template (all languages) from Meta and Inboxy

Requires templates:write permission.

Path parameters

templateNamerequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/whatsapp/templates/{templateName}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/templates/{templateName}/usagetemplates:read

Delivery ledger for a template

Requires templates:read permission.

Path parameters

templateNamerequiredstring

Query parameters

languagestringOne language variant of the template.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/templates/{templateName}/usage" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/whatsapp/templates/{templateName}/mappingtemplates:write

Change where template variables get their values

Requires templates:write permission.

Path parameters

templateNamerequiredstring

Body

variableMappingrequiredobjectSame shape as variableMapping on create. Stored in Inboxy only; Meta is not called.
curl -X PATCH "https://api.inboxy.chat/api/v1/whatsapp/templates/{templateName}/mapping" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "variableMapping": {
    "1": {
      "type": "contact_field",
      "value": "firstName"
    }
  }
}'

WhatsApp analytics

GET/api/v1/whatsapp/statsanalytics:read

WhatsApp message and conversation totals

Requires analytics:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/summaryanalytics:read

WhatsApp analytics summary

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/summary" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/messagesanalytics:read

Message volume

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/messages" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/response-timesanalytics:read

Response times

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/response-times" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/templatesanalytics:read

Template performance

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
limitintegerMax templates (default 10).
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/templates" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/conversationsanalytics:read

Conversation metrics

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/conversations" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/agentsanalytics:read

Agent performance

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
limitintegerMax agents (default 10).
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/agents" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/analytics/channelsanalytics:read

Channel breakdown

Requires analytics:read permission.

Query parameters

startDatestringISO date; use with endDate for an explicit range.
endDatestringISO date; use with startDate.
daysintegerTrailing N-day range, ignored when startDate and endDate are given. No range = all time.
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/analytics/channels" \
  -H "Authorization: Bearer inboxy_your_token"

Campaigns

GET/api/v1/whatsapp/campaignscampaigns:read

List WhatsApp campaigns

Requires campaigns:read permission.

Query parameters

statusDRAFT | SCHEDULED | RUNNING | PAUSED | COMPLETED | CANCELLED | FAILEDMust be one of the listed values.
searchstringCampaign name.
limitintegerMax rows (default 50).
offsetintegerRows to skip (default 0).
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

namerequiredstring
templateIdrequiredstringAn APPROVED template id (GET /api/v1/whatsapp/templates).
audiencerequiredobjectWho 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.
templateComponentsobject[]Meta template components; omit to use the template’s saved variable mapping.
scheduledAtstringOmit to create a draft; run it with POST /campaigns/:id/run.
messagesPerSecondnumber1–20.
messagesPerDaynumberDaily cap; the send spreads across days.
aiEnabledbooleanLet the AI agent answer replies to this campaign.
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ramadan offer",
  "templateId": "templateId",
  "audience": {
    "type": "TAGS",
    "tagIds": [
      "tagIds"
    ],
    "contactIds": [
      "contactIds"
    ],
    "batchId": "batchId"
  },
  "templateComponents": [
    {}
  ],
  "scheduledAt": "2026-01-01T00:00:00.000Z",
  "messagesPerSecond": 10,
  "messagesPerDay": 1,
  "aiEnabled": true
}'
GET/api/v1/whatsapp/campaigns/{id}campaigns:read

Get a campaign

Requires campaigns:read permission.

Path parameters

idrequiredstring
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

idrequiredstring

Body

namestring
templateIdstring
audienceobjectWho 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.
templateComponentsobject[]
scheduledAtstring | null
autoRetryboolean
maxRetriesnumber
curl -X PUT "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "templateId": "templateId",
  "audience": {
    "type": "TAGS",
    "tagIds": [
      "tagIds"
    ],
    "contactIds": [
      "contactIds"
    ],
    "batchId": "batchId"
  },
  "templateComponents": [
    {}
  ],
  "scheduledAt": "2026-01-01T00:00:00.000Z",
  "autoRetry": true,
  "maxRetries": 1
}'
DELETE/api/v1/whatsapp/campaigns/{id}campaigns:write

Delete a campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/campaigns/{id}/runcampaigns:write

Start sending a campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/run" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/campaigns/{id}/cancelcampaigns:write

Cancel a campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/cancel" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/campaigns/{id}/pausecampaigns:write

Pause a running campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/pause" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/campaigns/{id}/resumecampaigns:write

Resume a paused campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/resume" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/campaigns/{id}/recipientscampaigns:read

List campaign recipients

Requires campaigns:read permission.

Path parameters

idrequiredstring

Query parameters

statusPENDING | CLAIMED | SKIPPED | SENT | DELIVERED | READ | FAILED | REPLIEDMust be one of the listed values.
limitintegerMax rows (default 50).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/recipients" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/campaigns/{id}/detailscampaigns:read

Get campaign details and counts

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/details" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/whatsapp/campaigns/previewcampaigns:read

Preview audience size and cost without creating

Requires campaigns:read permission.

Body

templateIdrequiredstring
audiencerequiredobjectWho 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.
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/preview" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "templateId": "templateId",
  "audience": {
    "type": "TAGS",
    "tagIds": [
      "tagIds"
    ],
    "contactIds": [
      "contactIds"
    ],
    "batchId": "batchId"
  }
}'
POST/api/v1/whatsapp/campaigns/import-audiencecampaigns:write

Import an audience (matches or creates contacts)

Requires campaigns:write permission.

Body

datarequiredobject[]
createMissingbooleanCreate contacts that do not exist yet (default true).
defaultCountryCodestring
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/import-audience" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "data": [
    {
      "name": "Sara",
      "phone": "966500000000",
      "email": "customer@example.com",
      "tags": "tags"
    }
  ],
  "createMissing": true,
  "defaultCountryCode": "966"
}'
POST/api/v1/whatsapp/campaigns/{id}/retrycampaigns:write

Retry failed recipients

Requires campaigns:write permission.

Path parameters

idrequiredstring

Body

recipientIdsstring[]
failureCategoriesstring[]
curl -X POST "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/retry" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientIds": [
    "recipientIds"
  ],
  "failureCategories": [
    "failureCategories"
  ]
}'
GET/api/v1/whatsapp/campaigns/{id}/analyticscampaigns:read

Get campaign link clicks

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/analytics" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/whatsapp/campaigns/{id}/timeseriescampaigns:read

Get deliveries over time

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/whatsapp/campaigns/{id}/timeseries" \
  -H "Authorization: Bearer inboxy_your_token"

Instagram

POST/api/v1/instagram/sendmessages:send

Send an Instagram DM

Requires messages:send permission.

Body

torequiredstring
contentrequiredstring
conversationIdstring
mediaTypeimage | video | audio | file
mediaUrlstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/send" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "content": "content",
  "conversationId": "conversationId",
  "mediaType": "image",
  "mediaUrl": "mediaUrl"
}'
POST/api/v1/instagram/send/quick-repliesmessages:send

Send Instagram quick replies

Requires messages:send permission.

Body

torequiredstring
textrequiredstring
quickRepliesrequiredobject[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/send/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "text": "text",
  "quickReplies": [
    {
      "title": "title",
      "payload": "payload"
    }
  ],
  "conversationId": "conversationId"
}'
POST/api/v1/instagram/send/carouselmessages:send

Send an Instagram carousel

Requires messages:send permission.

Body

torequiredstring
elementsrequiredobject[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/send/carousel" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "elements": [
    {
      "title": "title",
      "subtitle": "subtitle",
      "image_url": "image_url",
      "default_action": {
        "type": "type",
        "url": "url"
      },
      "buttons": []
    }
  ],
  "conversationId": "conversationId"
}'
POST/api/v1/instagram/send/buttonsmessages:send

Send an Instagram DM with buttons

Requires messages:send permission.

Body

torequiredstring
textrequiredstring
buttonsrequiredobject[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/send/buttons" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "text": "text",
  "buttons": [
    {
      "type": "type",
      "title": "title",
      "url": "url",
      "payload": "payload"
    }
  ],
  "conversationId": "conversationId"
}'
POST/api/v1/instagram/send/media-templatemessages:send

Send an Instagram media template

Requires messages:send permission.

Body

torequiredstring
mediaTyperequiredimage | video
mediaUrlrequiredstring
buttonsstring[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/send/media-template" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "966500000000",
  "mediaType": "image",
  "mediaUrl": "mediaUrl",
  "buttons": [],
  "conversationId": "conversationId"
}'
GET/api/v1/instagram/conversations/{conversationId}/windowconversations:read

Check the Instagram messaging window

Requires conversations:read permission.

Path parameters

conversationIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/conversations/{conversationId}/window" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/statsanalytics:read

Instagram message totals

Requires analytics:read permission.

Query parameters

periodtoday | 7days | monthReporting window (default month).
curl -X GET "https://api.inboxy.chat/api/v1/instagram/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/interactive-messageslibrary:read

List Instagram interactive messages

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/instagram/interactive-messages" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/interactive-messageslibrary:write

Save an Instagram interactive message

Requires library:write permission.

Body

namerequiredstring
typerequiredbuttons | quick_replies
configrequiredobject
curl -X POST "https://api.inboxy.chat/api/v1/instagram/interactive-messages" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "type": "buttons",
  "config": {}
}'
GET/api/v1/instagram/interactive-messages/{id}library:read

Get an Instagram interactive message

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/instagram/interactive-messages/{id}library:write

Update an Instagram interactive message

Requires library:write permission.

Path parameters

idrequiredstring

Body

namerequiredstring
typerequiredbuttons | quick_replies
configrequiredobject
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "type": "buttons",
  "config": {}
}'
DELETE/api/v1/instagram/interactive-messages/{id}library:write

Delete an Instagram interactive message

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/rate-limitchannels:read

Remaining Instagram send quota

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/instagram/rate-limit" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/templatestemplates:read

List saved Instagram templates

Requires templates:read permission.

Query parameters

pageinteger
limitinteger
searchstring
isActiveboolean
curl -X GET "https://api.inboxy.chat/api/v1/instagram/templates" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/templatestemplates:write

Save an Instagram template

Requires templates:write permission.

Body

namerequiredstring
descriptionstring
cardsrequiredobject[]
curl -X POST "https://api.inboxy.chat/api/v1/instagram/templates" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "cards": [
    {
      "title": "title",
      "subtitle": "subtitle",
      "imageUrl": "imageUrl",
      "defaultActionUrl": "defaultActionUrl",
      "buttons": [
        {
          "type": "web_url",
          "title": "title",
          "url": "url",
          "payload": "payload"
        }
      ]
    }
  ]
}'
GET/api/v1/instagram/templates/{id}templates:read

Get a saved Instagram template

Requires templates:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/instagram/templates/{id}templates:write

Update a saved Instagram template

Requires templates:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
isActiveboolean
cardsobject[]
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "isActive": true,
  "cards": [
    {
      "title": "title",
      "subtitle": "subtitle",
      "imageUrl": "imageUrl",
      "defaultActionUrl": "defaultActionUrl",
      "buttons": [
        {
          "type": "web_url",
          "title": "title",
          "url": "url",
          "payload": "payload"
        }
      ]
    }
  ]
}'
DELETE/api/v1/instagram/templates/{id}templates:write

Delete a saved Instagram template

Requires templates:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/templates/{id}/detailtemplates:read

Get template detail and usage

Requires templates:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/templates/{id}/detail" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/templates/{id}/sendmessages:send

Send a saved Instagram template

Requires messages:send permission.

Path parameters

idrequiredstring

Body

recipientIdrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/templates/{id}/send" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "conversationId": "conversationId"
}'
GET/api/v1/instagram/quick-replieslibrary:read

List Instagram quick replies

Requires library:read permission.

Query parameters

pageinteger
limitinteger
searchstring
categorystring
isActiveboolean
curl -X GET "https://api.inboxy.chat/api/v1/instagram/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/quick-replieslibrary:write

Create an Instagram quick reply

Requires library:write permission.

Body

namerequiredstring
descriptionstring
messagerequiredstring
quickRepliesrequiredobject[]
categorystring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "message": "message",
  "quickReplies": [
    {
      "title": "title",
      "payload": "payload",
      "imageUrl": "imageUrl"
    }
  ],
  "category": "category"
}'
GET/api/v1/instagram/quick-replies/categorieslibrary:read

List quick reply categories

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/instagram/quick-replies/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/quick-replies/{id}library:read

Get an Instagram quick reply

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/instagram/quick-replies/{id}library:write

Update an Instagram quick reply

Requires library:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
messagestring
quickRepliesobject[]
categorystring
isActiveboolean
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "message": "message",
  "quickReplies": [
    {
      "title": "title",
      "payload": "payload",
      "imageUrl": "imageUrl"
    }
  ],
  "category": "category",
  "isActive": true
}'
DELETE/api/v1/instagram/quick-replies/{id}library:write

Delete an Instagram quick reply

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/ice-breakerschannels:read

List Instagram ice breakers

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/instagram/ice-breakers" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/ice-breakerschannels:write

Replace Instagram ice breakers

Requires channels:write permission.

Body

iceBreakersrequiredobject[]
curl -X POST "https://api.inboxy.chat/api/v1/instagram/ice-breakers" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "iceBreakers": [
    {
      "question": "question",
      "payload": "payload"
    }
  ]
}'
DELETE/api/v1/instagram/ice-breakerschannels:write

Remove all ice breakers

Requires channels:write permission.

curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/ice-breakers" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/ice-breakers/addchannels:write

Add an ice breaker

Requires channels:write permission.

Body

questionrequiredstring
payloadrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/ice-breakers/add" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "question": "question",
  "payload": "payload"
}'
PUT/api/v1/instagram/ice-breakers/{index}channels:write

Update an ice breaker

Requires channels:write permission.

Path parameters

indexrequiredstring

Body

questionrequiredstring
payloadrequiredstring
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/ice-breakers/{index}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "question": "question",
  "payload": "payload"
}'
DELETE/api/v1/instagram/ice-breakers/{index}channels:write

Delete an ice breaker

Requires channels:write permission.

Path parameters

indexrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/ice-breakers/{index}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/ice-breakers/reorderchannels:write

Reorder ice breakers

Requires channels:write permission.

Body

newOrderrequiredinteger[]
curl -X POST "https://api.inboxy.chat/api/v1/instagram/ice-breakers/reorder" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "newOrder": [
    0
  ]
}'
GET/api/v1/instagram/story-mentions/configautomations:read

Story mention auto-reply settings

Requires automations:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/instagram/story-mentions/config" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/instagram/story-mentions/configautomations:write

Change story mention auto-reply settings

Requires automations:write permission.

Body

enabledboolean
autoReplyEnabledboolean
autoReplyMessagestring
autoReplyDelayinteger
trackMentionsboolean
notifyOnMentionboolean
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/story-mentions/config" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "autoReplyEnabled": true,
  "autoReplyMessage": "autoReplyMessage",
  "autoReplyDelay": 0,
  "trackMentions": true,
  "notifyOnMention": true
}'
GET/api/v1/instagram/story-mentions/statsanalytics:read

Story mention stats

Requires analytics:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/instagram/story-mentions/stats" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/story-mentions/responsesautomations:write

Add a story mention reply

Requires automations:write permission.

Body

conditionrequiredfollower | non_follower | verified | any
messagerequiredstring
isActiveboolean
curl -X POST "https://api.inboxy.chat/api/v1/instagram/story-mentions/responses" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "condition": "follower",
  "message": "message",
  "isActive": true
}'
PUT/api/v1/instagram/story-mentions/responses/{id}automations:write

Update a story mention reply

Requires automations:write permission.

Path parameters

idrequiredstring

Body

conditionfollower | non_follower | verified | any
messagestring
isActiveboolean
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/story-mentions/responses/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "condition": "follower",
  "message": "message",
  "isActive": true
}'
DELETE/api/v1/instagram/story-mentions/responses/{id}automations:write

Delete a story mention reply

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/story-mentions/responses/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/campaignscampaigns:read

List Instagram campaigns

Requires campaigns:read permission.

Query parameters

statusDRAFT | SCHEDULED | RUNNING | PAUSED | COMPLETED | CANCELLED | FAILED
searchstring
limitstring
offsetstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/campaigns" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/campaignscampaigns:write

Create an Instagram campaign

Requires campaigns:write permission.

Body

namerequiredstring
descriptionstring
messageTyperequiredTEXT | TEMPLATE | IMAGE
messageTextstring
messageContentstring
templateIdstring
imageUrlstring
messageConfigobject
scheduledAtstring
messagesPerSecondnumber
recipientContactIdsstring[]
recipientIdsstring[]
recipientIGSIDsstring[]
filtersobject
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "messageType": "TEXT",
  "messageText": "messageText",
  "messageContent": "messageContent",
  "templateId": "templateId",
  "imageUrl": "imageUrl",
  "messageConfig": {},
  "scheduledAt": "2026-01-01T00:00:00.000Z",
  "messagesPerSecond": 1,
  "recipientContactIds": [
    "recipientContactIds"
  ],
  "recipientIds": [
    "recipientIds"
  ],
  "recipientIGSIDs": [
    "recipientIGSIDs"
  ],
  "filters": {
    "tags": [
      "tags"
    ],
    "lifecycleStage": "lifecycleStage",
    "source": "source"
  }
}'
GET/api/v1/instagram/campaigns/{id}campaigns:read

Get an Instagram campaign

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/instagram/campaigns/{id}campaigns:write

Update an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
messageTypeTEXT | TEMPLATE | IMAGE
messageTextstring
messageContentstring
templateIdstring
imageUrlstring
messageConfigobject
scheduledAtstring
messagesPerSecondnumber
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "messageType": "TEXT",
  "messageText": "messageText",
  "messageContent": "messageContent",
  "templateId": "templateId",
  "imageUrl": "imageUrl",
  "messageConfig": {},
  "scheduledAt": "2026-01-01T00:00:00.000Z",
  "messagesPerSecond": 1
}'
DELETE/api/v1/instagram/campaigns/{id}campaigns:write

Delete an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/campaigns/{id}/runcampaigns:write

Start an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/run" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/campaigns/{id}/cancelcampaigns:write

Cancel an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/cancel" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/campaigns/{id}/pausecampaigns:write

Pause an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/pause" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/campaigns/{id}/resumecampaigns:write

Resume an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/resume" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/campaigns/{id}/statscampaigns:read

Campaign delivery stats

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/campaigns/{id}/recipientscampaigns:read

List campaign recipients

Requires campaigns:read permission.

Path parameters

idrequiredstring

Query parameters

pagestring
pageSizestring
statusstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/recipients" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/campaigns/{id}/recipientscampaigns:write

Add campaign recipients

Requires campaigns:write permission.

Path parameters

idrequiredstring

Body

contactIdsstring[]
igsidsstring[]
filtersobject
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/recipients" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "contactIds"
  ],
  "igsids": [
    "igsids"
  ],
  "filters": {
    "tags": [
      "tags"
    ],
    "lifecycleStage": "lifecycleStage",
    "source": "source"
  }
}'
POST/api/v1/instagram/campaigns/{id}/duplicatecampaigns:write

Duplicate an Instagram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/instagram/campaigns/{id}/duplicate" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/marketing/sendmessages:send

Send an Instagram marketing message to opted-in users

Requires messages:send permission.

Body

recipientIdrequiredstring
tagrequiredstring
textstring
attachmentobject
curl -X POST "https://api.inboxy.chat/api/v1/instagram/marketing/send" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "tag": "tag",
  "text": "text",
  "attachment": {
    "type": "type",
    "payload": {}
  }
}'
GET/api/v1/instagram/comment-automationsautomations:read

List comment-to-DM automations

Requires automations:read permission.

Query parameters

pageintegerPage number (default 1).
limitintegerRows per page, max 50 (default 20).
curl -X GET "https://api.inboxy.chat/api/v1/instagram/comment-automations" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/instagram/comment-automationsautomations:write

Auto-reply to comments on a post (public reply and/or DM)

Requires automations:write permission.

Body

channelIdrequiredstringThe Instagram or Messenger channel id (GET /api/v1/me/channels).
mediaIdrequiredstringPost id from GET …/comment-automations/posts.
postCaptionstring
postThumbnailstring
postPermalinkstring
keywordsstring[]Reply only to comments containing one of these words; empty = every comment.
publicRepliesstring[]Public replies under the comment; one is picked at random.
dmMessagestringPlain private reply (use dmConfig for rich DMs).
dmConfigobjectPrivate reply. `{type:"text", text}`, `{type:"image", imageUrl, text?}`, `{type:"card", title, subtitle?, imageUrl?, buttons?:[{title,url}] (max 3)}`, `{type:"buttons", text, buttons:[{title,url}] (1–3)}`, `{type:"quick_replies", text, quickReplies:[string] (1–13)}`.
hideCommentbooleanHide the original comment after replying.
curl -X POST "https://api.inboxy.chat/api/v1/instagram/comment-automations" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "channelId": "channelId",
  "mediaId": "mediaId",
  "postCaption": "postCaption",
  "postThumbnail": "postThumbnail",
  "postPermalink": "postPermalink",
  "keywords": [
    "price",
    "السعر"
  ],
  "publicReplies": [
    "Sent you a DM 📩"
  ],
  "dmMessage": "dmMessage",
  "dmConfig": {
    "type": "buttons",
    "text": "Here is the price list",
    "buttons": [
      {
        "title": "Open",
        "url": "https://example.com/prices"
      }
    ]
  },
  "hideComment": true
}'
GET/api/v1/instagram/comment-automations/postschannels:read

List your Instagram posts

Requires channels:read permission.

Query parameters

afterstringPagination cursor from the previous page of posts.
curl -X GET "https://api.inboxy.chat/api/v1/instagram/comment-automations/posts" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/comment-automations/posts/{mediaId}/commentschannels:read

List comments on an Instagram post

Requires channels:read permission.

Path parameters

mediaIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/comment-automations/posts/{mediaId}/comments" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/comment-automations/{id}automations:read

Get a comment-to-DM automation

Requires automations:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/instagram/comment-automations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/instagram/comment-automations/{id}automations:write

Update a comment-to-DM automation

Requires automations:write permission.

Path parameters

idrequiredstring

Body

channelIdrequiredstringThe Instagram or Messenger channel id (GET /api/v1/me/channels).
mediaIdrequiredstringPost id from GET …/comment-automations/posts.
postCaptionstring
postThumbnailstring
postPermalinkstring
keywordsstring[]Reply only to comments containing one of these words; empty = every comment.
publicRepliesstring[]Public replies under the comment; one is picked at random.
dmMessagestringPlain private reply (use dmConfig for rich DMs).
dmConfigobjectPrivate reply. `{type:"text", text}`, `{type:"image", imageUrl, text?}`, `{type:"card", title, subtitle?, imageUrl?, buttons?:[{title,url}] (max 3)}`, `{type:"buttons", text, buttons:[{title,url}] (1–3)}`, `{type:"quick_replies", text, quickReplies:[string] (1–13)}`.
hideCommentbooleanHide the original comment after replying.
curl -X PUT "https://api.inboxy.chat/api/v1/instagram/comment-automations/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "channelId": "channelId",
  "mediaId": "mediaId",
  "postCaption": "postCaption",
  "postThumbnail": "postThumbnail",
  "postPermalink": "postPermalink",
  "keywords": [
    "price",
    "السعر"
  ],
  "publicReplies": [
    "Sent you a DM 📩"
  ],
  "dmMessage": "dmMessage",
  "dmConfig": {
    "type": "buttons",
    "text": "Here is the price list",
    "buttons": [
      {
        "title": "Open",
        "url": "https://example.com/prices"
      }
    ]
  },
  "hideComment": true
}'
DELETE/api/v1/instagram/comment-automations/{id}automations:write

Delete a comment-to-DM automation

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/instagram/comment-automations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/instagram/comment-automations/{id}/toggleautomations:write

Turn a comment-to-DM automation on or off

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X PATCH "https://api.inboxy.chat/api/v1/instagram/comment-automations/{id}/toggle" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/top-performersanalytics:read

Top Instagram templates and replies

Requires analytics:read permission.

Query parameters

windowstringLookback window as "<n>d", 1–90 days (default 7d).
curl -X GET "https://api.inboxy.chat/api/v1/instagram/top-performers" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/instagram/volume-timelineanalytics:read

Instagram message volume over time

Requires analytics:read permission.

Query parameters

windowstringLookback window as "<n>d", 1–90 days (default 7d).
curl -X GET "https://api.inboxy.chat/api/v1/instagram/volume-timeline" \
  -H "Authorization: Bearer inboxy_your_token"

Messenger

POST/api/v1/messenger/sendmessages:send

Send a Messenger message

Requires messages:send permission.

Body

recipientIdrequiredstring
textrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "text": "text",
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/tagmessages:send

Send outside the 24-hour window with a message tag

Requires messages:send permission.

Body

recipientIdrequiredstring
textrequiredstring
tagrequiredHUMAN_AGENT
conversationIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/tag" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "text": "text",
  "tag": "HUMAN_AGENT",
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/quick-repliesmessages:send

Send Messenger quick replies

Requires messages:send permission.

Body

recipientIdrequiredstring
textrequiredstring
quickRepliesrequiredstring[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "text": "text",
  "quickReplies": [],
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/buttonsmessages:send

Send a Messenger button template

Requires messages:send permission.

Body

recipientIdrequiredstring
textrequiredstring
buttonsrequiredstring[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/buttons" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "text": "text",
  "buttons": [],
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/mediamessages:send

Send Messenger media

Requires messages:send permission.

Body

recipientIdrequiredstring
mediaTyperequiredimage | video | audio | file
mediaUrlrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/media" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "mediaType": "image",
  "mediaUrl": "mediaUrl",
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/carouselmessages:send

Send a Messenger carousel

Requires messages:send permission.

Body

recipientIdrequiredstring
elementsrequiredobject[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/carousel" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "elements": [
    {
      "title": "title",
      "subtitle": "subtitle",
      "image_url": "image_url",
      "default_action": {
        "type": "type",
        "url": "url"
      },
      "buttons": []
    }
  ],
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/media-templatemessages:send

Send a Messenger media template

Requires messages:send permission.

Body

recipientIdrequiredstring
mediaTyperequiredimage | video
mediaUrlrequiredstring
buttonsstring[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/media-template" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "mediaType": "image",
  "mediaUrl": "mediaUrl",
  "buttons": [],
  "conversationId": "conversationId"
}'
POST/api/v1/messenger/send/receiptmessages:send

Send a Messenger order receipt

Requires messages:send permission.

Body

recipientIdrequiredstring
recipientNamerequiredstring
orderNumberrequiredstring
currencyrequiredstring
paymentMethodrequiredstring
orderUrlstring
timestampstring
summaryrequiredobject
elementsrequiredobject[]
addressobject
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/send/receipt" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "recipientName": "recipientName",
  "orderNumber": "orderNumber",
  "currency": "currency",
  "paymentMethod": "paymentMethod",
  "orderUrl": "orderUrl",
  "timestamp": "timestamp",
  "summary": {
    "subtotal": 1,
    "shipping_cost": 1,
    "total_tax": 1,
    "total_cost": 1
  },
  "elements": [
    {
      "title": "title",
      "subtitle": "subtitle",
      "quantity": 1,
      "price": 1,
      "currency": "currency",
      "image_url": "image_url"
    }
  ],
  "address": {
    "street_1": "street_1",
    "street_2": "street_2",
    "city": "city",
    "postal_code": "postal_code",
    "state": "state",
    "country": "country"
  },
  "conversationId": "conversationId"
}'
GET/api/v1/messenger/window/{conversationId}conversations:read

Check the Messenger messaging window

Requires conversations:read permission.

Path parameters

conversationIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/window/{conversationId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/statsanalytics:read

Messenger message totals

Requires analytics:read permission.

Query parameters

periodtoday | 7days | monthReporting window (default month).
curl -X GET "https://api.inboxy.chat/api/v1/messenger/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/analytics/summaryanalytics:read

Messenger analytics summary

Requires analytics:read permission.

Query parameters

daysintegerDays to analyze, 1–365 (default 30).
curl -X GET "https://api.inboxy.chat/api/v1/messenger/analytics/summary" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/rate-limitchannels:read

Remaining Messenger send quota

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/rate-limit" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/interactive-messageslibrary:read

List Messenger interactive messages

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/interactive-messages" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/interactive-messageslibrary:write

Save a Messenger interactive message

Requires library:write permission.

Body

namerequiredstring
typerequiredbuttons | quick_replies
configrequiredobject
curl -X POST "https://api.inboxy.chat/api/v1/messenger/interactive-messages" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "type": "buttons",
  "config": {}
}'
GET/api/v1/messenger/interactive-messages/{id}library:read

Get a Messenger interactive message

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/messenger/interactive-messages/{id}library:write

Update a Messenger interactive message

Requires library:write permission.

Path parameters

idrequiredstring

Body

namerequiredstring
typerequiredbuttons | quick_replies
configrequiredobject
curl -X PUT "https://api.inboxy.chat/api/v1/messenger/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "type": "buttons",
  "config": {}
}'
DELETE/api/v1/messenger/interactive-messages/{id}library:write

Delete a Messenger interactive message

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/templatestemplates:read

List saved Messenger templates

Requires templates:read permission.

Query parameters

typeBUTTON | GENERIC | RECEIPT | MEDIA
isActivestring
searchstring
limitstring
offsetstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/templates" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/templatestemplates:write

Save a Messenger template

Requires templates:write permission.

Body

namerequiredstring
descriptionstring
typerequiredBUTTON | GENERIC | RECEIPT | MEDIA
configrequiredobject
curl -X POST "https://api.inboxy.chat/api/v1/messenger/templates" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "type": "BUTTON",
  "config": {}
}'
GET/api/v1/messenger/templates/{id}templates:read

Get a saved Messenger template

Requires templates:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/messenger/templates/{id}templates:write

Update a saved Messenger template

Requires templates:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
typeBUTTON | GENERIC | RECEIPT | MEDIA
configobject
isActiveboolean
curl -X PUT "https://api.inboxy.chat/api/v1/messenger/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "type": "BUTTON",
  "config": {},
  "isActive": true
}'
DELETE/api/v1/messenger/templates/{id}templates:write

Delete a saved Messenger template

Requires templates:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/templates/{id}/sendmessages:send

Send a saved Messenger template

Requires messages:send permission.

Path parameters

idrequiredstring

Body

recipientIdrequiredstring
variablesobject
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/templates/{id}/send" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "recipientId": "recipientId",
  "variables": {},
  "conversationId": "conversationId"
}'
GET/api/v1/messenger/templates/{id}/detailtemplates:read

Get template detail and usage

Requires templates:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/templates/{id}/detail" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/templates/{id}/duplicatetemplates:write

Duplicate a Messenger template

Requires templates:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/templates/{id}/duplicate" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/quick-replieslibrary:read

List Messenger quick replies

Requires library:read permission.

Query parameters

categorystring
isActivestring
searchstring
limitstring
offsetstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/quick-replieslibrary:write

Create a Messenger quick reply

Requires library:write permission.

Body

namerequiredstring
descriptionstring
quickRepliesrequiredobject[]
categorystring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "quickReplies": [
    {
      "content_type": "text",
      "title": "title",
      "payload": "payload",
      "image_url": "image_url"
    }
  ],
  "category": "category"
}'
GET/api/v1/messenger/quick-replies/categorieslibrary:read

List quick reply categories

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/quick-replies/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/quick-replies/{id}library:read

Get a Messenger quick reply

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/messenger/quick-replies/{id}library:write

Update a Messenger quick reply

Requires library:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
quickRepliesobject[]
categorystring
isActiveboolean
curl -X PUT "https://api.inboxy.chat/api/v1/messenger/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "quickReplies": [
    {
      "content_type": "text",
      "title": "title",
      "payload": "payload",
      "image_url": "image_url"
    }
  ],
  "category": "category",
  "isActive": true
}'
DELETE/api/v1/messenger/quick-replies/{id}library:write

Delete a Messenger quick reply

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/quick-replies/{id}/duplicatelibrary:write

Duplicate a Messenger quick reply

Requires library:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/quick-replies/{id}/duplicate" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/profilechannels:read

Messenger profile (greeting, menu, ice breakers)

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/profile" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/profile/persistent-menuchannels:read

Persistent menu

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/profile/persistent-menu" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/profile/persistent-menuchannels:write

Set the persistent menu

Requires channels:write permission.

Body

localestring
composer_input_disabledboolean
call_to_actionsobject[]
curl -X POST "https://api.inboxy.chat/api/v1/messenger/profile/persistent-menu" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "locale": "locale",
  "composer_input_disabled": true,
  "call_to_actions": [
    {
      "id": "id",
      "type": "postback",
      "title": "title",
      "payload": "payload",
      "url": "url",
      "webview_height_ratio": "compact",
      "call_to_actions": []
    }
  ]
}'
DELETE/api/v1/messenger/profile/persistent-menuchannels:write

Remove the persistent menu

Requires channels:write permission.

curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/profile/persistent-menu" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/profile/greetingchannels:read

Greeting text

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/profile/greeting" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/profile/greetingchannels:write

Set the greeting text

Requires channels:write permission.

Body

getStartedPayloadstring
greetingsobject[]
curl -X POST "https://api.inboxy.chat/api/v1/messenger/profile/greeting" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "getStartedPayload": "getStartedPayload",
  "greetings": [
    {
      "locale": "locale",
      "text": "text"
    }
  ]
}'
DELETE/api/v1/messenger/profile/greetingchannels:write

Remove the greeting text

Requires channels:write permission.

curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/profile/greeting" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/profile/get-startedchannels:read

Get Started button

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/profile/get-started" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/profile/get-startedchannels:write

Set the Get Started button

Requires channels:write permission.

Body

payloadrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/profile/get-started" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "payload": "payload"
}'
DELETE/api/v1/messenger/profile/get-startedchannels:write

Remove the Get Started button

Requires channels:write permission.

curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/profile/get-started" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/profile/ice-breakerschannels:read

Ice breakers

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/messenger/profile/ice-breakers" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/profile/ice-breakerschannels:write

Set ice breakers

Requires channels:write permission.

Body

ice_breakersobject[]
curl -X POST "https://api.inboxy.chat/api/v1/messenger/profile/ice-breakers" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "ice_breakers": [
    {
      "id": "id",
      "question": "question",
      "payload": "payload"
    }
  ]
}'
DELETE/api/v1/messenger/profile/ice-breakerschannels:write

Remove ice breakers

Requires channels:write permission.

curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/profile/ice-breakers" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/campaignscampaigns:read

List Messenger campaigns

Requires campaigns:read permission.

Query parameters

statusDRAFT | SCHEDULED | RUNNING | PAUSED | COMPLETED | CANCELLED | FAILED
searchstring
limitstring
offsetstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/campaigns" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/campaignscampaigns:write

Create a Messenger campaign

Requires campaigns:write permission.

Body

namerequiredstring
descriptionstring
messageTyperequiredTEXT | TEMPLATE | QUICK_REPLIES
messageTextstring
templateIdstring
quickReplySetIdstring
messageConfigobject
scheduledAtstring
messagesPerSecondnumber
recipientContactIdsstring[]
recipientPSIDsstring[]
filtersobject
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "messageType": "TEXT",
  "messageText": "messageText",
  "templateId": "templateId",
  "quickReplySetId": "quickReplySetId",
  "messageConfig": {},
  "scheduledAt": "2026-01-01T00:00:00.000Z",
  "messagesPerSecond": 1,
  "recipientContactIds": [
    "recipientContactIds"
  ],
  "recipientPSIDs": [
    "recipientPSIDs"
  ],
  "filters": {
    "tags": [
      "tags"
    ],
    "lifecycleStage": "lifecycleStage",
    "source": "source"
  }
}'
GET/api/v1/messenger/campaigns/{id}campaigns:read

Get a Messenger campaign

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/messenger/campaigns/{id}campaigns:write

Update a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
messageTypeTEXT | TEMPLATE | QUICK_REPLIES
messageTextstring
templateIdstring
quickReplySetIdstring
messageConfigobject
scheduledAtstring
messagesPerSecondnumber
messageTagnull
curl -X PUT "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "messageType": "TEXT",
  "messageText": "messageText",
  "templateId": "templateId",
  "quickReplySetId": "quickReplySetId",
  "messageConfig": {},
  "scheduledAt": "2026-01-01T00:00:00.000Z",
  "messagesPerSecond": 1,
  "messageTag": null
}'
DELETE/api/v1/messenger/campaigns/{id}campaigns:write

Delete a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/campaigns/{id}/runcampaigns:write

Start a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/run" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/campaigns/{id}/cancelcampaigns:write

Cancel a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/cancel" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/campaigns/{id}/pausecampaigns:write

Pause a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/pause" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/campaigns/{id}/resumecampaigns:write

Resume a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/resume" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/campaigns/{id}/statscampaigns:read

Campaign delivery stats

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/campaigns/{id}/recipientscampaigns:read

List campaign recipients

Requires campaigns:read permission.

Path parameters

idrequiredstring

Query parameters

statusstringDelivery status, e.g. SENT.
limitintegerMax rows (default 20).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/recipients" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/campaigns/{id}/recipientscampaigns:write

Add campaign recipients

Requires campaigns:write permission.

Path parameters

idrequiredstring

Body

contactIdsstring[]
psidsstring[]
filtersobject
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/recipients" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "contactIds"
  ],
  "psids": [
    "psids"
  ],
  "filters": {
    "tags": [
      "tags"
    ],
    "lifecycleStage": "lifecycleStage",
    "source": "source"
  }
}'
POST/api/v1/messenger/campaigns/{id}/duplicatecampaigns:write

Duplicate a Messenger campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/messenger/campaigns/{id}/duplicate" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/comment-automationsautomations:read

List comment-to-DM automations

Requires automations:read permission.

Query parameters

pageintegerPage number (default 1).
limitintegerRows per page, max 50 (default 20).
curl -X GET "https://api.inboxy.chat/api/v1/messenger/comment-automations" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/messenger/comment-automationsautomations:write

Auto-reply to comments on a Page post (public reply and/or DM)

Requires automations:write permission.

Body

channelIdrequiredstringThe Instagram or Messenger channel id (GET /api/v1/me/channels).
mediaIdrequiredstringPost id from GET …/comment-automations/posts.
postCaptionstring
postThumbnailstring
postPermalinkstring
keywordsstring[]Reply only to comments containing one of these words; empty = every comment.
publicRepliesstring[]Public replies under the comment; one is picked at random.
dmMessagestringPlain private reply (use dmConfig for rich DMs).
dmConfigobjectPrivate reply. `{type:"text", text}`, `{type:"image", imageUrl, text?}`, `{type:"card", title, subtitle?, imageUrl?, buttons?:[{title,url}] (max 3)}`, `{type:"buttons", text, buttons:[{title,url}] (1–3)}`, `{type:"quick_replies", text, quickReplies:[string] (1–13)}`.
hideCommentbooleanHide the original comment after replying.
curl -X POST "https://api.inboxy.chat/api/v1/messenger/comment-automations" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "channelId": "channelId",
  "mediaId": "mediaId",
  "postCaption": "postCaption",
  "postThumbnail": "postThumbnail",
  "postPermalink": "postPermalink",
  "keywords": [
    "price",
    "السعر"
  ],
  "publicReplies": [
    "Sent you a DM 📩"
  ],
  "dmMessage": "dmMessage",
  "dmConfig": {
    "type": "buttons",
    "text": "Here is the price list",
    "buttons": [
      {
        "title": "Open",
        "url": "https://example.com/prices"
      }
    ]
  },
  "hideComment": true
}'
GET/api/v1/messenger/comment-automations/postschannels:read

List your Facebook Page posts

Requires channels:read permission.

Query parameters

afterstringPagination cursor from the previous page of posts.
curl -X GET "https://api.inboxy.chat/api/v1/messenger/comment-automations/posts" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/comment-automations/posts/{mediaId}/commentschannels:read

List comments on a Page post

Requires channels:read permission.

Path parameters

mediaIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/comment-automations/posts/{mediaId}/comments" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/comment-automations/{id}automations:read

Get a comment-to-DM automation

Requires automations:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/messenger/comment-automations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/messenger/comment-automations/{id}automations:write

Update a comment-to-DM automation

Requires automations:write permission.

Path parameters

idrequiredstring

Body

channelIdrequiredstringThe Instagram or Messenger channel id (GET /api/v1/me/channels).
mediaIdrequiredstringPost id from GET …/comment-automations/posts.
postCaptionstring
postThumbnailstring
postPermalinkstring
keywordsstring[]Reply only to comments containing one of these words; empty = every comment.
publicRepliesstring[]Public replies under the comment; one is picked at random.
dmMessagestringPlain private reply (use dmConfig for rich DMs).
dmConfigobjectPrivate reply. `{type:"text", text}`, `{type:"image", imageUrl, text?}`, `{type:"card", title, subtitle?, imageUrl?, buttons?:[{title,url}] (max 3)}`, `{type:"buttons", text, buttons:[{title,url}] (1–3)}`, `{type:"quick_replies", text, quickReplies:[string] (1–13)}`.
hideCommentbooleanHide the original comment after replying.
curl -X PUT "https://api.inboxy.chat/api/v1/messenger/comment-automations/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "channelId": "channelId",
  "mediaId": "mediaId",
  "postCaption": "postCaption",
  "postThumbnail": "postThumbnail",
  "postPermalink": "postPermalink",
  "keywords": [
    "price",
    "السعر"
  ],
  "publicReplies": [
    "Sent you a DM 📩"
  ],
  "dmMessage": "dmMessage",
  "dmConfig": {
    "type": "buttons",
    "text": "Here is the price list",
    "buttons": [
      {
        "title": "Open",
        "url": "https://example.com/prices"
      }
    ]
  },
  "hideComment": true
}'
DELETE/api/v1/messenger/comment-automations/{id}automations:write

Delete a comment-to-DM automation

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/messenger/comment-automations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/messenger/comment-automations/{id}/toggleautomations:write

Turn a comment-to-DM automation on or off

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X PATCH "https://api.inboxy.chat/api/v1/messenger/comment-automations/{id}/toggle" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/top-performersanalytics:read

Top Messenger templates and replies

Requires analytics:read permission.

Query parameters

windowstringLookback window as "<n>d", 1–90 days (default 7d).
curl -X GET "https://api.inboxy.chat/api/v1/messenger/top-performers" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/messenger/volume-timelineanalytics:read

Messenger message volume over time

Requires analytics:read permission.

Query parameters

windowstringLookback window as "<n>d", 1–90 days (default 7d).
curl -X GET "https://api.inboxy.chat/api/v1/messenger/volume-timeline" \
  -H "Authorization: Bearer inboxy_your_token"

Telegram

POST/api/v1/telegram/sendmessages:send

Send a Telegram message

Requires messages:send permission.

Body

chatIdrequiredstring | number
contentstring
conversationIdstring
mediaTypephoto | video | document | audio | voice
mediaUrlstring
captionstring
parseModeHTML | Markdown | MarkdownV2
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "content": "content",
  "conversationId": "conversationId",
  "mediaType": "photo",
  "mediaUrl": "mediaUrl",
  "caption": "caption",
  "parseMode": "HTML"
}'
POST/api/v1/telegram/send/inline-keyboardmessages:send

Send a message with inline buttons

Requires messages:send permission.

Body

chatIdrequiredstring | number
textrequiredstring
buttonsobject[][]
inlineKeyboardobject[][]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/inline-keyboard" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "text": "text",
  "buttons": [
    [
      {
        "text": "text",
        "url": "url",
        "callback_data": "callback_data"
      }
    ]
  ],
  "inlineKeyboard": [
    [
      {
        "text": "text",
        "url": "url",
        "callback_data": "callback_data"
      }
    ]
  ],
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/reply-keyboardmessages:send

Send a message with a reply keyboard

Requires messages:send permission.

Body

chatIdrequiredstring | number
textrequiredstring
keyboardrequiredobject[][]
conversationIdstring
resize_keyboardboolean
one_time_keyboardboolean
input_field_placeholderstring
is_persistentboolean
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/reply-keyboard" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "text": "text",
  "keyboard": [
    [
      {
        "text": "text",
        "request_contact": true,
        "request_location": true
      }
    ]
  ],
  "conversationId": "conversationId",
  "resize_keyboard": true,
  "one_time_keyboard": true,
  "input_field_placeholder": "input_field_placeholder",
  "is_persistent": true
}'
POST/api/v1/telegram/send/remove-keyboardmessages:send

Remove the reply keyboard

Requires messages:send permission.

Body

chatIdrequiredstring | number
textrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/remove-keyboard" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "text": "text",
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/stickermessages:send

Send a sticker

Requires messages:send permission.

Body

chatIdrequiredstring | number
stickerrequiredstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/sticker" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "sticker": "sticker",
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/locationmessages:send

Send a location

Requires messages:send permission.

Body

chatIdrequiredstring | number
latituderequirednumber
longituderequirednumber
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/location" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "latitude": 1,
  "longitude": 1,
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/contactmessages:send

Send a contact

Requires messages:send permission.

Body

chatIdrequiredstring | number
phoneNumberrequiredstring
firstNamerequiredstring
lastNamestring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/contact" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "phoneNumber": "966500000000",
  "firstName": "firstName",
  "lastName": "lastName",
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/pollmessages:send

Send a poll

Requires messages:send permission.

Body

chatIdrequiredstring | number
questionrequiredstring
optionsrequiredobject[]
conversationIdstring
is_anonymousboolean
isAnonymousboolean
typeregular | quiz
allows_multiple_answersboolean
allowsMultipleAnswersboolean
correct_option_idnumber
correctOptionIdnumber
explanationstring
open_periodnumber
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/poll" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "question": "question",
  "options": [
    "options"
  ],
  "conversationId": "conversationId",
  "is_anonymous": true,
  "isAnonymous": true,
  "type": "regular",
  "allows_multiple_answers": true,
  "allowsMultipleAnswers": true,
  "correct_option_id": 1,
  "correctOptionId": 1,
  "explanation": "explanation",
  "open_period": 1
}'
POST/api/v1/telegram/send/venuemessages:send

Send a venue

Requires messages:send permission.

Body

chatIdrequiredstring | number
latituderequirednumber
longituderequirednumber
titlerequiredstring
addressrequiredstring
foursquareIdstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/venue" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "latitude": 1,
  "longitude": 1,
  "title": "title",
  "address": "address",
  "foursquareId": "foursquareId",
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/dicemessages:send

Send an animated dice

Requires messages:send permission.

Body

chatIdrequiredstring | number
emoji🎲 | 🎯 | 🏀 | ⚽ | 🎳 | 🎰
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/dice" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "emoji": "🎲",
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/animationmessages:send

Send a GIF / animation

Requires messages:send permission.

Body

chatIdrequiredstring | number
animationrequiredstring
captionstring
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/animation" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "animation": "animation",
  "caption": "caption",
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/video-notemessages:send

Send a round video note

Requires messages:send permission.

Body

chatIdrequiredstring | number
videoNoterequiredstring
durationnumber
lengthnumber
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/video-note" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "videoNote": "videoNote",
  "duration": 1,
  "length": 1,
  "conversationId": "conversationId"
}'
POST/api/v1/telegram/send/invoicemessages:send

Send an invoice

Requires messages:send permission.

Body

chatIdrequiredstring | number
titlerequiredstring
descriptionrequiredstring
payloadrequiredstring
currencyrequiredstring
pricesrequiredobject[]
providerTokenstring
startParameterstring
photoUrlstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/invoice" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "title": "title",
  "description": "description",
  "payload": "payload",
  "currency": "XTR",
  "prices": [
    {
      "label": "label",
      "amount": 1
    }
  ],
  "providerToken": "providerToken",
  "startParameter": "startParameter",
  "photoUrl": "photoUrl"
}'
POST/api/v1/telegram/create-invoice-linkmessages:send

Create a payment link

Requires messages:send permission.

Body

titlerequiredstring
descriptionrequiredstring
payloadrequiredstring
currencyrequiredstring
pricesrequiredobject[]
curl -X POST "https://api.inboxy.chat/api/v1/telegram/create-invoice-link" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "title",
  "description": "description",
  "payload": "payload",
  "currency": "XTR",
  "prices": [
    {
      "label": "label",
      "amount": 1
    }
  ]
}'
POST/api/v1/telegram/forwardmessages:send

Forward a message

Requires messages:send permission.

Body

chatIdrequiredstring | number
fromChatIdrequiredstring | number
messageIdrequirednumber
curl -X POST "https://api.inboxy.chat/api/v1/telegram/forward" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "fromChatId": "fromChatId",
  "messageId": 1
}'
POST/api/v1/telegram/copymessages:send

Copy a message to another chat

Requires messages:send permission.

Body

chatIdrequiredstring | number
fromChatIdrequiredstring | number
messageIdrequirednumber
captionstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/copy" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "fromChatId": "fromChatId",
  "messageId": 1,
  "caption": "caption"
}'
PUT/api/v1/telegram/messagemessages:send

Edit a sent message

Requires messages:send permission.

Body

chatIdrequiredstring | number
messageIdrequirednumber
textrequiredstring
curl -X PUT "https://api.inboxy.chat/api/v1/telegram/message" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "messageId": 1,
  "text": "text"
}'
DELETE/api/v1/telegram/messagemessages:send

Delete a message

Requires messages:send permission.

Body

chatIdrequiredstring | number
messageIdrequirednumber
curl -X DELETE "https://api.inboxy.chat/api/v1/telegram/message" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "messageId": 1
}'
POST/api/v1/telegram/send/media-groupmessages:send

Send an album

Requires messages:send permission.

Body

chatIdrequiredstring | number
mediarequiredobject[]
conversationIdstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/send/media-group" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "media": [
    {
      "type": "photo",
      "media": "media",
      "caption": "caption"
    }
  ],
  "conversationId": "conversationId"
}'
GET/api/v1/telegram/chat/{chatId}conversations:read

Get chat info

Requires conversations:read permission.

Path parameters

chatIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/telegram/chat/{chatId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/telegram/chat/{chatId}/member-countconversations:read

Get group member count

Requires conversations:read permission.

Path parameters

chatIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/telegram/chat/{chatId}/member-count" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/chat/banchannels:write

Ban a user from a group

Requires channels:write permission.

Body

chatIdrequiredstring | number
userIdrequirednumber
untilDatenumber
curl -X POST "https://api.inboxy.chat/api/v1/telegram/chat/ban" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "userId": 1,
  "untilDate": 1
}'
POST/api/v1/telegram/chat/unbanchannels:write

Unban a user

Requires channels:write permission.

Body

chatIdrequiredstring | number
userIdrequirednumber
curl -X POST "https://api.inboxy.chat/api/v1/telegram/chat/unban" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "userId": 1
}'
POST/api/v1/telegram/message/pinmessages:send

Pin a message

Requires messages:send permission.

Body

chatIdrequiredstring | number
messageIdrequirednumber
disableNotificationboolean
curl -X POST "https://api.inboxy.chat/api/v1/telegram/message/pin" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "messageId": 1,
  "disableNotification": true
}'
POST/api/v1/telegram/message/unpinmessages:send

Unpin a message

Requires messages:send permission.

Body

chatIdrequiredstring | number
messageIdnumber
curl -X POST "https://api.inboxy.chat/api/v1/telegram/message/unpin" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "messageId": 1
}'
POST/api/v1/telegram/chat/invite-linkchannels:write

Create a group invite link

Requires channels:write permission.

Body

chatIdrequiredstring | number
namestring
expireDatenumber
memberLimitnumber
curl -X POST "https://api.inboxy.chat/api/v1/telegram/chat/invite-link" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "chatId": "chatId",
  "name": "name",
  "expireDate": 1,
  "memberLimit": 1
}'
GET/api/v1/telegram/bot/profilechannels:read

Bot name, description and about text

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/telegram/bot/profile" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/telegram/bot/profilechannels:write

Change the bot name, description and about text

Requires channels:write permission.

Body

namestring
descriptionstring
shortDescriptionstring
curl -X PUT "https://api.inboxy.chat/api/v1/telegram/bot/profile" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "shortDescription": "shortDescription"
}'
GET/api/v1/telegram/commandschannels:read

List bot commands

Requires channels:read permission.

Query parameters

languageCodestringCommand set for this language (omit for the default).
curl -X GET "https://api.inboxy.chat/api/v1/telegram/commands" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/commandschannels:write

Set bot commands

Requires channels:write permission.

Body

commandsrequiredobject[]
languageCodestring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/commands" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "commands": [
    {
      "command": "command",
      "description": "description"
    }
  ],
  "languageCode": "languageCode"
}'
DELETE/api/v1/telegram/commandschannels:write

Remove bot commands

Requires channels:write permission.

curl -X DELETE "https://api.inboxy.chat/api/v1/telegram/commands" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/telegram/statsanalytics:read

Telegram message totals

Requires analytics:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/telegram/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/telegram/campaignscampaigns:read

List Telegram campaigns

Requires campaigns:read permission.

Query parameters

statusall | DRAFT | SCHEDULED | RUNNING | PAUSED | COMPLETED | CANCELLED | FAILED"all" or omitted returns every status.
curl -X GET "https://api.inboxy.chat/api/v1/telegram/campaigns" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/campaignscampaigns:write

Create a Telegram campaign

Requires campaigns:write permission.

Body

namerequiredstring
messageTypestringTEXT by default.
messageContentstringMessage text (when not using a template).
templateIdstringA Telegram template id instead of messageContent.
recipientIdsstring[]Contact ids; contacts without a Telegram chat are skipped.
scheduledAtstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/campaigns" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "New arrivals",
  "messageType": "TEXT",
  "messageContent": "messageContent",
  "templateId": "templateId",
  "recipientIds": [
    "recipientIds"
  ],
  "scheduledAt": "2026-01-01T00:00:00.000Z"
}'
GET/api/v1/telegram/campaigns/{id}campaigns:read

Get a Telegram campaign

Requires campaigns:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/telegram/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/telegram/campaigns/{id}campaigns:write

Delete a Telegram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/telegram/campaigns/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/campaigns/{id}/sendcampaigns:write

Start a Telegram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/campaigns/{id}/send" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/campaigns/{id}/cancelcampaigns:write

Cancel a Telegram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/campaigns/{id}/cancel" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/campaigns/{id}/pausecampaigns:write

Pause a Telegram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/campaigns/{id}/pause" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/campaigns/{id}/resumecampaigns:write

Resume a Telegram campaign

Requires campaigns:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/campaigns/{id}/resume" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/telegram/templatestemplates:read

List Telegram templates

Requires templates:read permission.

Query parameters

isActivetrue | false
typeTEXT | MEDIA | BUTTONS | POLL | RICH
searchstringName or content.
pageintegerPage number (default 1).
pageSizeinteger
curl -X GET "https://api.inboxy.chat/api/v1/telegram/templates" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/templatestemplates:write

Save a Telegram template

Requires templates:write permission.

Body

namerequiredstring
typeTEXT | MEDIA | BUTTONS | POLL | RICH
contentrequiredstring
configobjectType-specific settings (media, inline buttons, poll options).
descriptionstring | null
clientIdstring | nullYour idempotency id: sending the same clientId again returns the existing template.
curl -X POST "https://api.inboxy.chat/api/v1/telegram/templates" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Welcome",
  "type": "TEXT",
  "content": "Welcome to our store 👋",
  "config": {},
  "description": "description",
  "clientId": "clientId"
}'
GET/api/v1/telegram/templates/{id}templates:read

Get a Telegram template

Requires templates:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/telegram/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/telegram/templates/{id}templates:write

Update a Telegram template

Requires templates:write permission.

Path parameters

idrequiredstring

Body

namerequiredstring
typeTEXT | MEDIA | BUTTONS | POLL | RICH
contentrequiredstring
configobjectType-specific settings (media, inline buttons, poll options).
descriptionstring | null
clientIdstring | nullYour idempotency id: sending the same clientId again returns the existing template.
curl -X PUT "https://api.inboxy.chat/api/v1/telegram/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Welcome",
  "type": "TEXT",
  "content": "Welcome to our store 👋",
  "config": {},
  "description": "description",
  "clientId": "clientId"
}'
DELETE/api/v1/telegram/templates/{id}templates:write

Delete a Telegram template

Requires templates:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/telegram/templates/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/templates/{id}/duplicatetemplates:write

Duplicate a Telegram template

Requires templates:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/templates/{id}/duplicate" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/telegram/templates/{id}/usemessages:send

Record a Telegram template use

Requires messages:send permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/telegram/templates/{id}/use" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/telegram/top-performersanalytics:read

Top Telegram templates

Requires analytics:read permission.

Query parameters

windowstringLookback window as "<n>d", 1–90 days (default 7d).
curl -X GET "https://api.inboxy.chat/api/v1/telegram/top-performers" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/telegram/volume-timelineanalytics:read

Telegram message volume over time

Requires analytics:read permission.

Query parameters

windowstringLookback window as "<n>d", 1–90 days (default 7d).
curl -X GET "https://api.inboxy.chat/api/v1/telegram/volume-timeline" \
  -H "Authorization: Bearer inboxy_your_token"

AI Agents

GET/api/v1/ai-agents/channelsai:read

List channels available for agent assignment

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/channels" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/presets/personalitiesai:read

List agent personality presets

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/presets/personalities" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/presets/agent-typesai:read

List agent type presets

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/presets/agent-types" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agentsai:read

List AI agents

Requires ai:read permission.

Query parameters

includeInactiveboolean
limitintegerDefault 50.
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/ai-agentsai:write

Create an AI agent

Requires ai:write permission.

Body

namerequiredstringAgent name (max 50 chars).
missionrequiredstringAgent mission statement (max 500 chars).
avatarstringAvatar image URL, or null.
genderMALE | FEMALE | NEUTRALOr null.
personalityTypestringPersonality preset key, or null.
personalitystringFree-text personality description, or null.
agentTypeGENERAL | SALES | SUPPORT | REAL_ESTATE | HEALTHCARE | EDUCATION | ECOMMERCE | HOSPITALITY | CUSTOMOr null.
instructionsstringExtra instructions (max 2000 chars), or null.
primaryLanguagestringPrimary reply language, or null.
responseStyleCONCISE | BALANCED | DETAILED | FRIENDLY | FORMALOr null.
maxTokensnumber100-4000, or null.
temperaturenumber0-2, or null.
isDefaultbooleanOr null.
assignedChannelsstring[]Channel IDs this agent handles, or null.
transferStrategyLEAST_BUSY | ROUND_ROBIN | RANDOM | SPECIFIC_AGENTOr null.
transferAgentIdstringTarget user ID for handoff, or null.
sendProductImagesbooleanOr null.
curl -X POST "https://api.inboxy.chat/api/v1/ai-agents" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Layla",
  "mission": "Answer product questions and qualify leads.",
  "avatar": "avatar",
  "gender": "MALE",
  "personalityType": "personalityType",
  "personality": "personality",
  "agentType": "GENERAL",
  "instructions": "instructions",
  "primaryLanguage": "ar",
  "responseStyle": "CONCISE",
  "maxTokens": 1,
  "temperature": 1,
  "isDefault": true,
  "assignedChannels": [
    "assignedChannels"
  ],
  "transferStrategy": "LEAST_BUSY",
  "transferAgentId": "transferAgentId",
  "sendProductImages": true
}'
GET/api/v1/ai-agents/statsai:read

Get AI agent stats

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/insights/scheduleai:read

Get the conversation insights schedule

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/insights/schedule" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/ai-agents/insights/scheduleai:write

Set the conversation insights schedule

Requires ai:write permission.

Body

enabledrequiredbooleanWhether scheduled insight reports are on.
cadencerequiredDAILY | CUSTOM_DAYS | WEEKLY | MONTHLY
intervalDaysnumber1-31, used when cadence is CUSTOM_DAYS. Defaults to 2.
dayOfWeeknumber0-6, used when cadence is WEEKLY. Defaults to 1.
dayOfMonthnumber1-28, used when cadence is MONTHLY. Defaults to 1.
scheduleHournumber0-23, hour of day to run. Defaults to 4.
timezonerequiredstringIANA timezone identifier.
curl -X PUT "https://api.inboxy.chat/api/v1/ai-agents/insights/schedule" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "cadence": "WEEKLY",
  "intervalDays": 1,
  "dayOfWeek": 1,
  "dayOfMonth": 1,
  "scheduleHour": 1,
  "timezone": "Asia/Riyadh"
}'
GET/api/v1/ai-agents/insights/reportsai:read

List conversation insight reports

Requires ai:read permission.

Query parameters

limitintegerDefault 20.
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/insights/reports" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/insights/reports/{reportId}ai:read

Get a conversation insight report

Requires ai:read permission.

Path parameters

reportIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/insights/reports/{reportId}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/ai-agents/insights/runai:write

Queue a manual conversation insight report

Requires ai:write permission.

Body

lookbackDaysnumber1-365. Defaults to 7.
modeQUICK_SAMPLE | FULL_COVERAGEDefaults to QUICK_SAMPLE.
curl -X POST "https://api.inboxy.chat/api/v1/ai-agents/insights/run" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "lookbackDays": 7,
  "mode": "QUICK_SAMPLE"
}'
GET/api/v1/ai-agents/historical-learningai:read

List historical learning profiles

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/historical-learning" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/ai-agents/{agentId}/historical-learningai:write

Enable or disable historical learning for an agent

Requires ai:write permission.

Path parameters

agentIdrequiredstring

Body

enabledrequiredbooleanEnable or disable historical learning for this agent.
curl -X PUT "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/historical-learning" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true
}'
POST/api/v1/ai-agents/{agentId}/historical-learning/runai:write

Run historical learning analysis for an agent

Requires ai:write permission.

Path parameters

agentIdrequiredstring

Body

lookbackDaysnumber1-365. Defaults to 365.
curl -X POST "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/historical-learning/run" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "lookbackDays": 90
}'
GET/api/v1/ai-agents/{agentId}ai:read

Get an AI agent

Requires ai:read permission.

Path parameters

agentIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/{agentId}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/ai-agents/{agentId}ai:write

Update an AI agent

Requires ai:write permission.

Path parameters

agentIdrequiredstring

Body

namestringAgent name (max 50 chars).
missionstringAgent mission statement (max 500 chars).
avatarstringAvatar image URL, or null.
genderMALE | FEMALE | NEUTRALOr null.
personalityTypestringPersonality preset key, or null.
personalitystringFree-text personality description, or null.
agentTypeGENERAL | SALES | SUPPORT | REAL_ESTATE | HEALTHCARE | EDUCATION | ECOMMERCE | HOSPITALITY | CUSTOMOr null.
instructionsstringExtra instructions (max 2000 chars), or null.
primaryLanguagestringPrimary reply language, or null.
responseStyleCONCISE | BALANCED | DETAILED | FRIENDLY | FORMALOr null.
maxTokensnumber100-4000, or null.
temperaturenumber0-2, or null.
isDefaultbooleanOr null.
assignedChannelsstring[]Channel IDs this agent handles, or null.
transferStrategyLEAST_BUSY | ROUND_ROBIN | RANDOM | SPECIFIC_AGENTOr null.
transferAgentIdstringTarget user ID for handoff, or null.
sendProductImagesbooleanOr null.
isActivebooleanWhether the agent is active, or null.
curl -X PUT "https://api.inboxy.chat/api/v1/ai-agents/{agentId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "mission": "mission",
  "avatar": "avatar",
  "gender": "MALE",
  "personalityType": "personalityType",
  "personality": "personality",
  "agentType": "GENERAL",
  "instructions": "instructions",
  "primaryLanguage": "ar",
  "responseStyle": "CONCISE",
  "maxTokens": 1,
  "temperature": 1,
  "isDefault": true,
  "assignedChannels": [
    "assignedChannels"
  ],
  "transferStrategy": "LEAST_BUSY",
  "transferAgentId": "transferAgentId",
  "sendProductImages": true,
  "isActive": true
}'
DELETE/api/v1/ai-agents/{agentId}ai:write

Delete an AI agent

Requires ai:write permission.

Path parameters

agentIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/ai-agents/{agentId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/{agentId}/knowledgeai:read

List agent knowledge entries

Requires ai:read permission.

Path parameters

agentIdrequiredstring

Query parameters

categorystring
includeInactiveboolean
limitintegerDefault 50.
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/knowledge" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/{agentId}/knowledge/categoriesai:read

List agent knowledge categories

Requires ai:read permission.

Path parameters

agentIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/knowledge/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/{agentId}/knowledge/{knowledgeId}ai:read

Get an agent knowledge entry

Requires ai:read permission.

Path parameters

agentIdrequiredstring
knowledgeIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/knowledge/{knowledgeId}" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/ai-agents/{agentId}/knowledge/{knowledgeId}ai:write

Delete an agent knowledge entry

Requires ai:write permission.

Path parameters

agentIdrequiredstring
knowledgeIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/knowledge/{knowledgeId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/upload/infoai:read

Get supported knowledge upload file types

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/upload/info" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/logsai:read

List agent event logs

Requires ai:read permission.

Query parameters

agentIdstring
eventTypeMESSAGE_RECEIVED | MESSAGE_SENT | KNOWLEDGE_SEARCH | KNOWLEDGE_HIT | KNOWLEDGE_MISS | FUNCTION_CALLED | FUNCTION_SUCCESS | FUNCTION_FAILED | TASK_CREATED | LEAD_ASSIGNED | APPOINTMENT_BOOKED | ORDER_CREATED | TICKET_CREATED | HANDOFF_REQUESTED | HANDOFF_COMPLETED | ERROR_OCCURRED | RATE_LIMITED | QUOTA_EXCEEDEDMust be one of the listed values.
startDatestringISO date.
endDatestringISO date.
limitintegerDefault 50.
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/logs" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/logs/statsai:read

Get agent log stats

Requires ai:read permission.

Query parameters

agentIdstringOne agent instead of all.
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/logs/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/functions/builtinai:read

List built-in agent functions

Requires ai:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/functions/builtin" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ai-agents/{agentId}/functionsai:read

List agent functions

Requires ai:read permission.

Path parameters

agentIdrequiredstring

Query parameters

includeDisabledboolean
curl -X GET "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/functions" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/ai-agents/{agentId}/functionsai:write

Create an agent function

Requires ai:write permission.

Path parameters

agentIdrequiredstring

Body

namerequiredstringLowercase with underscores (max 50 chars).
displayNamerequiredstringHuman-readable name (max 100 chars).
descriptionrequiredstringWhat the function does (max 500 chars); shown to the model as the function description.
parametersrequiredobjectJSON Schema object describing the function parameters.
executorTypeINTERNAL | WEBHOOK | AUTOMATIONDefaults to INTERNAL.
executorConfigobjectExecutor-specific config (e.g. webhook URL).
curl -X POST "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/functions" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "check_order_status",
  "displayName": "Check order status",
  "description": "description",
  "parameters": {},
  "executorType": "INTERNAL",
  "executorConfig": {}
}'
PUT/api/v1/ai-agents/{agentId}/functions/{functionId}ai:write

Update an agent function

Requires ai:write permission.

Path parameters

agentIdrequiredstring
functionIdrequiredstring

Body

namestringLowercase with underscores (max 50 chars).
displayNamestringHuman-readable name (max 100 chars).
descriptionstringWhat the function does (max 500 chars); shown to the model as the function description.
parametersobjectJSON Schema object describing the function parameters.
executorTypeINTERNAL | WEBHOOK | AUTOMATIONDefaults to INTERNAL.
executorConfigobjectExecutor-specific config (e.g. webhook URL).
isEnabledbooleanWhether the function is enabled.
curl -X PUT "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/functions/{functionId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "check_order_status",
  "displayName": "Check order status",
  "description": "description",
  "parameters": {},
  "executorType": "INTERNAL",
  "executorConfig": {},
  "isEnabled": true
}'
DELETE/api/v1/ai-agents/{agentId}/functions/{functionId}ai:write

Delete an agent function

Requires ai:write permission.

Path parameters

agentIdrequiredstring
functionIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/functions/{functionId}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/ai-agents/{agentId}/functions/{functionId}/toggleai:write

Enable or disable an agent function

Requires ai:write permission.

Path parameters

agentIdrequiredstring
functionIdrequiredstring

Body

isEnabledrequiredbooleanEnable or disable the function.
curl -X PATCH "https://api.inboxy.chat/api/v1/ai-agents/{agentId}/functions/{functionId}/toggle" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "isEnabled": true
}'
POST/api/v1/ai-agents/functions/syncai:write

Sync built-in functions to all agents

Requires ai:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/ai-agents/functions/sync" \
  -H "Authorization: Bearer inboxy_your_token"

CSAT

GET/api/v1/csat/configanalytics:read

Get the CSAT survey config

Requires analytics:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/csat/config" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/csat/analyticsanalytics:read

Get CSAT analytics for a period

Requires analytics:read permission.

Query parameters

period7d | 30d | 90dReporting window (default 30d).
curl -X GET "https://api.inboxy.chat/api/v1/csat/analytics" \
  -H "Authorization: Bearer inboxy_your_token"

Team

GET/api/v1/teamteam:read

List team members

Requires team:read permission.

Query parameters

searchstringName or email.
roleCOMPANY_ADMIN | MANAGER | AGENT | VIEWER
isActivetrue | false
limitintegerPage size (default 50).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/team" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/team/{userId}team:read

Get a team member

Requires team:read permission.

Path parameters

userIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/team/{userId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/team/statsteam:read

Get team headcount and role breakdown

Requires team:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/team/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/companyteam:read

Get company profile and settings

Requires team:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/company" \
  -H "Authorization: Bearer inboxy_your_token"

Conversations

GET/api/v1/inbox/conversationsconversations:read

List inbox conversations

Requires conversations:read permission.

Query parameters

statusstringConversation status, e.g. OPEN or CLOSED.
channelTypestringChannel type, e.g. WHATSAPP or INSTAGRAM.
assignedToIdstringOnly conversations assigned to this user.
unassignedbooleanOnly unassigned conversations (overrides assignedToId).
unreadbooleanOnly conversations with unread messages.
aiEnabledbooleanFilter by whether the AI agent is on.
searchstringContact name or phone.
tagIdsstringComma-separated contact tag ids.
dateFromstringISO date; last message on or after.
dateTostringISO date; last message on or before.
limitintegerMax rows, up to 1000 (default 50).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/inbox/conversations" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/inbox/conversations/{conversationId}conversations:read

Get a conversation

Requires conversations:read permission.

Path parameters

conversationIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/inbox/conversations/{conversationId}/messagesmessages:read

List messages in a conversation

Requires messages:read permission.

Path parameters

conversationIdrequiredstring

Query parameters

limitintegerMax messages, up to 200 (default 100).
beforestringISO date cursor: messages older than this (scroll back).
afterstringISO date cursor: messages newer than this. Wins over before.
curl -X GET "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/messages" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/inbox/conversations/{conversationId}/windowconversations:read

Check the 24-hour messaging window

Requires conversations:read permission.

Path parameters

conversationIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/window" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/inbox/conversations/{conversationId}/assignconversations:write

Assign a conversation to an agent

Requires conversations:write permission.

Path parameters

conversationIdrequiredstring

Body

assignedToIdstringUser ID to assign the conversation to, or null to unassign. Must belong to the same company.
curl -X PATCH "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/assign" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "assignedToId": "usr_2n4k1x9p0q"
}'
PATCH/api/v1/inbox/conversations/{conversationId}/statusconversations:write

Change conversation status

Requires conversations:write permission.

Path parameters

conversationIdrequiredstring

Body

statusrequiredopen | pending | resolved | closedNew conversation status.
curl -X PATCH "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/status" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "resolved"
}'
PATCH/api/v1/inbox/conversations/{conversationId}/labelsconversations:write

Set conversation labels

Requires conversations:write permission.

Path parameters

conversationIdrequiredstring

Body

labelsstring[]Full list of labels to set on the conversation (replaces existing labels).
curl -X PATCH "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/labels" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "labels": [
    "vip",
    "needs-followup"
  ]
}'
GET/api/v1/inbox/conversations/{conversationId}/notes/listconversations:read

List internal notes

Requires conversations:read permission.

Path parameters

conversationIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/notes/list" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/inbox/conversations/{conversationId}/notes/listconversations:write

Add an internal note

Requires conversations:write permission.

Path parameters

conversationIdrequiredstring

Body

contentrequiredstringInternal note text, visible only to your team.
curl -X POST "https://api.inboxy.chat/api/v1/inbox/conversations/{conversationId}/notes/list" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "Customer asked about bulk pricing — follow up Thursday."
}'
GET/api/v1/public/conversationsconversations:read

List conversations

Get a paginated list of conversations with filters. Requires conversations:read permission.

Query parameters

pageinteger
pageSizeinteger
statusstringFilter by status (open, closed, pending)
channelTypestringFilter by channel type (whatsapp, instagram, messenger, widget)
assignedToIdstringFilter by assigned agent ID
unreadbooleanFilter to only unread conversations
searchstringSearch by contact name or phone
dateFromstringFilter messages from this date
dateTostringFilter messages to this date
curl -X GET "https://api.inboxy.chat/api/v1/public/conversations" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/conversations/{id}conversations:read

Get conversation by ID

Get a single conversation with contact, channel, and assigned agent details. Requires conversations:read permission.

Path parameters

idrequiredstringResource ID
curl -X GET "https://api.inboxy.chat/api/v1/public/conversations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"

Automations

GET/api/v1/automations-v2automations:read

List workflows

Requires automations:read permission.

Query parameters

statusDRAFT | ACTIVE | PAUSED | ARCHIVED
channelTypeWHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | WEB | SMS | TIKTOK
searchstringName or description.
limitinteger1–100 (default 20).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/automations-v2automations:write

Create a workflow

Requires automations:write permission.

Body

namerequiredstring
descriptionstring
channelTypeWHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | WEB | SMS | TIKTOK
curl -X POST "https://api.inboxy.chat/api/v1/automations-v2" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Cart recovery on WhatsApp",
  "description": "description",
  "channelType": "WHATSAPP"
}'
POST/api/v1/automations-v2/importautomations:write

Import a workflow document

Requires automations:write permission.

Body

formatVersionrequiredstringThe formatVersion from GET …/:workflowId/export.
namestring
descriptionstring
channelTypeWHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | WEB | SMS | TIKTOK
triggerTyperequiredstringThe event that starts the workflow — any webhook platform event name, e.g. "whatsapp.message.received", "ecommerce.cart.abandoned", "web_event.received".
triggerConfigobjectTrigger filters (channel, keywords, event fields).
nodesrequiredobject[]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.
edgesrequiredobject[]Each edge: `{ id, source, target, sourceHandle? }` referencing node ids. Max 1000.
curl -X POST "https://api.inboxy.chat/api/v1/automations-v2/import" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "formatVersion": "formatVersion",
  "name": "name",
  "description": "description",
  "channelType": "WHATSAPP",
  "triggerType": "ecommerce.cart.abandoned",
  "triggerConfig": {},
  "nodes": [
    {}
  ],
  "edges": [
    {}
  ]
}'
GET/api/v1/automations-v2/{workflowId}automations:read

Get a workflow

Requires automations:read permission.

Path parameters

workflowIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/automations-v2/{workflowId}automations:write

Delete a workflow

Requires automations:write permission.

Path parameters

workflowIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/automations-v2/{workflowId}/graphautomations:read

Get a workflow with its nodes and edges

Requires automations:read permission.

Path parameters

workflowIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/graph" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/automations-v2/{workflowId}/exportautomations:read

Export a workflow as a portable document

Requires automations:read permission.

Path parameters

workflowIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/export" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/automations-v2/{workflowId}/statusautomations:write

Turn a workflow on, pause or archive it

Requires automations:write permission.

Path parameters

workflowIdrequiredstring

Body

statusrequiredDRAFT | ACTIVE | PAUSED | ARCHIVEDACTIVE runs the published version; PAUSED stops new runs.
curl -X PATCH "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/status" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "ACTIVE"
}'
POST/api/v1/automations-v2/{workflowId}/publishautomations:write

Validate and publish a workflow graph

Requires automations:write permission.

Path parameters

workflowIdrequiredstring

Body

triggerTyperequiredstringThe event that starts the workflow — any webhook platform event name, e.g. "whatsapp.message.received", "ecommerce.cart.abandoned", "web_event.received".
triggerConfigobjectTrigger filters (channel, keywords, event fields).
nodesrequiredobject[]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.
edgesrequiredobject[]Each edge: `{ id, source, target, sourceHandle? }` referencing node ids. Max 1000.
curl -X POST "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/publish" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "triggerType": "ecommerce.cart.abandoned",
  "triggerConfig": {},
  "nodes": [
    {}
  ],
  "edges": [
    {}
  ]
}'
GET/api/v1/automations-v2/{workflowId}/runsautomations:read

List runs (execution history)

Requires automations:read permission.

Path parameters

workflowIdrequiredstring

Query parameters

statusPENDING | RUNNING | WAITING | SUCCEEDED | FAILED | CANCELLED
limitinteger1–100 (default 20).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/runs" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/automations-v2/{workflowId}/runs/{runId}automations:read

Get one run with its steps

Requires automations:read permission.

Path parameters

workflowIdrequiredstring
runIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/runs/{runId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/automations-v2/{workflowId}/statsanalytics:read

Run statistics for a workflow

Requires analytics:read permission.

Path parameters

workflowIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/automations-v2/{workflowId}/sample-eventsautomations:read

Recent real events this workflow’s trigger would receive

Requires automations:read permission.

Path parameters

workflowIdrequiredstring

Query parameters

typestringEvent type to sample (default: the workflow's trigger), e.g. whatsapp.message.received.
limitinteger1–10 (default 5).
curl -X GET "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/sample-events" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/automations-v2/{workflowId}/test-runautomations:write

Dry-run a workflow on a sample event (nothing is sent)

Requires automations:write permission.

Path parameters

workflowIdrequiredstring

Body

conversationIdstringDefaults to the most recent conversation.
sampleMessagestringText injected into the sample trigger event. Dry run: nothing is sent and no AI is billed.
curl -X POST "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/test-run" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "conversationId": "conversationId",
  "sampleMessage": "do you ship to Jeddah?"
}'
POST/api/v1/automations-v2/{workflowId}/test-armautomations:write

Capture the next real trigger event as a sample (60 seconds)

Requires automations:write permission.

Path parameters

workflowIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/automations-v2/{workflowId}/test-arm" \
  -H "Authorization: Bearer inboxy_your_token"

Interactive messages

GET/api/v1/interactive-messageslibrary:read

List saved interactive messages

Requires library:read permission.

Query parameters

typeBUTTONS | LIST | LOCATION | CONTACT | CTA_URL | LOCATION_REQUEST
categorystring
isActivebooleanDefaults to active only.
searchstringName, description or tags.
curl -X GET "https://api.inboxy.chat/api/v1/interactive-messages" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/interactive-messageslibrary:write

Save an interactive message

Requires library:write permission.

Body

namerequiredstring
descriptionstring
typerequiredBUTTONS | LIST | LOCATION | CONTACT | CTA_URL | LOCATION_REQUEST
configrequiredobjectBUTTONS: `{body, header?, headerImage?, footer?, buttons:[{id,title}]}` (max 3). LIST: `{body, buttonText, sections:[{title, rows:[{id,title,description?}]}]}`. LOCATION: `{latitude, longitude, name?, address?}`. CONTACT: WhatsApp contact card. CTA_URL: `{body, buttonText, url}`. LOCATION_REQUEST: `{body}`.
categorystring
tagsstring[]
curl -X POST "https://api.inboxy.chat/api/v1/interactive-messages" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Main menu",
  "description": "description",
  "type": "BUTTONS",
  "config": {
    "body": "How can we help?",
    "buttons": [
      {
        "id": "orders",
        "title": "My orders"
      },
      {
        "id": "agent",
        "title": "Talk to us"
      }
    ]
  },
  "category": "category",
  "tags": [
    "tags"
  ]
}'
GET/api/v1/interactive-messages/statslibrary:read

Saved interactive message stats

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/interactive-messages/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/interactive-messages/categorieslibrary:read

List library categories

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/interactive-messages/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/interactive-messages/{id}library:read

Get a saved interactive message

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/interactive-messages/{id}library:write

Update a saved interactive message

Requires library:write permission.

Path parameters

idrequiredstring

Body

namestring
descriptionstring
configobject
categorystring
tagsstring[]
isActiveboolean
curl -X PUT "https://api.inboxy.chat/api/v1/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "config": {},
  "category": "category",
  "tags": [
    "tags"
  ],
  "isActive": true
}'
DELETE/api/v1/interactive-messages/{id}library:write

Delete a saved interactive message

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/interactive-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/interactive-messages/{id}/duplicatelibrary:write

Duplicate a saved interactive message

Requires library:write permission.

Path parameters

idrequiredstring

Body

namerequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/interactive-messages/{id}/duplicate" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Main menu (copy)"
}'

Quick Replies

GET/api/v1/quick-replieslibrary:read

List quick replies

Requires library:read permission.

Query parameters

categorystring
isActivebooleanFilter by active state.
searchstring
curl -X GET "https://api.inboxy.chat/api/v1/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/quick-replieslibrary:write

Create a quick reply

Requires library:write permission.

Body

shortcutrequiredstringSlash-command shortcut, unique per company.
labelrequiredstringDisplay label.
textrequiredstringReply text to insert.
categorystringCategory to group under.
curl -X POST "https://api.inboxy.chat/api/v1/quick-replies" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "shortcut": "/refund",
  "label": "Refund policy",
  "text": "text",
  "category": "category"
}'
GET/api/v1/quick-replies/categorieslibrary:read

List quick reply categories

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/quick-replies/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/quick-replies/{id}library:read

Get a quick reply

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/quick-replies/{id}library:write

Update a quick reply

Requires library:write permission.

Path parameters

idrequiredstring

Body

shortcutstringSlash-command shortcut.
labelstringDisplay label.
textstringReply text.
categorystringCategory to group under.
isActivebooleanWhether the quick reply is active.
curl -X PUT "https://api.inboxy.chat/api/v1/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "shortcut": "shortcut",
  "label": "label",
  "text": "text",
  "category": "category",
  "isActive": true
}'
DELETE/api/v1/quick-replies/{id}library:write

Delete a quick reply

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/quick-replies/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/quick-replies/{id}/uselibrary:write

Record quick reply usage

Requires library:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/quick-replies/{id}/use" \
  -H "Authorization: Bearer inboxy_your_token"

Saved Contacts

GET/api/v1/saved-contactslibrary:read

List saved contacts

Requires library:read permission.

Query parameters

categorystring
isActivebooleanFilter by active state.
searchstring
curl -X GET "https://api.inboxy.chat/api/v1/saved-contacts" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/saved-contactslibrary:write

Create a saved contact

Requires library:write permission.

Body

namerequiredstringContact display name.
formattedNamerequiredstringFormatted display name used in the vCard.
phonesobject[]
emailsobject[]
organizationstringCompany/organization name.
titlestringJob title.
addressesobject[]
urlsobject[]
categorystringCategory to group under.
curl -X POST "https://api.inboxy.chat/api/v1/saved-contacts" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ahmed Al-Otaibi",
  "formattedName": "Ahmed Al-Otaibi - Sales",
  "phones": [
    {
      "type": "WORK",
      "phone": "966500000000"
    }
  ],
  "emails": [
    {
      "type": "WORK",
      "email": "customer@example.com"
    }
  ],
  "organization": "organization",
  "title": "title",
  "addresses": [
    {
      "type": "WORK",
      "street": "street",
      "city": "city",
      "state": "state",
      "zip": "zip",
      "country": "country"
    }
  ],
  "urls": [
    {
      "type": "WORK",
      "url": "url"
    }
  ],
  "category": "category"
}'
GET/api/v1/saved-contacts/categorieslibrary:read

List saved contact categories

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/saved-contacts/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/saved-contacts/{id}library:read

Get a saved contact

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/saved-contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/saved-contacts/{id}library:write

Update a saved contact

Requires library:write permission.

Path parameters

idrequiredstring

Body

namestringContact display name.
formattedNamestringFormatted display name used in the vCard.
phonesobject[]
emailsobject[]
organizationstringCompany/organization name.
titlestringJob title.
addressesobject[]
urlsobject[]
categorystringCategory to group under.
isActivebooleanWhether the saved contact is active.
curl -X PUT "https://api.inboxy.chat/api/v1/saved-contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "formattedName": "formattedName",
  "phones": [
    {
      "type": "WORK",
      "phone": "966500000000"
    }
  ],
  "emails": [
    {
      "type": "WORK",
      "email": "customer@example.com"
    }
  ],
  "organization": "organization",
  "title": "title",
  "addresses": [
    {
      "type": "WORK",
      "street": "street",
      "city": "city",
      "state": "state",
      "zip": "zip",
      "country": "country"
    }
  ],
  "urls": [
    {
      "type": "WORK",
      "url": "url"
    }
  ],
  "category": "category",
  "isActive": true
}'
DELETE/api/v1/saved-contacts/{id}library:write

Delete a saved contact

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/saved-contacts/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/saved-contacts/{id}/whatsapplibrary:read

Get a saved contact in WhatsApp vCard format

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/saved-contacts/{id}/whatsapp" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/saved-contacts/{id}/uselibrary:write

Record saved contact usage

Requires library:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/saved-contacts/{id}/use" \
  -H "Authorization: Bearer inboxy_your_token"

Saved Locations

GET/api/v1/saved-locationslibrary:read

List saved locations

Requires library:read permission.

Query parameters

categorystring
isActivebooleanFilter by active state.
searchstring
curl -X GET "https://api.inboxy.chat/api/v1/saved-locations" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/saved-locationslibrary:write

Create a saved location

Requires library:write permission.

Body

namerequiredstringLocation name.
addressstringStreet address.
latituderequirednumber
longituderequirednumber
categorystringCategory to group under.
isActivebooleanDefaults to true.
curl -X POST "https://api.inboxy.chat/api/v1/saved-locations" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Main Warehouse",
  "address": "address",
  "latitude": 24.7136,
  "longitude": 46.6753,
  "category": "category",
  "isActive": true
}'
GET/api/v1/saved-locations/categorieslibrary:read

List saved location categories

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/saved-locations/categories" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/saved-locations/{id}library:read

Get a saved location

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/saved-locations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/saved-locations/{id}library:write

Update a saved location

Requires library:write permission.

Path parameters

idrequiredstring

Body

namestringLocation name.
addressstringStreet address.
latitudenumber
longitudenumber
categorystringCategory to group under.
isActiveboolean
curl -X PUT "https://api.inboxy.chat/api/v1/saved-locations/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "address": "address",
  "latitude": 1,
  "longitude": 1,
  "category": "category",
  "isActive": true
}'
DELETE/api/v1/saved-locations/{id}library:write

Delete a saved location

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/saved-locations/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/saved-locations/{id}/whatsapplibrary:read

Get a saved location in WhatsApp location format

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/saved-locations/{id}/whatsapp" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/saved-locations/{id}/uselibrary:write

Record saved location usage

Requires library:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/saved-locations/{id}/use" \
  -H "Authorization: Bearer inboxy_your_token"

Stores

POST/api/v1/woocommerce/syncchannels:write

Sync from WooCommerce (?full=true for a full reconcile)

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/woocommerce/sync" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/woocommerce/sync/customerschannels:write

Sync WooCommerce customers

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/woocommerce/sync/customers" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/woocommerce/sync/orderschannels:write

Sync WooCommerce orders

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/woocommerce/sync/orders" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/woocommerce/sync/productschannels:write

Sync WooCommerce products

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/woocommerce/sync/products" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/woocommerce/abandoned-cartsecommerce:read

WooCommerce abandoned carts

Requires ecommerce:read permission.

Query parameters

statusABANDONED | RECOVERED | EXPIRED
pageintegerPage number (default 1).
per_pageintegerUp to 100 (default 20).
curl -X GET "https://api.inboxy.chat/api/v1/woocommerce/abandoned-carts" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/woocommerce/abandoned-carts/statsecommerce:read

WooCommerce cart recovery stats

Requires ecommerce:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/woocommerce/abandoned-carts/stats" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/woocommerce/abandoned-carts/{id}/recoverecommerce:write

Mark a WooCommerce cart recovered

Requires ecommerce:write permission.

Path parameters

idrequiredstring

Body

orderIdnumberThe order that recovered the cart, if known.
curl -X PATCH "https://api.inboxy.chat/api/v1/woocommerce/abandoned-carts/{id}/recover" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "orderId": 1
}'
GET/api/v1/shopify/configchannels:read

Shopify connection status (no secrets)

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/shopify/config" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/shopify/syncchannels:write

Sync everything from Shopify

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/shopify/sync" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/shopify/sync/customerschannels:write

Sync Shopify customers

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/shopify/sync/customers" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/shopify/sync/orderschannels:write

Sync Shopify orders

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/shopify/sync/orders" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/shopify/sync/productschannels:write

Sync Shopify products

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/shopify/sync/products" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/salla/configchannels:read

Salla connection status (no secrets)

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/salla/config" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/salla/abandoned-cartsecommerce:read

Salla abandoned carts

Requires ecommerce:read permission.

Query parameters

pageintegerPage number (default 1).
limitintegerUp to 100 (default 20).
statusstring
curl -X GET "https://api.inboxy.chat/api/v1/salla/abandoned-carts" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/salla/abandoned-carts/statsecommerce:read

Salla cart recovery stats

Requires ecommerce:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/salla/abandoned-carts/stats" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/salla/abandoned-carts/{id}/recoverecommerce:write

Mark a Salla cart recovered

Requires ecommerce:write permission.

Path parameters

idrequiredstring

Body

orderIdnumberThe order that recovered the cart, if known.
curl -X PATCH "https://api.inboxy.chat/api/v1/salla/abandoned-carts/{id}/recover" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "orderId": 1
}'
POST/api/v1/salla/syncchannels:write

Sync from Salla

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/salla/sync" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/zid/configchannels:read

Zid connection status (no secrets)

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/zid/config" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/zid/syncchannels:write

Sync orders from Zid

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/zid/sync" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/zid/abandoned-cartsecommerce:read

Zid abandoned carts

Requires ecommerce:read permission.

Query parameters

pageintegerPage number (default 1).
limitintegerUp to 100 (default 20).
statusABANDONED | RECOVERED | COMPLETED
curl -X GET "https://api.inboxy.chat/api/v1/zid/abandoned-carts" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/easy-orders/configchannels:read

EasyOrders connection status (no secrets)

Requires channels:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/easy-orders/config" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/easy-orders/syncchannels:write

Sync from EasyOrders

Requires channels:write permission.

curl -X POST "https://api.inboxy.chat/api/v1/easy-orders/sync" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ecommerce/overviewecommerce:read

Store KPIs: orders, revenue, store connectivity

Requires ecommerce:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/ecommerce/overview" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/ecommerce/customersecommerce:read

List store customers across platforms

Requires ecommerce:read permission.

Query parameters

pageintegerPage number (default 1).
pageSizeintegerUp to 100 (default 25).
searchstringName, email or phone.
platformstringComma-separated: SHOPIFY, SALLA, WOOCOMMERCE, ZID, EASYORDERS.
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

idrequiredstring
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

namerequiredstringWebhook name.
urlrequiredstringHTTPS endpoint to receive events. Must be a public, non-private-network URL.
eventsrequiredstring[]Events to receive: exact names from GET /api/v1/webhooks/events, "*" for everything, or a prefix wildcard such as "whatsapp.*", "ecommerce.order.*" or "ticket.*".
maxRetriesnumberMax delivery retry attempts.
fieldExclusionsstring[]Dot-separated payload paths to omit from delivered payloads (max 20).
consecutiveFailureThresholdnumberConsecutive failures (5-1000) before the webhook auto-pauses.
curl -X POST "https://api.inboxy.chat/api/v1/webhooks" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Order sync",
  "url": "https://example.com/webhooks/inboxy",
  "events": [
    "message.received",
    "ecommerce.order.*",
    "ticket.created"
  ],
  "maxRetries": 1,
  "fieldExclusions": [
    "fieldExclusions"
  ],
  "consecutiveFailureThreshold": 1
}'
GET/api/v1/webhooks/{webhookId}webhooks:read

Get a webhook

Requires webhooks:read permission.

Path parameters

webhookIdrequiredstring
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

webhookIdrequiredstring

Body

namestringWebhook name.
urlstringHTTPS endpoint to receive events.
eventsstring[]Events to receive: exact names from GET /api/v1/webhooks/events, "*" for everything, or a prefix wildcard such as "whatsapp.*", "ecommerce.order.*" or "ticket.*".
statusACTIVE | PAUSED | FAILEDWebhook status.
maxRetriesnumberMax delivery retry attempts.
fieldExclusionsstring[]Dot-separated payload paths to omit from delivered payloads (max 20).
consecutiveFailureThresholdnumberConsecutive failures (5-1000) before the webhook auto-pauses.
curl -X PUT "https://api.inboxy.chat/api/v1/webhooks/{webhookId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "url": "url",
  "events": [
    "message.received",
    "ecommerce.order.*",
    "ticket.created"
  ],
  "status": "ACTIVE",
  "maxRetries": 1,
  "fieldExclusions": [
    "fieldExclusions"
  ],
  "consecutiveFailureThreshold": 1
}'
DELETE/api/v1/webhooks/{webhookId}webhooks:write

Delete a webhook

Requires webhooks:write permission.

Path parameters

webhookIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/webhooks/{webhookId}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/webhooks/{webhookId}/testwebhooks:write

Send a test delivery

Requires webhooks:write permission.

Path parameters

webhookIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/webhooks/{webhookId}/test" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/webhooks/{webhookId}/logswebhooks:read

List webhook deliveries

Requires webhooks:read permission.

Path parameters

webhookIdrequiredstring

Query parameters

limitintegerMax deliveries (default 50).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/webhooks/{webhookId}/logs" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/webhooks/{webhookId}/secretwebhooks:write

Reveal the signing secret (to verify X-Inboxy-Signature)

Requires webhooks:write permission.

Path parameters

webhookIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/webhooks/{webhookId}/secret" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/webhooks/{webhookId}/regenerate-secretwebhooks:write

Rotate the signing secret

Requires webhooks:write permission.

Path parameters

webhookIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/webhooks/{webhookId}/regenerate-secret" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/webhooks/{webhookId}/replaywebhooks:write

Redeliver the failed deliveries of the last 7 days

Requires webhooks:write permission.

Path parameters

webhookIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/webhooks/{webhookId}/replay" \
  -H "Authorization: Bearer inboxy_your_token"

Orders

GET/api/v1/ordersorders:read

List orders

Requires orders:read permission.

Query parameters

contactIdstring
statusstringComma-separated: PENDING, CONFIRMED, PROCESSING, COMPLETED, CANCELLED, REFUNDED.
paymentStatusstringComma-separated: UNPAID, PARTIALLY_PAID, PAID, REFUNDED.
fulfillmentStatusstringComma-separated: UNFULFILLED, PARTIALLY_FULFILLED, SHIPPED, DELIVERED, FULFILLED, RETURNED.
externalSourcestringComma-separated: WHATSAPP_COMMERCE, WOOCOMMERCE, SHOPIFY, SALLA, ZID, EASY_ORDERS, MANUAL, AI_AGENT, WEB_EVENT.
minTotalnumber
maxTotalnumber
dateAfterstringISO date-time.
dateBeforestringISO date-time.
searchstringOrder number or customer.
pageintegerPage number (default 1).
limitinteger
sortByorderDate | total | createdAt
sortOrderasc | descSort direction.
curl -X GET "https://api.inboxy.chat/api/v1/orders" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/ordersorders:write

Create an order

Requires orders:write permission.

Body

contactIdrequiredstringContact this order belongs to.
externalIdstringID of this order in the external source system.
externalSourcerequiredWHATSAPP_COMMERCE | WOOCOMMERCE | SHOPIFY | SALLA | ZID | EASY_ORDERS | MANUAL | AI_AGENT | WEB_EVENTWhere the order came from.
orderNumberrequiredstringHuman-readable order number.
statusPENDING | CONFIRMED | PROCESSING | COMPLETED | CANCELLED | REFUNDEDOrder status. Defaults to PENDING.
subtotalrequirednumberSubtotal before tax/shipping/discount.
taxnumberTax amount.
shippingnumberShipping cost.
discountnumberDiscount amount.
totalrequirednumberOrder total.
currencystringISO currency code.
paymentMethodstringPayment method used.
paymentStatusUNPAID | PARTIALLY_PAID | PAID | REFUNDEDPayment status. Defaults to UNPAID.
fulfillmentStatusUNFULFILLED | PARTIALLY_FULFILLED | SHIPPED | DELIVERED | FULFILLED | RETURNEDFulfillment status. Defaults to UNFULFILLED.
billingAddressobjectBilling address fields.
shippingAddressobjectShipping address fields.
customerNotestringNote from the customer.
internalNotestringInternal-only note.
orderDatestringOrder date, ISO 8601. Defaults to now.
metadataobjectArbitrary key/value metadata.
itemsstring[]Line items: { name, quantity, unitPrice, totalPrice, sku?, productId?, imageUrl?, variant? }.
curl -X POST "https://api.inboxy.chat/api/v1/orders" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "contactId",
  "externalId": "externalId",
  "externalSource": "MANUAL",
  "orderNumber": "ORD-1042",
  "status": "PENDING",
  "subtotal": 199,
  "tax": 1,
  "shipping": 1,
  "discount": 1,
  "total": 199,
  "currency": "SAR",
  "paymentMethod": "cod",
  "paymentStatus": "UNPAID",
  "fulfillmentStatus": "UNFULFILLED",
  "billingAddress": {},
  "shippingAddress": {},
  "customerNote": "customerNote",
  "internalNote": "internalNote",
  "orderDate": "orderDate",
  "metadata": {},
  "items": []
}'
GET/api/v1/orders/statsorders:read

Order statistics

Requires orders:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/orders/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/orders/{id}orders:read

Get an order

Requires orders:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/orders/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/orders/{id}orders:write

Update an order

Requires orders:write permission.

Path parameters

idrequiredstring

Body

statusPENDING | CONFIRMED | PROCESSING | COMPLETED | CANCELLED | REFUNDEDOrder status.
paymentStatusUNPAID | PARTIALLY_PAID | PAID | REFUNDEDPayment status.
paymentMethodstringPayment method used.
fulfillmentStatusUNFULFILLED | PARTIALLY_FULFILLED | SHIPPED | DELIVERED | FULFILLED | RETURNEDFulfillment status.
shippingAddressobjectShipping address fields.
billingAddressobjectBilling address fields.
customerNotestringNote from the customer.
internalNotestringInternal-only note.
metadataobjectArbitrary key/value metadata.
confirmationStatusUNCONFIRMED | PENDING_CONFIRMATION | CONFIRMED | FAILED | CANCELLED_BY_CUSTOMEROrder confirmation status.
confirmationChannelstringChannel the confirmation was collected on.
trackingNumberstringShipment tracking number.
trackingCarrierstringShipment carrier name.
trackingUrlstringShipment tracking URL.
cancellationReasonstringReason for cancellation.
refundReasonstringReason for refund.
refundAmountnumberAmount refunded.
curl -X PUT "https://api.inboxy.chat/api/v1/orders/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "PENDING",
  "paymentStatus": "UNPAID",
  "paymentMethod": "paymentMethod",
  "fulfillmentStatus": "UNFULFILLED",
  "shippingAddress": {},
  "billingAddress": {},
  "customerNote": "customerNote",
  "internalNote": "internalNote",
  "metadata": {},
  "confirmationStatus": "UNCONFIRMED",
  "confirmationChannel": "confirmationChannel",
  "trackingNumber": "trackingNumber",
  "trackingCarrier": "trackingCarrier",
  "trackingUrl": "trackingUrl",
  "cancellationReason": "cancellationReason",
  "refundReason": "refundReason",
  "refundAmount": 1
}'
DELETE/api/v1/orders/{id}orders:write

Delete an order

Requires orders:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/orders/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/orders/{id}/statusorders:write

Change order status

Requires orders:write permission.

Path parameters

idrequiredstring

Body

statusrequiredPENDING | CONFIRMED | PROCESSING | COMPLETED | CANCELLED | REFUNDEDNew order status.
cancellationReasonstringReason for cancellation, stored when status is CANCELLED.
curl -X PATCH "https://api.inboxy.chat/api/v1/orders/{id}/status" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "CONFIRMED",
  "cancellationReason": "cancellationReason"
}'
PATCH/api/v1/orders/{id}/paymentorders:write

Change payment status

Requires orders:write permission.

Path parameters

idrequiredstring

Body

paymentStatusUNPAID | PARTIALLY_PAID | PAID | REFUNDEDNew payment status. Setting PAID auto-captures the token owner as paidByUserId.
paymentMethodstringPayment method used.
curl -X PATCH "https://api.inboxy.chat/api/v1/orders/{id}/payment" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "paymentStatus": "PAID",
  "paymentMethod": "card"
}'
PATCH/api/v1/orders/{id}/fulfillmentorders:write

Change fulfillment status

Requires orders:write permission.

Path parameters

idrequiredstring

Body

fulfillmentStatusrequiredUNFULFILLED | PARTIALLY_FULFILLED | SHIPPED | DELIVERED | FULFILLED | RETURNEDNew fulfillment status.
trackingNumberstringShipment tracking number.
trackingCarrierstringShipment carrier name.
trackingUrlstringShipment tracking URL.
curl -X PATCH "https://api.inboxy.chat/api/v1/orders/{id}/fulfillment" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "fulfillmentStatus": "SHIPPED",
  "trackingNumber": "trackingNumber",
  "trackingCarrier": "Aramex",
  "trackingUrl": "trackingUrl"
}'
PATCH/api/v1/orders/{id}/confirmationorders:write

Set the order confirmation status

Requires orders:write permission.

Path parameters

idrequiredstring

Body

confirmationStatusrequiredUNCONFIRMED | PENDING_CONFIRMATION | CONFIRMED | FAILED | CANCELLED_BY_CUSTOMER
confirmationChannelstring
confirmationMessageIdstring
curl -X PATCH "https://api.inboxy.chat/api/v1/orders/{id}/confirmation" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "confirmationStatus": "CONFIRMED",
  "confirmationChannel": "whatsapp",
  "confirmationMessageId": "confirmationMessageId"
}'
POST/api/v1/orders/{id}/push-to-platformorders:write

Push an Inboxy-created order to the connected store (Shopify, Salla, WooCommerce)

Requires orders:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/orders/{id}/push-to-platform" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/orders/{id}/messagesorders:read

Messages linked to an order

Requires orders:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/orders/{id}/messages" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/orders/{id}/messagesorders:write

Link a message to an order

Requires orders:write permission.

Path parameters

idrequiredstring

Body

messageIdrequiredstring
typerequiredCONFIRMATION | STATUS_UPDATE | PAYMENT_REMINDER | SHIPPING_UPDATE | CUSTOM
metadataobject
curl -X POST "https://api.inboxy.chat/api/v1/orders/{id}/messages" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "messageId": "messageId",
  "type": "SHIPPING_UPDATE",
  "metadata": {}
}'
GET/api/v1/orders/{id}/confirmation-threadorders:read

The WhatsApp confirmation exchange for an order

Requires orders:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/orders/{id}/confirmation-thread" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/ordersorders:read

List orders

Get a paginated list of orders with filters. Requires orders:read permission.

Query parameters

pageinteger
pageSizeinteger
statusstringFilter by order status
dateAfterstringOrders created after this date
dateBeforestringOrders created before this date
searchstringSearch by order number or customer name
curl -X GET "https://api.inboxy.chat/api/v1/public/orders" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/orders/{id}orders:read

Get order by ID

Get a single order with line items. Requires orders:read permission.

Path parameters

idrequiredstringResource ID
curl -X GET "https://api.inboxy.chat/api/v1/public/orders/{id}" \
  -H "Authorization: Bearer inboxy_your_token"

Products and services

GET/api/v1/catalog-cardsproducts:read

List catalog cards (products and services ready to send)

Requires products:read permission.

Query parameters

itemTypeproduct | service
searchstring
pageintegerPage number (24 cards per page).
languagear | en
curl -X GET "https://api.inboxy.chat/api/v1/catalog-cards" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/catalog-cards/statusproducts:read

Store sync state and card readiness

Requires products:read permission.

Query parameters

itemTypeproduct | service
curl -X GET "https://api.inboxy.chat/api/v1/catalog-cards/status" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/catalog-cards/syncproducts:write

Sync the catalog from a connected store

Requires products:write permission.

Body

platformrequiredshopify | salla | zid | woocommerce | easy-orders
curl -X POST "https://api.inboxy.chat/api/v1/catalog-cards/sync" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "platform": "shopify"
}'
GET/api/v1/catalog-cards/{itemType}/{itemId}products:read

Preview one catalog card

Requires products:read permission.

Path parameters

itemTyperequiredstring
itemIdrequiredstring

Query parameters

languagear | en
curl -X GET "https://api.inboxy.chat/api/v1/catalog-cards/{itemType}/{itemId}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/catalog-cards/send/whatsappmessages:send

Send a catalog card on WhatsApp

Requires messages:send permission.

Body

itemTyperequiredproduct | service
itemIdrequiredstring
languagerequiredar | en
conversationIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/catalog-cards/send/whatsapp" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "itemType": "product",
  "itemId": "itemId",
  "language": "ar",
  "conversationId": "conversationId"
}'
POST/api/v1/catalog-cards/send/messengermessages:send

Send a catalog card on Messenger

Requires messages:send permission.

Body

itemTyperequiredproduct | service
itemIdrequiredstring
languagerequiredar | en
conversationIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/catalog-cards/send/messenger" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "itemType": "product",
  "itemId": "itemId",
  "language": "ar",
  "conversationId": "conversationId"
}'
POST/api/v1/catalog-cards/send/instagrammessages:send

Send a catalog card on Instagram

Requires messages:send permission.

Body

itemTyperequiredproduct | service
itemIdrequiredstring
languagerequiredar | en
conversationIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/catalog-cards/send/instagram" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "itemType": "product",
  "itemId": "itemId",
  "language": "ar",
  "conversationId": "conversationId"
}'
POST/api/v1/catalog-cards/send/webmessages:send

Send a catalog card in the website chat

Requires messages:send permission.

Body

itemTyperequiredproduct | service
itemIdrequiredstring
languagerequiredar | en
conversationIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/catalog-cards/send/web" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "itemType": "product",
  "itemId": "itemId",
  "language": "ar",
  "conversationId": "conversationId"
}'
POST/api/v1/catalog-cards/send/telegrammessages:send

Send a catalog card on Telegram

Requires messages:send permission.

Body

itemTyperequiredproduct | service
itemIdrequiredstring
languagerequiredar | en
conversationIdrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/catalog-cards/send/telegram" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "itemType": "product",
  "itemId": "itemId",
  "language": "ar",
  "conversationId": "conversationId"
}'
GET/api/v1/products/statsproducts:read

Product statistics

Requires products:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/products/stats" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/products/mergeproducts:write

Merge a duplicate product into another

Requires products:write permission.

Body

keepIdrequiredstringProduct to keep.
deleteIdrequiredstringDuplicate to delete; its references move to keepId.
curl -X POST "https://api.inboxy.chat/api/v1/products/merge" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "keepId": "keepId",
  "deleteId": "deleteId"
}'
POST/api/v1/products/import-from-url/saveproducts:write

Save extracted products

Requires products:write permission.

Body

productsrequiredobject[]
defaultCurrencystring
curl -X POST "https://api.inboxy.chat/api/v1/products/import-from-url/save" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "products": [
    {
      "name": "Wireless charger",
      "description": "description",
      "price": 129.99,
      "currency": "SAR",
      "imageUrl": "imageUrl"
    }
  ],
  "defaultCurrency": "SAR"
}'
PUT/api/v1/products/categories/{id}products:write

Update a product category

Requires products:write permission.

Path parameters

idrequiredstring
curl -X PUT "https://api.inboxy.chat/api/v1/products/categories/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/products/categories/{id}products:write

Delete a product category

Requires products:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/products/categories/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/productsproducts:read

List products

Requires products:read permission.

Query parameters

searchstringName or SKU.
categoryIdstring
isActivebooleanFilter by active state.
externalSourcestring
pageintegerPage number (default 1).
limitinteger
sortBystring
sortOrderasc | descSort direction.
curl -X GET "https://api.inboxy.chat/api/v1/products" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/products/{id}products:read

Get a product

Requires products:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/products/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/services/statsproducts:read

Service statistics

Requires products:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/services/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/services/categoriesproducts:read

List service categories

Requires products:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/services/categories" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/services/categoriesproducts:write

Create a service category

Requires products:write permission.

Body

namerequiredstring
descriptionstring
sortOrdernumber
curl -X POST "https://api.inboxy.chat/api/v1/services/categories" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "sortOrder": 1
}'
PUT/api/v1/services/categories/{id}products:write

Update a service category

Requires products:write permission.

Path parameters

idrequiredstring

Body

namerequiredstring
descriptionstring
sortOrdernumber
curl -X PUT "https://api.inboxy.chat/api/v1/services/categories/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "sortOrder": 1
}'
DELETE/api/v1/services/categories/{id}products:write

Delete a service category

Requires products:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/services/categories/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/servicesproducts:read

List services

Requires products:read permission.

Query parameters

searchstring
categoryIdstring
isActivebooleanFilter by active state.
pageintegerPage number (default 1).
limitinteger
sortBystring
sortOrderasc | descSort direction.
curl -X GET "https://api.inboxy.chat/api/v1/services" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/servicesproducts:write

Create a service

Requires products:write permission.

Body

namerequiredstring
pricerequirednumber
descriptionstring
currencystring
imagesstring[]
isActiveboolean
durationnumber | nullMinutes.
categoryIdstring
newCategoryNamestringCreate a category with this name instead of categoryId.
metadataobject
curl -X POST "https://api.inboxy.chat/api/v1/services" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Home cleaning (2h)",
  "price": 199,
  "description": "description",
  "currency": "SAR",
  "images": [
    "images"
  ],
  "isActive": true,
  "duration": 1,
  "categoryId": "categoryId",
  "newCategoryName": "newCategoryName",
  "metadata": {}
}'
GET/api/v1/services/{id}products:read

Get a service

Requires products:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/services/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/services/{id}products:write

Update a service

Requires products:write permission.

Path parameters

idrequiredstring

Body

namestring
pricenumber
descriptionstring
currencystring
imagesstring[]
isActiveboolean
durationnumber | nullMinutes.
categoryIdstring
newCategoryNamestringCreate a category with this name instead of categoryId.
metadataobject
curl -X PUT "https://api.inboxy.chat/api/v1/services/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Home cleaning (2h)",
  "price": 199,
  "description": "description",
  "currency": "SAR",
  "images": [
    "images"
  ],
  "isActive": true,
  "duration": 1,
  "categoryId": "categoryId",
  "newCategoryName": "newCategoryName",
  "metadata": {}
}'
DELETE/api/v1/services/{id}products:write

Delete a service

Requires products:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/services/{id}" \
  -H "Authorization: Bearer inboxy_your_token"

Products

GET/api/v1/products/categoriesproducts:read

List product categories

Requires products:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/products/categories" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/products/categoriesproducts:write

Create a product category

Requires products:write permission.

Body

namerequiredstringCategory name.
descriptionstringCategory description.
sortOrdernumberSort order among categories.
curl -X POST "https://api.inboxy.chat/api/v1/products/categories" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Electronics",
  "description": "description",
  "sortOrder": 1
}'
POST/api/v1/productsproducts:write

Create a product

Requires products:write permission.

Body

namerequiredstringProduct name.
pricerequirednumberPrice in the product currency.
descriptionstringProduct description.
skustringStock keeping unit. Must be unique per company.
currencystringISO currency code.
imagesstring[]Image URLs.
isActivebooleanWhether the product is active/visible. Defaults to true.
stockQuantitynumberStock on hand, or null for unlimited/untracked.
categoryIdstringExisting category ID.
newCategoryNamestringCreate a new category with this name instead of using categoryId.
curl -X POST "https://api.inboxy.chat/api/v1/products" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Wireless Charger",
  "price": 129.99,
  "description": "description",
  "sku": "sku",
  "currency": "SAR",
  "images": [
    "images"
  ],
  "isActive": true,
  "stockQuantity": 1,
  "categoryId": "categoryId",
  "newCategoryName": "newCategoryName"
}'
PUT/api/v1/products/{id}products:write

Update a product

Requires products:write permission.

Path parameters

idrequiredstring

Body

namestringProduct name.
pricenumberPrice in the product currency.
descriptionstringProduct description.
skustringStock keeping unit. Must be unique per company.
currencystringISO currency code.
imagesstring[]Image URLs.
isActivebooleanWhether the product is active/visible. Defaults to true.
stockQuantitynumberStock on hand, or null for unlimited/untracked.
categoryIdstringExisting category ID.
newCategoryNamestringCreate a new category with this name instead of using categoryId.
curl -X PUT "https://api.inboxy.chat/api/v1/products/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Wireless Charger",
  "price": 129.99,
  "description": "description",
  "sku": "sku",
  "currency": "SAR",
  "images": [
    "images"
  ],
  "isActive": true,
  "stockQuantity": 1,
  "categoryId": "categoryId",
  "newCategoryName": "newCategoryName"
}'
DELETE/api/v1/products/{id}products:write

Delete a product

Requires products:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/products/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/productsproducts:read

List products

Get a paginated list of products from the catalog. Requires products:read permission.

Query parameters

pageinteger
pageSizeinteger
searchstringSearch by product name or SKU
categoryIdstringFilter by category ID
isActivebooleanFilter 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

idrequiredstringResource 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

namerequiredstring
descriptionstring
authTyperequiredHMAC_SHA256 | API_KEYHow 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.
autoCreateContactbooleanCreate a contact when an event matches none.
contactMappingobject`{ phoneField, emailField, nameField?, autoCreate, enrichFields?, displayColumns? }` — which JSON fields identify the contact.
isEnabledbooleanUpdate only.
curl -X POST "https://api.inboxy.chat/api/v1/web-events" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Landing page form",
  "description": "description",
  "authType": "HMAC_SHA256",
  "autoCreateContact": true,
  "contactMapping": {
    "phoneField": "customer.phone",
    "emailField": "customer.email",
    "nameField": "customer.name",
    "autoCreate": true
  },
  "isEnabled": true
}'
GET/api/v1/web-events/{id}automations:read

Get a web event integration

Requires automations:read permission.

Path parameters

idrequiredstring
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

idrequiredstring

Body

namerequiredstring
descriptionstring
authTyperequiredHMAC_SHA256 | API_KEYHow 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.
autoCreateContactbooleanCreate a contact when an event matches none.
contactMappingobject`{ phoneField, emailField, nameField?, autoCreate, enrichFields?, displayColumns? }` — which JSON fields identify the contact.
isEnabledbooleanUpdate only.
curl -X PUT "https://api.inboxy.chat/api/v1/web-events/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Landing page form",
  "description": "description",
  "authType": "HMAC_SHA256",
  "autoCreateContact": true,
  "contactMapping": {
    "phoneField": "customer.phone",
    "emailField": "customer.email",
    "nameField": "customer.name",
    "autoCreate": true
  },
  "isEnabled": true
}'
DELETE/api/v1/web-events/{id}automations:write

Delete an integration

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/web-events/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/web-events/{id}/toggleautomations:write

Enable or disable an integration

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X PATCH "https://api.inboxy.chat/api/v1/web-events/{id}/toggle" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/web-events/{id}/event-typesautomations:write

Declare an event type

Requires automations:write permission.

Path parameters

idrequiredstring

Body

namerequiredstring
descriptionstring
fieldSchemaobjectExpected payload fields, for variable pickers.
curl -X POST "https://api.inboxy.chat/api/v1/web-events/{id}/event-types" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "signup_completed",
  "description": "description",
  "fieldSchema": {}
}'
DELETE/api/v1/web-events/{id}/event-types/{typeId}automations:write

Remove an event type

Requires automations:write permission.

Path parameters

idrequiredstring
typeIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/web-events/{id}/event-types/{typeId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/web-events/{id}/logsautomations:read

List received events

Requires automations:read permission.

Path parameters

idrequiredstring

Query parameters

pageintegerPage number (default 1).
limitintegerUp to 100 (default 50).
statusRECEIVED | PROCESSING | COMPLETED | FAILED | SKIPPED
startDatestringISO date.
endDatestringISO date.
curl -X GET "https://api.inboxy.chat/api/v1/web-events/{id}/logs" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/web-events/{id}/logs/{logId}automations:read

Get one received event

Requires automations:read permission.

Path parameters

idrequiredstring
logIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/web-events/{id}/logs/{logId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/web-events/{id}/variablesautomations:read

Variables this integration exposes to automations and templates

Requires automations:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/web-events/{id}/variables" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/web-events/{id}/testautomations:write

Send a test event through the integration

Requires automations:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/web-events/{id}/test" \
  -H "Authorization: Bearer inboxy_your_token"

Leads

GET/api/v1/leads/statsleads:read

Get lead pipeline stats

Requires leads:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/leads/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/leads/pipelineleads:read

Get the lead pipeline

Requires leads:read permission.

Query parameters

searchstring
labelstring
assignedAgentIdstring
curl -X GET "https://api.inboxy.chat/api/v1/leads/pipeline" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/leads/listleads:read

List leads (paginated table view)

Requires leads:read permission.

Query parameters

pageintegerPage number (default 1).
limitinteger
searchstringName, email, company or phone.
statusIdstringLead status id (GET /leads/statuses).
priorityinteger0 low … 3 urgent.
assignedAgentIdstring
sourcestring
curl -X GET "https://api.inboxy.chat/api/v1/leads/list" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/leads/suggestleads:write

AI-suggest lead fields from a conversation

Requires leads:write permission.

Body

conversationIdstringConversation to analyze. One of conversationId or contactId is required.
contactIdstringContact whose latest conversation to analyze, if conversationId is omitted.
curl -X POST "https://api.inboxy.chat/api/v1/leads/suggest" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "conversationId": "conversationId",
  "contactId": "contactId"
}'
POST/api/v1/leads/{id}/moveleads:write

Move a lead to a stage

Requires leads:write permission.

Path parameters

idrequiredstring

Body

stagerequiredNEW | CONTACTED | QUALIFIED | NEGOTIATION | WON | LOSTPipeline stage to move the lead to.
curl -X POST "https://api.inboxy.chat/api/v1/leads/{id}/move" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "stage": "QUALIFIED"
}'
POST/api/v1/leads/{id}/winleads:write

Mark a lead won

Requires leads:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/leads/{id}/win" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/leads/{id}/loseleads:write

Mark a lead lost

Requires leads:write permission.

Path parameters

idrequiredstring

Body

reasonstringReason the lead was lost.
curl -X POST "https://api.inboxy.chat/api/v1/leads/{id}/lose" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "reason"
}'
POST/api/v1/leads/{id}/assignleads:write

Assign a lead

Requires leads:write permission.

Path parameters

idrequiredstring

Body

userIdstringUser ID to assign the lead to, or null to unassign.
curl -X POST "https://api.inboxy.chat/api/v1/leads/{id}/assign" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "userId": "userId"
}'
GET/api/v1/leads/statusesleads:read

List lead statuses

Requires leads:read permission.

Query parameters

includeInactivebooleanInclude disabled statuses.
curl -X GET "https://api.inboxy.chat/api/v1/leads/statuses" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/leads/statusesleads:write

Create a lead status

Requires leads:write permission.

Body

labelrequiredstringStatus label (max 60 chars).
labelArstringArabic label (max 60 chars), or null.
colorstringHex color, e.g. #3bc1a8.
bgColorstringHex background color, or null.
iconstringIcon identifier, or null.
isQualifiedbooleanWhether this status counts as qualified.
isFinalbooleanWhether this status is a terminal pipeline stage.
curl -X POST "https://api.inboxy.chat/api/v1/leads/statuses" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "label": "Negotiating",
  "labelAr": "labelAr",
  "color": "#3bc1a8",
  "bgColor": "#dbeafe",
  "icon": "icon",
  "isQualified": true,
  "isFinal": true
}'
PATCH/api/v1/leads/statuses/reorderleads:write

Reorder lead statuses

Requires leads:write permission.

Body

orderedIdsrequiredstring[]Full ordered list of lead status IDs.
curl -X PATCH "https://api.inboxy.chat/api/v1/leads/statuses/reorder" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "orderedIds": [
    "orderedIds"
  ]
}'
PATCH/api/v1/leads/statuses/{statusId}leads:write

Update a lead status

Requires leads:write permission.

Path parameters

statusIdrequiredstring

Body

labelstringStatus label (max 60 chars).
labelArstringArabic label, or null.
colorstringHex color.
bgColorstringHex background color, or null.
iconstringIcon identifier, or null.
isQualifiedboolean
isFinalboolean
isActiveboolean
curl -X PATCH "https://api.inboxy.chat/api/v1/leads/statuses/{statusId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "label": "label",
  "labelAr": "labelAr",
  "color": "color",
  "bgColor": "bgColor",
  "icon": "icon",
  "isQualified": true,
  "isFinal": true,
  "isActive": true
}'
DELETE/api/v1/leads/statuses/{statusId}leads:write

Delete a lead status

Requires leads:write permission.

Path parameters

statusIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/leads/statuses/{statusId}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/leads/{id}/statusleads:write

Set lead status

Requires leads:write permission.

Path parameters

idrequiredstring

Body

statusIdrequiredstringID of one of the company's configured lead statuses (GET /leads/statuses).
curl -X PATCH "https://api.inboxy.chat/api/v1/leads/{id}/status" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "statusId": "statusId"
}'
PATCH/api/v1/leads/{id}/ratingleads:write

Set lead star rating

Requires leads:write permission.

Path parameters

idrequiredstring

Body

ratingrequirednumber1-5, or null to clear.
curl -X PATCH "https://api.inboxy.chat/api/v1/leads/{id}/rating" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "rating": 5
}'
PATCH/api/v1/leads/{id}/priorityleads:write

Set lead priority

Requires leads:write permission.

Path parameters

idrequiredstring

Body

priorityrequirednumber0 (low) to 3 (urgent), or null to clear.
curl -X PATCH "https://api.inboxy.chat/api/v1/leads/{id}/priority" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "priority": 2
}'
GET/api/v1/leads/{id}/feedbackleads:read

List the feedback thread on a lead

Requires leads:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/leads/{id}/feedback" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/leads/{id}/feedbackleads:write

Add a lead feedback entry

Requires leads:write permission.

Path parameters

idrequiredstring

Body

bodyrequiredstringFeedback text (max 5000 chars).
ratingnumber1-5, optional.
typePOSITIVE | NEUTRAL | NEGATIVEDefaults to NEUTRAL.
curl -X POST "https://api.inboxy.chat/api/v1/leads/{id}/feedback" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "body": "Very responsive, asked for a discount.",
  "rating": 1,
  "type": "POSITIVE"
}'
POST/api/v1/leads/{id}/follow-upleads:write

Schedule a lead follow-up task

Requires leads:write permission.

Path parameters

idrequiredstring

Body

titlerequiredstringFollow-up task title.
dueDaterequiredstringDue date, ISO 8601.
descriptionstringOptional description.
curl -X POST "https://api.inboxy.chat/api/v1/leads/{id}/follow-up" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Call back about pricing",
  "dueDate": "dueDate",
  "description": "description"
}'
GET/api/v1/leads/{id}/follow-upsleads:read

List lead follow-up tasks

Requires leads:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/leads/{id}/follow-ups" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/leads/{id}leads:read

Get a lead

Requires leads:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/leads/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/leadsleads:read

List leads

Get a paginated list of leads (contacts in LEAD lifecycle stage). Requires leads:read permission.

Query parameters

pageinteger
pageSizeinteger
stagestringFilter by pipeline stage (e.g., NEW, QUALIFIED, PROPOSAL)
searchstringSearch by name, phone, or email
curl -X GET "https://api.inboxy.chat/api/v1/public/leads" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/leads/{id}leads:read

Get lead by ID

Get a single lead with assigned agent, follow-up tasks, and counts. Requires leads:read permission.

Path parameters

idrequiredstringResource ID
curl -X GET "https://api.inboxy.chat/api/v1/public/leads/{id}" \
  -H "Authorization: Bearer inboxy_your_token"

Media

GET/api/v1/medialibrary:read

List media library files

Requires library:read permission.

Query parameters

typeIMAGE | VIDEO | DOCUMENT | AUDIO
searchstringFile name.
pageintegerPage number (default 1).
limitinteger
sortcreatedAt | name | size | usageCount
orderasc | descSort direction.
curl -X GET "https://api.inboxy.chat/api/v1/media" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/media/statslibrary:read

Get media library stats

Requires library:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/media/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/media/{id}library:read

Get a media file

Requires library:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/media/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/media/{id}library:write

Rename a media file or set its AI-accessibility

Requires library:write permission.

Path parameters

idrequiredstring

Body

namestringDisplay name.
aiAccessiblebooleanWhether the AI agent may reference this file.
aiDescriptionstringDescription shown to the AI agent, or null to clear.
curl -X PUT "https://api.inboxy.chat/api/v1/media/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "aiAccessible": true,
  "aiDescription": "aiDescription"
}'
DELETE/api/v1/media/{id}library:write

Delete a media file

Requires library:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/media/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/media/bulk-deletelibrary:write

Bulk delete media files

Requires library:write permission.

Body

idsrequiredstring[]Media IDs to delete.
curl -X POST "https://api.inboxy.chat/api/v1/media/bulk-delete" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "ids"
  ]
}'
POST/api/v1/media/{id}/uselibrary:write

Record media file usage

Requires library:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/media/{id}/use" \
  -H "Authorization: Bearer inboxy_your_token"

Tasks

GET/api/v1/taskstasks:read

List tasks

Requires tasks:read permission.

Query parameters

statusTODO | IN_PROGRESS | COMPLETED | CANCELLED
typeFOLLOW_UP | CALLBACK | SEND_INFO | ORDER_INQUIRY | SUPPORT | OTHER | SALES | ONBOARDING | FEEDBACK | REMINDER
priorityLOW | NORMAL | HIGH | URGENT
limitintegerPage size (default 50).
offsetintegerRows to skip (default 0).
assignedToIdstring
contactIdstring
conversationIdstring
sourceMANUAL | AI | AUTOMATION
dueDateFromstringISO date-time.
dueDateTostringISO date-time.
searchstringTitle.
curl -X GET "https://api.inboxy.chat/api/v1/tasks" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/taskstasks:write

Create a task

Requires tasks:write permission.

Body

titlerequiredstringTask title.
descriptionstringTask description.
typeFOLLOW_UP | CALLBACK | SEND_INFO | ORDER_INQUIRY | SUPPORT | OTHER | SALES | ONBOARDING | FEEDBACK | REMINDERTask type.
priorityLOW | NORMAL | HIGH | URGENTTask priority. Defaults to NORMAL.
contactIdstringContact this task relates to, or null to clear.
conversationIdstringConversation this task originated from, or null to clear.
assignedToIdstringUser ID to assign the task to, or null to unassign.
dueDatestringDue date, ISO 8601, or null to clear.
reminderAtstringReminder time, ISO 8601, or null to clear.
recurrenceNONE | DAILY | WEEKLY | MONTHLYRecurrence rule, or null for a one-off task.
sourceMANUAL | AI | AUTOMATIONWhere the task came from. Defaults to MANUAL.
curl -X POST "https://api.inboxy.chat/api/v1/tasks" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Follow up on invoice #4521",
  "description": "description",
  "type": "FOLLOW_UP",
  "priority": "NORMAL",
  "contactId": "contactId",
  "conversationId": "conversationId",
  "assignedToId": "assignedToId",
  "dueDate": "dueDate",
  "reminderAt": "reminderAt",
  "recurrence": "NONE",
  "source": "MANUAL"
}'
GET/api/v1/tasks/statstasks:read

Get task stats

Requires tasks:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/tasks/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tasks/mytasks:read

List tasks assigned to the token owner

Requires tasks:read permission.

Query parameters

statusTODO | IN_PROGRESS | COMPLETED | CANCELLED
typeFOLLOW_UP | CALLBACK | SEND_INFO | ORDER_INQUIRY | SUPPORT | OTHER | SALES | ONBOARDING | FEEDBACK | REMINDER
priorityLOW | NORMAL | HIGH | URGENT
limitintegerPage size (default 50).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/tasks/my" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tasks/contact/{contactId}tasks:read

List tasks for a contact

Requires tasks:read permission.

Path parameters

contactIdrequiredstring

Query parameters

statusTODO | IN_PROGRESS | COMPLETED | CANCELLED
typeFOLLOW_UP | CALLBACK | SEND_INFO | ORDER_INQUIRY | SUPPORT | OTHER | SALES | ONBOARDING | FEEDBACK | REMINDER
priorityLOW | NORMAL | HIGH | URGENT
limitintegerPage size (default 50).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/tasks/contact/{contactId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tasks/{id}tasks:read

Get a task

Requires tasks:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tasks/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/tasks/{id}tasks:write

Update a task

Requires tasks:write permission.

Path parameters

idrequiredstring

Body

titlestringTask title. Cannot be set to empty.
descriptionstringTask description.
typeFOLLOW_UP | CALLBACK | SEND_INFO | ORDER_INQUIRY | SUPPORT | OTHER | SALES | ONBOARDING | FEEDBACK | REMINDERTask type.
priorityLOW | NORMAL | HIGH | URGENTTask priority. Defaults to NORMAL.
contactIdstringContact this task relates to, or null to clear.
conversationIdstringConversation this task originated from, or null to clear.
assignedToIdstringUser ID to assign the task to, or null to unassign.
dueDatestringDue date, ISO 8601, or null to clear.
reminderAtstringReminder time, ISO 8601, or null to clear.
recurrenceNONE | DAILY | WEEKLY | MONTHLYRecurrence rule, or null for a one-off task.
statusTODO | IN_PROGRESS | COMPLETED | CANCELLEDTask status.
curl -X PUT "https://api.inboxy.chat/api/v1/tasks/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "title",
  "description": "description",
  "type": "FOLLOW_UP",
  "priority": "NORMAL",
  "contactId": "contactId",
  "conversationId": "conversationId",
  "assignedToId": "assignedToId",
  "dueDate": "dueDate",
  "reminderAt": "reminderAt",
  "recurrence": "NONE",
  "status": "IN_PROGRESS"
}'
DELETE/api/v1/tasks/{id}tasks:write

Delete a task

Requires tasks:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/tasks/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tasks/{id}/completetasks:write

Mark a task complete

Requires tasks:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/tasks/{id}/complete" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tasks/{id}/assigntasks:write

Assign a task

Requires tasks:write permission.

Path parameters

idrequiredstring

Body

assignedToIdstringUser ID to assign the task to, or null to unassign.
curl -X POST "https://api.inboxy.chat/api/v1/tasks/{id}/assign" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "assignedToId": "assignedToId"
}'
GET/api/v1/tasks/{id}/subtaskstasks:read

List checklist items on a task

Requires tasks:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tasks/{id}/subtasks" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tasks/{id}/subtaskstasks:write

Add a checklist item to a task

Requires tasks:write permission.

Path parameters

idrequiredstring

Body

titlerequiredstringChecklist item text.
curl -X POST "https://api.inboxy.chat/api/v1/tasks/{id}/subtasks" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Confirm shipping address"
}'
PATCH/api/v1/tasks/subtasks/{subtaskId}tasks:write

Toggle a checklist item

Requires tasks:write permission.

Path parameters

subtaskIdrequiredstring

Body

donebooleanWhether the checklist item is done. Defaults to false.
curl -X PATCH "https://api.inboxy.chat/api/v1/tasks/subtasks/{subtaskId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "done": true
}'
DELETE/api/v1/tasks/subtasks/{subtaskId}tasks:write

Delete a checklist item

Requires tasks:write permission.

Path parameters

subtaskIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/tasks/subtasks/{subtaskId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tasks/{id}/commentstasks:read

List task comments

Requires tasks:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tasks/{id}/comments" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tasks/{id}/commentstasks:write

Add a task comment

Requires tasks:write permission.

Path parameters

idrequiredstring

Body

contentrequiredstringComment text.
curl -X POST "https://api.inboxy.chat/api/v1/tasks/{id}/comments" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "Called the client, waiting on approval."
}'

Tickets

GET/api/v1/ticketstickets:read

List tickets

Requires tickets:read permission.

Query parameters

statusOPEN | IN_PROGRESS | CLOSED
priorityLOW | NORMAL | HIGH | URGENT
limitintegerPage size (default 20).
offsetintegerRows to skip (default 0).
typestringTicket type (GET /tickets/types).
assignedToIdstring
contactIdstring
searchstringSubject.
curl -X GET "https://api.inboxy.chat/api/v1/tickets" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/ticketstickets:write

Create a ticket

Requires tickets:write permission.

Body

subjectrequiredstringTicket subject.
descriptionstringTicket description.
typestringTicket type slug (see GET /tickets/types), e.g. "order".
typeIdstringTicket type ID (see GET /tickets/types).
priorityLOW | NORMAL | HIGH | URGENTTicket priority. Defaults to NORMAL.
contactIdstringContact this ticket is about.
assignedToIdstringUser ID to assign the ticket to.
conversationIdstringConversation this ticket originated from.
dueDatestringDue date, ISO 8601.
sourcestringWhere the ticket came from.
tagsstring[]Free-text tags.
phonestringContact phone number, used to find/create a contact when contactId is not supplied. One of contactId or phone is required.
curl -X POST "https://api.inboxy.chat/api/v1/tickets" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "Order #1042 arrived damaged",
  "description": "description",
  "type": "order",
  "typeId": "typeId",
  "priority": "NORMAL",
  "contactId": "contactId",
  "assignedToId": "assignedToId",
  "conversationId": "conversationId",
  "dueDate": "dueDate",
  "source": "source",
  "tags": [
    "tags"
  ],
  "phone": "966500000000"
}'
GET/api/v1/tickets/statstickets:read

Get ticket stats

Requires tickets:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/tickets/stats" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tickets/mytickets:read

List tickets assigned to the token owner

Requires tickets:read permission.

Query parameters

statusOPEN | IN_PROGRESS | CLOSED
priorityLOW | NORMAL | HIGH | URGENT
limitintegerPage size (default 20).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/tickets/my" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tickets/contact/{contactId}tickets:read

List tickets for a contact

Requires tickets:read permission.

Path parameters

contactIdrequiredstring

Query parameters

statusOPEN | IN_PROGRESS | CLOSED
priorityLOW | NORMAL | HIGH | URGENT
limitintegerPage size (default 20).
offsetintegerRows to skip (default 0).
curl -X GET "https://api.inboxy.chat/api/v1/tickets/contact/{contactId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tickets/typestickets:read

List ticket types

Requires tickets:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/tickets/types" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tickets/typestickets:write

Create a ticket type

Requires tickets:write permission.

Body

namerequiredstringTicket type name.
colorstringDisplay color.
iconstringIcon identifier.
isActivebooleanDefaults to true.
curl -X POST "https://api.inboxy.chat/api/v1/tickets/types" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Warranty claim",
  "color": "color",
  "icon": "icon",
  "isActive": true
}'
PUT/api/v1/tickets/types/{typeId}tickets:write

Update a ticket type

Requires tickets:write permission.

Path parameters

typeIdrequiredstring

Body

namestringTicket type name.
colorstringDisplay color.
iconstringIcon identifier.
isActiveboolean
ordernumberSort order.
curl -X PUT "https://api.inboxy.chat/api/v1/tickets/types/{typeId}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "color": "color",
  "icon": "icon",
  "isActive": true,
  "order": 1
}'
DELETE/api/v1/tickets/types/{typeId}tickets:write

Delete a ticket type

Requires tickets:write permission.

Path parameters

typeIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/tickets/types/{typeId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tickets/{id}tickets:read

Get a ticket

Requires tickets:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tickets/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/tickets/{id}tickets:write

Update a ticket

Requires tickets:write permission.

Path parameters

idrequiredstring

Body

subjectstringTicket subject.
descriptionstringTicket description.
typestringTicket type slug (see GET /tickets/types), e.g. "order".
typeIdstringTicket type ID (see GET /tickets/types).
priorityLOW | NORMAL | HIGH | URGENTTicket priority. Defaults to NORMAL.
contactIdstringContact this ticket is about.
assignedToIdstringUser ID to assign the ticket to.
conversationIdstringConversation this ticket originated from.
dueDatestringDue date, ISO 8601.
sourcestringWhere the ticket came from.
tagsstring[]Free-text tags.
statusOPEN | IN_PROGRESS | CLOSEDTicket status.
curl -X PUT "https://api.inboxy.chat/api/v1/tickets/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "Order #1042 arrived damaged",
  "description": "description",
  "type": "order",
  "typeId": "typeId",
  "priority": "NORMAL",
  "contactId": "contactId",
  "assignedToId": "assignedToId",
  "conversationId": "conversationId",
  "dueDate": "dueDate",
  "source": "source",
  "tags": [
    "tags"
  ],
  "status": "OPEN"
}'
DELETE/api/v1/tickets/{id}tickets:write

Delete a ticket

Requires tickets:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/tickets/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PATCH/api/v1/tickets/{id}/statustickets:write

Change ticket status

Requires tickets:write permission.

Path parameters

idrequiredstring

Body

statusrequiredOPEN | IN_PROGRESS | CLOSEDNew ticket status.
curl -X PATCH "https://api.inboxy.chat/api/v1/tickets/{id}/status" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "IN_PROGRESS"
}'
POST/api/v1/tickets/{id}/assigntickets:write

Assign a ticket

Requires tickets:write permission.

Path parameters

idrequiredstring

Body

assignedToIdstringUser ID to assign the ticket to, or null to unassign.
curl -X POST "https://api.inboxy.chat/api/v1/tickets/{id}/assign" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "assignedToId": "assignedToId"
}'
POST/api/v1/tickets/{id}/closetickets:write

Close a ticket

Requires tickets:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/tickets/{id}/close" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tickets/{id}/commentstickets:read

List ticket comments

Requires tickets:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tickets/{id}/comments" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tickets/{id}/commentstickets:write

Comment on a ticket

Requires tickets:write permission.

Path parameters

idrequiredstring

Body

contentrequiredstringComment text.
isInternalbooleanInternal-only comment, hidden from the customer. Defaults to false.
curl -X POST "https://api.inboxy.chat/api/v1/tickets/{id}/comments" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "content",
  "isInternal": true
}'
GET/api/v1/tickets/{id}/attachmentstickets:read

List ticket attachments

Requires tickets:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tickets/{id}/attachments" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/tickets/{id}/attachmentstickets:write

Add a ticket attachment (URL reference, not an upload)

Requires tickets:write permission.

Path parameters

idrequiredstring

Body

urlrequiredstringFile URL, already uploaded elsewhere (e.g. the media library).
namerequiredstringOriginal file name.
mimeTypestringMIME type.
sizenumberFile size in bytes.
curl -X POST "https://api.inboxy.chat/api/v1/tickets/{id}/attachments" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://cdn.inboxy.chat/files/invoice.pdf",
  "name": "invoice.pdf",
  "mimeType": "application/pdf",
  "size": 1
}'
DELETE/api/v1/tickets/attachments/{attachmentId}tickets:write

Delete a ticket attachment

Requires tickets:write permission.

Path parameters

attachmentIdrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/tickets/attachments/{attachmentId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/tickets/{id}/activitytickets:read

Get the ticket audit trail

Requires tickets:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/tickets/{id}/activity" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/ticketstickets:read

List tickets

Get a paginated list of support tickets with filters. Requires tickets:read permission.

Query parameters

pageinteger
pageSizeinteger
statusstringFilter by ticket status (open, in_progress, resolved, closed)
typestringFilter by ticket type
prioritystringFilter by priority (low, medium, high, urgent)
assignedToIdstringFilter by assigned agent ID
curl -X GET "https://api.inboxy.chat/api/v1/public/tickets" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/public/tickets/{id}tickets:read

Get ticket by ID

Get a single support ticket with comments. Requires tickets:read permission.

Path parameters

idrequiredstringResource ID
curl -X GET "https://api.inboxy.chat/api/v1/public/tickets/{id}" \
  -H "Authorization: Bearer inboxy_your_token"

Meetings

POST/api/v1/meetingsmeetings:write

Create a meeting

Requires meetings:write permission.

Body

reasonrequiredstringMeeting reason/title.
typerequiredONLINE | OFFLINEMeeting type.
startTimerequiredstringStart time, ISO 8601 UTC.
startTimeLocalrequiredstringStart time as picked locally (no TZ offset), ISO 8601.
timezonerequiredstringIANA timezone identifier.
durationMinutesrequirednumberDuration in minutes.
contactIdstringAssociated contact.
linkstringMeeting link, for ONLINE meetings.
locationstringPhysical location, for OFFLINE meetings.
notesstringFree-text notes.
attendeesobject[]Team members and/or external attendees.
curl -X POST "https://api.inboxy.chat/api/v1/meetings" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "Product demo",
  "type": "ONLINE",
  "startTime": "2026-09-20T10:00:00.000Z",
  "startTimeLocal": "2026-09-20T13:00:00",
  "timezone": "Asia/Riyadh",
  "durationMinutes": 30,
  "contactId": "contactId",
  "link": "link",
  "location": "location",
  "notes": "notes",
  "attendees": [
    {
      "type": "TEAM",
      "userId": "userId",
      "name": "name",
      "email": "customer@example.com",
      "phone": "966500000000"
    }
  ]
}'
GET/api/v1/meetings/weekmeetings:read

List meetings in a calendar week

Requires meetings:read permission.

Query parameters

daterequiredstringAny date in the week to return (ISO date).
curl -X GET "https://api.inboxy.chat/api/v1/meetings/week" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/meetings/contact/{contactId}meetings:read

List meetings for a contact

Requires meetings:read permission.

Path parameters

contactIdrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/meetings/contact/{contactId}" \
  -H "Authorization: Bearer inboxy_your_token"
GET/api/v1/meetings/{id}meetings:read

Get a meeting

Requires meetings:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/meetings/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/meetings/{id}meetings:write

Update a meeting

Requires meetings:write permission.

Path parameters

idrequiredstring

Body

reasonstringMeeting reason/title.
typeONLINE | OFFLINE
startTimestringISO 8601 UTC.
startTimeLocalstringISO 8601 local.
timezonestringIANA timezone identifier.
durationMinutesnumber
contactIdstringOr null to clear.
linkstringOr null to clear.
locationstringOr null to clear.
notesstringOr null to clear.
attendeesobject[]
curl -X PUT "https://api.inboxy.chat/api/v1/meetings/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "reason",
  "type": "ONLINE",
  "startTime": "startTime",
  "startTimeLocal": "startTimeLocal",
  "timezone": "timezone",
  "durationMinutes": 1,
  "contactId": "contactId",
  "link": "link",
  "location": "location",
  "notes": "notes",
  "attendees": [
    {
      "type": "TEAM",
      "userId": "userId",
      "name": "name",
      "email": "customer@example.com",
      "phone": "966500000000"
    }
  ]
}'
DELETE/api/v1/meetings/{id}meetings:write

Delete a meeting

Requires meetings:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/meetings/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/meetings/{id}/completemeetings:write

Mark a meeting completed

Requires meetings:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/meetings/{id}/complete" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/meetings/{id}/cancelmeetings:write

Mark a meeting cancelled

Requires meetings:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/meetings/{id}/cancel" \
  -H "Authorization: Bearer inboxy_your_token"

Analytics

GET/api/v1/public/analytics/dashboardanalytics:read

Get dashboard analytics

Get aggregated dashboard statistics (conversations, messages, contacts, etc.). Requires analytics:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/public/analytics/dashboard" \
  -H "Authorization: Bearer inboxy_your_token"

Knowledge Center

GET/api/v1/knowledge-center/categoriesknowledge:read

List knowledge categories

Requires knowledge:read permission.

curl -X GET "https://api.inboxy.chat/api/v1/knowledge-center/categories" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/knowledge-center/categoriesknowledge:write

Create a knowledge category

Requires knowledge:write permission.

Body

namerequiredstringCategory name.
descriptionstringCategory description.
iconstringIcon identifier.
colorstringDisplay color.
parentIdstringParent category ID, for nesting.
sortOrdernumberSort order among siblings.
curl -X POST "https://api.inboxy.chat/api/v1/knowledge-center/categories" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Shipping and returns",
  "description": "description",
  "icon": "icon",
  "color": "#3bc1a8",
  "parentId": "parentId",
  "sortOrder": 1
}'
PUT/api/v1/knowledge-center/categories/{id}knowledge:write

Update a knowledge category

Requires knowledge:write permission.

Path parameters

idrequiredstring

Body

namestringCategory name.
descriptionstringCategory description.
iconstringIcon identifier.
colorstringDisplay color.
parentIdstringParent category ID, or null to un-nest.
sortOrdernumberSort order among siblings.
curl -X PUT "https://api.inboxy.chat/api/v1/knowledge-center/categories/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "name",
  "description": "description",
  "icon": "icon",
  "color": "color",
  "parentId": "parentId",
  "sortOrder": 1
}'
DELETE/api/v1/knowledge-center/categories/{id}knowledge:write

Delete a knowledge category

Requires knowledge:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/knowledge-center/categories/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/knowledge-center/categories/reorderknowledge:write

Reorder knowledge categories

Requires knowledge:write permission.

Body

orderrequiredobject[]Full ordered list of category IDs with their new sort positions.
curl -X PUT "https://api.inboxy.chat/api/v1/knowledge-center/categories/reorder" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "order": [
    {
      "id": "id",
      "sortOrder": 1
    }
  ]
}'
GET/api/v1/knowledge-center/articlesknowledge:read

List knowledge articles

Requires knowledge:read permission.

Query parameters

categoryIdstring
statusDRAFT | PUBLISHED | ARCHIVED
tagstring
searchstringTitle or content.
pageintegerPage number (default 1).
limitintegerPage size (default 20).
curl -X GET "https://api.inboxy.chat/api/v1/knowledge-center/articles" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/knowledge-center/articlesknowledge:write

Create a knowledge article

Requires knowledge:write permission.

Body

titlerequiredstringArticle title.
contentrequiredstringArticle body.
categoryIdstringCategory this article belongs to.
excerptstringShort summary shown in listings.
tagsstring[]Free-text tags.
statusDRAFT | PUBLISHEDDefaults to DRAFT.
curl -X POST "https://api.inboxy.chat/api/v1/knowledge-center/articles" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "How to reset your password",
  "content": "content",
  "categoryId": "categoryId",
  "excerpt": "excerpt",
  "tags": [
    "tags"
  ],
  "status": "DRAFT"
}'
GET/api/v1/knowledge-center/articles/{id}knowledge:read

Get a knowledge article

Requires knowledge:read permission.

Path parameters

idrequiredstring
curl -X GET "https://api.inboxy.chat/api/v1/knowledge-center/articles/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
PUT/api/v1/knowledge-center/articles/{id}knowledge:write

Update a knowledge article

Requires knowledge:write permission.

Path parameters

idrequiredstring

Body

titlestringArticle title.
contentstringArticle body.
categoryIdstringCategory, or null to clear.
excerptstringShort summary shown in listings.
tagsstring[]Free-text tags.
statusDRAFT | PUBLISHED | ARCHIVEDArticle status.
curl -X PUT "https://api.inboxy.chat/api/v1/knowledge-center/articles/{id}" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "title",
  "content": "content",
  "categoryId": "categoryId",
  "excerpt": "excerpt",
  "tags": [
    "tags"
  ],
  "status": "DRAFT"
}'
DELETE/api/v1/knowledge-center/articles/{id}knowledge:write

Delete a knowledge article

Requires knowledge:write permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/knowledge-center/articles/{id}" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/knowledge-center/articles/{id}/publishknowledge:write

Publish a knowledge article

Requires knowledge:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/knowledge-center/articles/{id}/publish" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/knowledge-center/articles/{id}/archiveknowledge:write

Archive a knowledge article

Requires knowledge:write permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/knowledge-center/articles/{id}/archive" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/knowledge-center/articles/{id}/feedbackknowledge:write

Submit article feedback

Requires knowledge:write permission.

Path parameters

idrequiredstring

Body

isHelpfulrequiredbooleanWhether the article was helpful.
commentstringOptional free-text comment.
curl -X POST "https://api.inboxy.chat/api/v1/knowledge-center/articles/{id}/feedback" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "isHelpful": true,
  "comment": "comment"
}'

Channels

GET/api/v1/me/channelschannels:read

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"

Scheduled messages

GET/api/v1/scheduled-messagesmessages:read

List scheduled messages

Requires messages:read permission.

Query parameters

statusPENDING | SENT | FAILED | CANCELLED | PAUSED | DEAD_LETTER
channelWHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | WIDGET
limitinteger1–200 (default 50); out of range is a 400.
offsetintegerRows to skip (default 0).
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

channelrequiredWHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | SMS
recipientRefrequiredstringPhone number (WhatsApp/SMS) or the channel’s recipient id.
scheduledForrequiredstring
conversationIdstring
recurrenceNONE | DAILY | WEEKLY | MONTHLY
payloadrequiredobject`{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`.
curl -X POST "https://api.inboxy.chat/api/v1/scheduled-messages" \
  -H "Authorization: Bearer inboxy_your_token" \
  -H "Content-Type: application/json" \
  -d '{
  "channel": "WHATSAPP",
  "recipientRef": "966500000000",
  "scheduledFor": "2026-09-20T09:00:00Z",
  "conversationId": "conversationId",
  "recurrence": "NONE",
  "payload": {
    "kind": "template",
    "templateName": "order_shipped",
    "languageCode": "ar",
    "bodyVariables": {
      "1": "Sara"
    }
  }
}'
POST/api/v1/scheduled-messages/{id}/cancelmessages:send

Cancel a scheduled message

Requires messages:send permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/scheduled-messages/{id}/cancel" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/scheduled-messages/{id}/pausemessages:send

Pause a recurring message

Requires messages:send permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/scheduled-messages/{id}/pause" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/scheduled-messages/{id}/resumemessages:send

Resume a paused message

Requires messages:send permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/scheduled-messages/{id}/resume" \
  -H "Authorization: Bearer inboxy_your_token"
POST/api/v1/scheduled-messages/{id}/send-nowmessages:send

Send a scheduled message now

Requires messages:send permission.

Path parameters

idrequiredstring
curl -X POST "https://api.inboxy.chat/api/v1/scheduled-messages/{id}/send-now" \
  -H "Authorization: Bearer inboxy_your_token"
DELETE/api/v1/scheduled-messages/{id}messages:send

Delete a scheduled message

Requires messages:send permission.

Path parameters

idrequiredstring
curl -X DELETE "https://api.inboxy.chat/api/v1/scheduled-messages/{id}" \
  -H "Authorization: Bearer inboxy_your_token"