API reference
Conversations
List, read, and update conversations.
x-tenant-id and an API key or OAuth token. Channel IDs are copied from Settings → Developer in the app. See Authentication.List conversations
/api/public/v1/conversationsReturns a paginated, filterable, sortable list of conversations for the authenticated tenant.
Query parameters
pageintegerDefault
1limitintegerDefault
25sortstringlastMessageAtcreatedAtupdatedAtunreadCountprioritystatusresolutionDueAtDefault
"lastMessageAt"orderstringascdescDefault
"desc"statusstringopenpendingresolvedclosedarchivedassignedTostringAgent id, or 'unassigned'.
prioritystringlowmediumhighurgentlabelstringComma-separated label id filter.
channelstringChannel id filter.
searchstringMatches contact name/phone, agent name, or label name.
createdAfterstring (date-time)createdBeforestring (date-time)updatedAfterstring (date-time)updatedBeforestring (date-time)fieldsstring
Response 200Paginated list of conversations
successbooleandataobject[]25 child fields
idstringcontactIdstring | nullchannelIdstring | nullassignedAgentIdstring | nullstatusstringOne of
openpendingresolvedclosedarchivedprioritystringOne of
lowmediumhighurgentisArchivedbooleanlabelIdsstring[]labelsobject[]3 child fields
idstring | nullnamestring | nullcolorstring | null
unreadCountintegerlastMessagePreviewstring | nulllastMessageAtstring (date-time) | nulllastMessageDirectionstring | nullisPinnedbooleanisMutedbooleanisResolvedbooleanstartedAtstring (date-time) | nullresolvedAtstring (date-time) | nullclosedAtstring (date-time) | nullsourcestring | nullcreatedAtstring (date-time)updatedAtstring (date-time)contactobject4 child fields
idstring | nullnamestring | nullphonestring | nullemailstring | null
channelobject3 child fields
idstring | nullnamestring | nulltypestring | null
assignedAgentobject3 child fields
idstring | nullfullNamestring | nullemailstring | 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 failed429Too many requests — rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/conversations" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": [
{
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"contactId": "664fa1b2c3d4e5f6a7b8c9d0",
"channelId": "663fa1b2c3d4e5f6a7b8c9d0",
"assignedAgentId": "662fa1b2c3d4e5f6a7b8c9d0",
"status": "open",
"priority": "medium",
"isArchived": false,
"labelIds": [
"661fa1b2c3d4e5f6a7b8c9d0"
],
"labels": [
{
"id": "661fa1b2c3d4e5f6a7b8c9d0",
"name": "VIP",
"color": "#6366f1"
}
],
"unreadCount": 2,
"lastMessagePreview": "See you tomorrow!",
"lastMessageAt": "2026-07-12T09:30:00.000Z",
"lastMessageDirection": "inbound",
"isPinned": false,
"isMuted": false,
"isResolved": false,
"startedAt": "2026-07-10T08:00:00.000Z",
"resolvedAt": null,
"closedAt": null,
"source": "whatsapp",
"createdAt": "2026-07-10T08:00:00.000Z",
"updatedAt": "2026-07-12T09:30:00.000Z",
"contact": {
"id": "664fa1b2c3d4e5f6a7b8c9d0",
"name": "Jane Doe",
"phone": "+14155552671",
"email": "jane@example.com"
},
"channel": {
"id": "663fa1b2c3d4e5f6a7b8c9d0",
"name": "Main WhatsApp",
"type": "whatsapp"
},
"assignedAgent": {
"id": "662fa1b2c3d4e5f6a7b8c9d0",
"fullName": "Alex Agent",
"email": "alex@company.com"
}
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 137,
"totalPages": 6,
"hasNextPage": true,
"hasPrevPage": false,
"nextCursor": null,
"prevCursor": null
},
"meta": {
"apiVersion": "v1",
"sort": {
"field": "lastMessageAt",
"order": "desc"
}
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:30:00.000Z"
}Get a conversation by id
/api/public/v1/conversations/{id}Fetch a single conversation by its public id.
Path parameters
idstringrequired24-char conversation ObjectId
Query parameters
fieldsstringComma-separated list of fields to return (sparse fieldset).
Response 200The conversation
successbooleandataobject25 child fields
idstringcontactIdstring | nullchannelIdstring | nullassignedAgentIdstring | nullstatusstringOne of
openpendingresolvedclosedarchivedprioritystringOne of
lowmediumhighurgentisArchivedbooleanlabelIdsstring[]labelsobject[]3 child fields
idstring | nullnamestring | nullcolorstring | null
unreadCountintegerlastMessagePreviewstring | nulllastMessageAtstring (date-time) | nulllastMessageDirectionstring | nullisPinnedbooleanisMutedbooleanisResolvedbooleanstartedAtstring (date-time) | nullresolvedAtstring (date-time) | nullclosedAtstring (date-time) | nullsourcestring | nullcreatedAtstring (date-time)updatedAtstring (date-time)contactobject4 child fields
idstring | nullnamestring | nullphonestring | nullemailstring | null
channelobject3 child fields
idstring | nullnamestring | nulltypestring | null
assignedAgentobject3 child fields
idstring | nullfullNamestring | nullemailstring | 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 mismatch404Conversation not found429Too many requests — rate limit exceeded500Unexpected server error
curl -X GET "https://api.inaiy.com/api/public/v1/conversations/6650a1b2c3d4e5f6a7b8c9d0" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"{
"success": true,
"data": {
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"contactId": "664fa1b2c3d4e5f6a7b8c9d0",
"channelId": "663fa1b2c3d4e5f6a7b8c9d0",
"assignedAgentId": "662fa1b2c3d4e5f6a7b8c9d0",
"status": "open",
"priority": "medium",
"isArchived": false,
"labelIds": [
"661fa1b2c3d4e5f6a7b8c9d0"
],
"labels": [
{
"id": "661fa1b2c3d4e5f6a7b8c9d0",
"name": "VIP",
"color": "#6366f1"
}
],
"unreadCount": 2,
"lastMessagePreview": "See you tomorrow!",
"lastMessageAt": "2026-07-12T09:30:00.000Z",
"lastMessageDirection": "inbound",
"isPinned": false,
"isMuted": false,
"isResolved": false,
"startedAt": "2026-07-10T08:00:00.000Z",
"resolvedAt": null,
"closedAt": null,
"source": "whatsapp",
"createdAt": "2026-07-10T08:00:00.000Z",
"updatedAt": "2026-07-12T09:30:00.000Z",
"contact": {
"id": "664fa1b2c3d4e5f6a7b8c9d0",
"name": "Jane Doe",
"phone": "+14155552671",
"email": "jane@example.com"
},
"channel": {
"id": "663fa1b2c3d4e5f6a7b8c9d0",
"name": "Main WhatsApp",
"type": "whatsapp"
},
"assignedAgent": {
"id": "662fa1b2c3d4e5f6a7b8c9d0",
"fullName": "Alex Agent",
"email": "alex@company.com"
}
},
"meta": {
"apiVersion": "v1"
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:30:00.000Z"
}Update a conversation
/api/public/v1/conversations/{id}Consolidated update supporting assign/unassign agent, status change, archive, priority, and add/remove labels. Provide at least one field. Message sending is not supported.
Path parameters
idstringrequired24-char conversation ObjectId
Request body
statusstringOne of
openpendingresolvedclosedarchivedprioritystringOne of
lowmediumhighurgentassignedAgentIdstring | null24-char agent ObjectId to assign, or null to unassign.
archivedbooleanaddLabelsstring[]removeLabelsstring[]
Response 200Conversation updated
successbooleandataobject25 child fields
idstringcontactIdstring | nullchannelIdstring | nullassignedAgentIdstring | nullstatusstringOne of
openpendingresolvedclosedarchivedprioritystringOne of
lowmediumhighurgentisArchivedbooleanlabelIdsstring[]labelsobject[]3 child fields
idstring | nullnamestring | nullcolorstring | null
unreadCountintegerlastMessagePreviewstring | nulllastMessageAtstring (date-time) | nulllastMessageDirectionstring | nullisPinnedbooleanisMutedbooleanisResolvedbooleanstartedAtstring (date-time) | nullresolvedAtstring (date-time) | nullclosedAtstring (date-time) | nullsourcestring | nullcreatedAtstring (date-time)updatedAtstring (date-time)contactobject4 child fields
idstring | nullnamestring | nullphonestring | nullemailstring | null
channelobject3 child fields
idstring | nullnamestring | nulltypestring | null
assignedAgentobject3 child fields
idstring | nullfullNamestring | nullemailstring | 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 mismatch404Conversation not found409Invalid status transition or conflicting update422Validation failed429Too many requests — rate limit exceeded500Unexpected server error
curl -X PATCH "https://api.inaiy.com/api/public/v1/conversations/6650a1b2c3d4e5f6a7b8c9d0" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"status":"resolved","priority":"high","assignedAgentId":"662fa1b2c3d4e5f6a7b8c9d0"}'{
"status": "resolved",
"priority": "high",
"assignedAgentId": "662fa1b2c3d4e5f6a7b8c9d0"
}{
"success": true,
"data": {
"id": "6650a1b2c3d4e5f6a7b8c9d0",
"contactId": "664fa1b2c3d4e5f6a7b8c9d0",
"channelId": "663fa1b2c3d4e5f6a7b8c9d0",
"assignedAgentId": "662fa1b2c3d4e5f6a7b8c9d0",
"status": "open",
"priority": "medium",
"isArchived": false,
"labelIds": [
"661fa1b2c3d4e5f6a7b8c9d0"
],
"labels": [
{
"id": "661fa1b2c3d4e5f6a7b8c9d0",
"name": "VIP",
"color": "#6366f1"
}
],
"unreadCount": 2,
"lastMessagePreview": "See you tomorrow!",
"lastMessageAt": "2026-07-12T09:30:00.000Z",
"lastMessageDirection": "inbound",
"isPinned": false,
"isMuted": false,
"isResolved": false,
"startedAt": "2026-07-10T08:00:00.000Z",
"resolvedAt": null,
"closedAt": null,
"source": "whatsapp",
"createdAt": "2026-07-10T08:00:00.000Z",
"updatedAt": "2026-07-12T09:30:00.000Z",
"contact": {
"id": "664fa1b2c3d4e5f6a7b8c9d0",
"name": "Jane Doe",
"phone": "+14155552671",
"email": "jane@example.com"
},
"channel": {
"id": "663fa1b2c3d4e5f6a7b8c9d0",
"name": "Main WhatsApp",
"type": "whatsapp"
},
"assignedAgent": {
"id": "662fa1b2c3d4e5f6a7b8c9d0",
"fullName": "Alex Agent",
"email": "alex@company.com"
}
},
"meta": {
"apiVersion": "v1"
},
"requestId": "a1f4c2e0-9b6d-4a1e-8c3f-2d7e5b9a0c11",
"timestamp": "2026-07-12T09:30:00.000Z"
}