API reference
Broadcasts
Create, manage, execute, and analyze broadcast campaigns.
x-tenant-id and an API key or OAuth token. Channel IDs are copied from Settings → Developer in the app. See Authentication.List broadcasts
/api/public/v1/broadcastsReturns a paginated, filterable, sortable list of broadcasts for the authenticated tenant.
Query parameters
pageintegerDefault
1limitintegerDefault
25sortstringnamestatuscreatedAtupdatedAtDefault
"updatedAt"orderstringascdescDefault
"desc"statusstringDRAFTSCHEDULEDRUNNINGPAUSEDCOMPLETEDCANCELLEDFAILEDsearchstringchannelIdstringWhatsApp channel to send from. Copy it from Settings → Developer → Channels in the inaiy app.
templateIdstringcreatedBystringisArchivedbooleancreatedAfterstring (date-time)createdBeforestring (date-time)fieldsstring
Response 200Paginated list of broadcasts
successbooleandataobject[]15 child fields
idstringnamestringdescriptionstring | nullstatusstring | nullOne of
DRAFTSCHEDULEDRUNNINGPAUSEDCOMPLETEDCANCELLEDFAILEDnulltemplateIdstring | nullcompositionobject | null2 child fields
templateIdstring | nullparametersobject | null
audienceobject | null4 child fields
typestring | nullOne of
MANUALALLSEGMENTnullselectionobject | null4 child fields
contactIdsstring[]includeTagsstring[]excludeContactIdsstring[]excludeTagsstring[]
countsobject | nullvalidationobject | null
scheduleobject | nullstatsobject | nullprogressobject | nullexecutionobject | null7 child fields
executionIdstring | nullstatusstring | nullmodestring | nullstartedAtstring (date-time) | nullcompletedAtstring (date-time) | nullcancelledAtstring (date-time) | nullfailureReasonstring | null
monitoringobject | nullisArchivedbooleancreatedAtstring (date-time) | nullupdatedAtstring (date-time) | null
paginationobject8 child fields
pageintegerlimitintegertotalintegertotalPagesintegerhasNextPagebooleanhasPrevPagebooleannextCursorstring | nullprevCursorstring | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch422Validation failed (invalid body, empty/segment audience, missing template, no connected channel)429Too many requests - rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/broadcasts" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": [
{
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"name": "July promo blast",
"description": "Summer sale announcement",
"status": "DRAFT",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"composition": {
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"parameters": {
"body": [
"Jane"
]
}
},
"audience": {
"type": "MANUAL",
"selection": {
"contactIds": [
"663fa1b2c3d4e5f6a7b8c9d0"
],
"includeTags": [
"vip"
],
"excludeContactIds": [],
"excludeTags": []
},
"counts": {
"estimated": 240,
"resolved": 240,
"lastEstimatedAt": "2026-07-12T09:00:00.000Z",
"lastResolvedAt": "2026-07-12T09:00:00.000Z"
},
"validation": {
"isValid": true,
"issues": [],
"lastValidatedAt": "2026-07-12T09:00:00.000Z"
}
},
"schedule": null,
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"execution": null,
"monitoring": null,
"isArchived": false,
"createdAt": "2026-07-12T09:00:00.000Z",
"updatedAt": "2026-07-12T09:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 12,
"totalPages": 1,
"hasNextPage": false,
"hasPrevPage": false,
"nextCursor": null,
"prevCursor": null
},
"meta": {
"apiVersion": "v1",
"sort": {
"field": "updatedAt",
"order": "desc"
}
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:00:00.000Z"
}Create a broadcast
/api/public/v1/broadcastsCreates a broadcast (composite). Returns 201 for a draft or 202 Accepted when queued/scheduled.
Request bodyrequired
namestringrequireddescriptionstring | nulltemplateobjectProvide either templateId, or name + language.
5 child fields
templateIdstringnamestringlanguagestringvariablesobjectAlias of parameters.
parametersobject
audienceobject5 child fields
typestringrequiredOne of
MANUALALLSEGMENTcontactIdsstring[]includeTagsstring[]excludeContactIdsstring[]excludeTagsstring[]
sendImmediatelybooleanscheduleobject1 child field
scheduledAtstring
Response 201Draft broadcast created
successbooleandataobject15 child fields
idstringnamestringdescriptionstring | nullstatusstring | nullOne of
DRAFTSCHEDULEDRUNNINGPAUSEDCOMPLETEDCANCELLEDFAILEDnulltemplateIdstring | nullcompositionobject | null2 child fields
templateIdstring | nullparametersobject | null
audienceobject | null4 child fields
typestring | nullOne of
MANUALALLSEGMENTnullselectionobject | null4 child fields
contactIdsstring[]includeTagsstring[]excludeContactIdsstring[]excludeTagsstring[]
countsobject | nullvalidationobject | null
scheduleobject | nullstatsobject | nullprogressobject | nullexecutionobject | null7 child fields
executionIdstring | nullstatusstring | nullmodestring | nullstartedAtstring (date-time) | nullcompletedAtstring (date-time) | nullcancelledAtstring (date-time) | nullfailureReasonstring | null
monitoringobject | nullisArchivedbooleancreatedAtstring (date-time) | nullupdatedAtstring (date-time) | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found409Conflicting state (not editable, cancel not allowed, already running)422Validation failed (invalid body, empty/segment audience, missing template, no connected channel)429Too many requests - rate limit exceeded500Unexpected server error
curl -X POST "https://api.inaiy.com/api/public/v1/broadcasts" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"name": "July promo blast",
"description": "Summer sale",
"template": {
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"parameters": {
"body": [
"Jane"
]
}
},
"audience": {
"type": "ALL"
}
}{
"success": true,
"data": {
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"name": "July promo blast",
"description": "Summer sale announcement",
"status": "DRAFT",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"composition": {
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"parameters": {
"body": [
"Jane"
]
}
},
"audience": {
"type": "MANUAL",
"selection": {
"contactIds": [
"663fa1b2c3d4e5f6a7b8c9d0"
],
"includeTags": [
"vip"
],
"excludeContactIds": [],
"excludeTags": []
},
"counts": {
"estimated": 240,
"resolved": 240,
"lastEstimatedAt": "2026-07-12T09:00:00.000Z",
"lastResolvedAt": "2026-07-12T09:00:00.000Z"
},
"validation": {
"isValid": true,
"issues": [],
"lastValidatedAt": "2026-07-12T09:00:00.000Z"
}
},
"schedule": null,
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"execution": null,
"monitoring": null,
"isArchived": false,
"createdAt": "2026-07-12T09:00:00.000Z",
"updatedAt": "2026-07-12T09:00:00.000Z"
},
"meta": {
"apiVersion": "v1"
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:00:00.000Z"
}Get a broadcast by id
/api/public/v1/broadcasts/{id}Fetch a single broadcast by its id.
Path parameters
idstringrequired24-char broadcast ObjectId
Query parameters
fieldsstringComma-separated list of fields to return (sparse fieldset).
Response 200The broadcast
successbooleandataobject15 child fields
idstringnamestringdescriptionstring | nullstatusstring | nullOne of
DRAFTSCHEDULEDRUNNINGPAUSEDCOMPLETEDCANCELLEDFAILEDnulltemplateIdstring | nullcompositionobject | null2 child fields
templateIdstring | nullparametersobject | null
audienceobject | null4 child fields
typestring | nullOne of
MANUALALLSEGMENTnullselectionobject | null4 child fields
contactIdsstring[]includeTagsstring[]excludeContactIdsstring[]excludeTagsstring[]
countsobject | nullvalidationobject | null
scheduleobject | nullstatsobject | nullprogressobject | nullexecutionobject | null7 child fields
executionIdstring | nullstatusstring | nullmodestring | nullstartedAtstring (date-time) | nullcompletedAtstring (date-time) | nullcancelledAtstring (date-time) | nullfailureReasonstring | null
monitoringobject | nullisArchivedbooleancreatedAtstring (date-time) | nullupdatedAtstring (date-time) | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found429Too many requests - rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": {
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"name": "July promo blast",
"description": "Summer sale announcement",
"status": "DRAFT",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"composition": {
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"parameters": {
"body": [
"Jane"
]
}
},
"audience": {
"type": "MANUAL",
"selection": {
"contactIds": [
"663fa1b2c3d4e5f6a7b8c9d0"
],
"includeTags": [
"vip"
],
"excludeContactIds": [],
"excludeTags": []
},
"counts": {
"estimated": 240,
"resolved": 240,
"lastEstimatedAt": "2026-07-12T09:00:00.000Z",
"lastResolvedAt": "2026-07-12T09:00:00.000Z"
},
"validation": {
"isValid": true,
"issues": [],
"lastValidatedAt": "2026-07-12T09:00:00.000Z"
}
},
"schedule": null,
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"execution": null,
"monitoring": null,
"isArchived": false,
"createdAt": "2026-07-12T09:00:00.000Z",
"updatedAt": "2026-07-12T09:00:00.000Z"
},
"meta": {
"apiVersion": "v1"
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:00:00.000Z"
}Update a broadcast
/api/public/v1/broadcasts/{id}Update a DRAFT broadcast (name/description/template/audience).
Path parameters
idstringrequired24-char broadcast ObjectId
Request body
namestringdescriptionstring | nulltemplateobjectProvide either templateId, or name + language.
5 child fields
templateIdstringnamestringlanguagestringvariablesobjectAlias of parameters.
parametersobject
audienceobject5 child fields
typestringrequiredOne of
MANUALALLSEGMENTcontactIdsstring[]includeTagsstring[]excludeContactIdsstring[]excludeTagsstring[]
Response 200The updated broadcast
successbooleandataobject15 child fields
idstringnamestringdescriptionstring | nullstatusstring | nullOne of
DRAFTSCHEDULEDRUNNINGPAUSEDCOMPLETEDCANCELLEDFAILEDnulltemplateIdstring | nullcompositionobject | null2 child fields
templateIdstring | nullparametersobject | null
audienceobject | null4 child fields
typestring | nullOne of
MANUALALLSEGMENTnullselectionobject | null4 child fields
contactIdsstring[]includeTagsstring[]excludeContactIdsstring[]excludeTagsstring[]
countsobject | nullvalidationobject | null
scheduleobject | nullstatsobject | nullprogressobject | nullexecutionobject | null7 child fields
executionIdstring | nullstatusstring | nullmodestring | nullstartedAtstring (date-time) | nullcompletedAtstring (date-time) | nullcancelledAtstring (date-time) | nullfailureReasonstring | null
monitoringobject | nullisArchivedbooleancreatedAtstring (date-time) | nullupdatedAtstring (date-time) | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found409Conflicting state (not editable, cancel not allowed, already running)422Validation failed (invalid body, empty/segment audience, missing template, no connected channel)429Too many requests - rate limit exceeded500Unexpected server error
curl -X PATCH "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"name": "string",
"description": "string",
"template": {
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"name": "order_update",
"language": "en_US",
"variables": {},
"parameters": {}
},
"audience": {
"type": "MANUAL",
"contactIds": [
"663fa1b2c3d4e5f6a7b8c9d0"
],
"includeTags": [
"vip"
],
"excludeContactIds": [
"string"
],
"excludeTags": [
"string"
]
}
}{
"success": true,
"data": {
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"name": "July promo blast",
"description": "Summer sale announcement",
"status": "DRAFT",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"composition": {
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"parameters": {
"body": [
"Jane"
]
}
},
"audience": {
"type": "MANUAL",
"selection": {
"contactIds": [
"663fa1b2c3d4e5f6a7b8c9d0"
],
"includeTags": [
"vip"
],
"excludeContactIds": [],
"excludeTags": []
},
"counts": {
"estimated": 240,
"resolved": 240,
"lastEstimatedAt": "2026-07-12T09:00:00.000Z",
"lastResolvedAt": "2026-07-12T09:00:00.000Z"
},
"validation": {
"isValid": true,
"issues": [],
"lastValidatedAt": "2026-07-12T09:00:00.000Z"
}
},
"schedule": null,
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"execution": null,
"monitoring": null,
"isArchived": false,
"createdAt": "2026-07-12T09:00:00.000Z",
"updatedAt": "2026-07-12T09:00:00.000Z"
},
"meta": {
"apiVersion": "v1"
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:00:00.000Z"
}Delete a broadcast
/api/public/v1/broadcasts/{id}Soft-delete a DRAFT broadcast. Returns 204 No Content.
Path parameters
idstringrequired24-char broadcast ObjectId
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found409Conflicting state (not editable, cancel not allowed, already running)429Too many requests - rate limit exceeded500Unexpected server error
curl -X DELETE "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"Execute a broadcast now
/api/public/v1/broadcasts/{id}/executeQueues a DRAFT broadcast for immediate asynchronous execution. Returns 202 Accepted. Execution never bypasses the queue.
Path parameters
idstringrequired24-char broadcast ObjectId
Response 202Broadcast queued for execution
successbooleandataobject8 child fields
broadcastIdstring | nullstatusstring | nullexecutionobject | nullscheduleobject | nullprogressobject | nullstatsobject | nullestimatedRecipientsintegertimezonestring | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found409Conflicting state (not editable, cancel not allowed, already running)422Validation failed (invalid body, empty/segment audience, missing template, no connected channel)429Too many requests - rate limit exceeded500Unexpected server error
curl -X POST "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0/execute" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": {
"broadcastId": "6650a1b2c3d4e5f6a7b8c9d0",
"status": "RUNNING",
"execution": {
"executionId": "exec_9f8e7d",
"status": "queued",
"mode": "immediate",
"startedAt": "2026-07-12T09:05:00.000Z",
"completedAt": null,
"cancelledAt": null,
"failureReason": null
},
"schedule": null,
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"estimatedRecipients": 240,
"timezone": "Asia/Kolkata"
},
"meta": {
"apiVersion": "v1",
"queued": true
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:05:00.000Z"
}Schedule a broadcast
/api/public/v1/broadcasts/{id}/scheduleSchedules a DRAFT broadcast for future execution. Returns 202 Accepted.
Path parameters
idstringrequired24-char broadcast ObjectId
Request bodyrequired
scheduledAtstringrequiredLocal datetime; converted to the org timezone.
Response 202Broadcast scheduled
successbooleandataobject8 child fields
broadcastIdstring | nullstatusstring | nullexecutionobject | nullscheduleobject | nullprogressobject | nullstatsobject | nullestimatedRecipientsintegertimezonestring | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found409Conflicting state (not editable, cancel not allowed, already running)422Validation failed (invalid body, empty/segment audience, missing template, no connected channel)429Too many requests - rate limit exceeded500Unexpected server error
curl -X POST "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0/schedule" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"scheduledAt": "2026-07-15T10:00:00"
}{
"success": true,
"data": {
"broadcastId": "6650a1b2c3d4e5f6a7b8c9d0",
"status": "RUNNING",
"execution": {
"executionId": "exec_9f8e7d",
"status": "queued",
"mode": "immediate",
"startedAt": "2026-07-12T09:05:00.000Z",
"completedAt": null,
"cancelledAt": null,
"failureReason": null
},
"schedule": null,
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"estimatedRecipients": 240,
"timezone": "Asia/Kolkata"
},
"meta": {
"apiVersion": "v1",
"queued": true
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:05:00.000Z"
}Cancel a broadcast
/api/public/v1/broadcasts/{id}/cancelCancels a SCHEDULED broadcast (reverts to draft) or a RUNNING broadcast. Returns 200.
Path parameters
idstringrequired24-char broadcast ObjectId
Response 200Broadcast cancelled
successbooleandataobject8 child fields
broadcastIdstring | nullstatusstring | nullexecutionobject | nullscheduleobject | nullprogressobject | nullstatsobject | nullestimatedRecipientsintegertimezonestring | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found409Conflicting state (not editable, cancel not allowed, already running)429Too many requests - rate limit exceeded500Unexpected server error
curl -X POST "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0/cancel" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": {
"broadcastId": "6650a1b2c3d4e5f6a7b8c9d0",
"status": "RUNNING",
"execution": {
"executionId": "exec_9f8e7d",
"status": "queued",
"mode": "immediate",
"startedAt": "2026-07-12T09:05:00.000Z",
"completedAt": null,
"cancelledAt": null,
"failureReason": null
},
"schedule": null,
"progress": {
"processed": 0,
"total": 240,
"percent": 0
},
"stats": {
"total": 240,
"pending": 240,
"queued": 0,
"processing": 0,
"completed": 0,
"failed": 0,
"cancelled": 0,
"skipped": 0
},
"estimatedRecipients": 240,
"timezone": "Asia/Kolkata"
},
"meta": {
"apiVersion": "v1",
"queued": true
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:05:00.000Z"
}Get broadcast progress
/api/public/v1/broadcasts/{id}/progressReturns real-time progress: status, phase, recipient counts (processed/queued/failed/completed), completion percent, and retry counters.
Path parameters
idstringrequired24-char broadcast ObjectId
Query parameters
fieldsstringComma-separated list of fields to return (sparse fieldset).
Response 200Broadcast progress snapshot
successbooleandataobject8 child fields
broadcastIdstring | nullstatusstring | nullphasestring | nullcountsobjectcompletionPercentnumbertimingobject | nullretryobject | nulllastUpdatedAtstring (date-time) | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found429Too many requests - rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0/progress" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": {
"broadcastId": "string",
"status": "string",
"phase": "string",
"counts": {},
"completionPercent": 42,
"timing": {},
"retry": {},
"lastUpdatedAt": "2026-07-12T09:30:00.000Z"
},
"meta": {
"apiVersion": "v1"
},
"requestId": "string",
"timestamp": "2026-07-12T09:30:00.000Z"
}Get broadcast analytics
/api/public/v1/broadcasts/{id}/analyticsReturns delivery metrics (sent/delivered/read/failed + rates), timing, summary, and optional charts.
Path parameters
idstringrequired24-char broadcast ObjectId
Query parameters
executionIdstringincludeChartsbooleanDefault
truefieldsstring
Response 200Broadcast analytics
successbooleandataobject6 child fields
broadcastobjectmetricsobject | nulltimingobject | nullsummaryobject | nullhasDatabooleanchartsobject | null
metaobject1 child field
apiVersionstring
requestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found429Too many requests - rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0/analytics" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": {
"broadcast": {},
"metrics": {},
"timing": {},
"summary": {},
"hasData": true,
"charts": {}
},
"meta": {
"apiVersion": "v1"
},
"requestId": "string",
"timestamp": "2026-07-12T09:30:00.000Z"
}List broadcast recipients
/api/public/v1/broadcasts/{id}/recipientsPer-recipient delivery log for the latest execution of a broadcast, with the WhatsApp delivery status and failure reason of each recipient. Returns an empty list for broadcasts that have not run.
Path parameters
idstringrequired24-char broadcast ObjectId
Query parameters
deliveryStatusstringqueuedsentdeliveredreadfailedstatusstringpendingqueuedsendingsentfailedcancelledsearchstringSubstring match on contact name or phone.
pageintegerlimitintegersortstringupdatedAtcontactNamephonestatusdeliveryStatussentAtdeliveredAtreadAtretryCountorderstringascdesc
Response 200Broadcast recipients
successbooleandataobject[]14 child fields
idstringcontactIdstring | nullcontactNamestring | nullphonestring | nullstatusstring | nullSend pipeline state.
deliveryStatusstring | nullWhatsApp delivery outcome.
messageIdstring | nullMessage id, usable with GET /messages/{id}.
failureReasonstring | nullretryCountintegerqueuedAtstring (date-time) | nullsentAtstring (date-time) | nulldeliveredAtstring (date-time) | nullreadAtstring (date-time) | nullupdatedAtstring (date-time) | null
paginationobjectmetaobjectrequestIdstring | nulltimestampstring (date-time)
Errors
400Malformed request or missing tenant context401Missing or invalid API key403Forbidden - developer platform disabled, key expired/disabled, or tenant mismatch404Broadcast or template not found422Validation failed (invalid body, empty/segment audience, missing template, no connected channel)429Too many requests - rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/broadcasts/6650a1b2c3d4e5f6a7b8c9d0/recipients" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": [
{
"id": "6650a1b2c3d4e5f6a7b8c9e1",
"contactId": "6650a1b2c3d4e5f6a7b8c9f2",
"contactName": "Asha",
"phone": "+919800000000",
"status": "sent",
"deliveryStatus": "read",
"messageId": "string",
"failureReason": null,
"retryCount": 0,
"queuedAt": "2026-07-12T09:30:00.000Z",
"sentAt": "2026-07-12T09:30:00.000Z",
"deliveredAt": "2026-07-12T09:30:00.000Z",
"readAt": "2026-07-12T09:30:00.000Z",
"updatedAt": "2026-07-12T09:30:00.000Z"
}
],
"pagination": {},
"meta": {},
"requestId": "string",
"timestamp": "2026-07-12T09:30:00.000Z"
}