Assignment History
The ordered audit trail for one conversation: every assignment, unassignment and status change, with the actor and timestamp. Use it to reconstruct who handled a customer, to measure time-to-first-assignment, or to compute time-to-resolution.
GET/v2.0/conversations/assignment-history
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| conversationId | string | Target conversation id. Required unless phone is given |
| phone | string | Customer identifier — WhatsApp number without +, or the Instagram / Messenger sender id |
| channel | string | whatsapp | instagram | messengerDefault: whatsapp |
| businessNumber | string | Your business number or platform id. Defaults to the org's only active WhatsApp sender |
Code Example
curl -X GET "https://api.sendiee.com/v2.0/conversations/assignment-history?phone=919876543210" \
-H "Authorization: Bearer YOUR_API_KEY"Response — 200 OK
data is ordered oldest first, capped at the 200 most recent events.
{
"success": true,
"data": [
{
"_id": "66c400119d2b4e0011abaa01",
"conversationId": "66c3f0a19d2b4e0011ab9911",
"action": "assigned",
"assignedAgentId": "6708b2d1c93b2e0012aa1001",
"assignedAgentName": "Aarti Menon",
"assignedTeamId": "6710a1f4c93b2e0012aa7f01",
"assignedTeamName": "Sales",
"assignedBy": null,
"assignedByName": "API key sk_Ab12Cd34",
"statusFrom": "",
"statusTo": "",
"source": "manual",
"assignedAt": "2026-09-09T07:41:12.114Z"
},
{
"_id": "66c401f29d2b4e0011abaa07",
"conversationId": "66c3f0a19d2b4e0011ab9911",
"action": "status-changed",
"assignedAgentId": null,
"assignedAgentName": "",
"assignedTeamId": null,
"assignedTeamName": "",
"assignedBy": "6708b2d1c93b2e0012aa1001",
"assignedByName": "Aarti Menon",
"statusFrom": "pending",
"statusTo": "resolved",
"source": "manual",
"assignedAt": "2026-09-09T08:12:55.900Z"
}
]
}Event Object
| Parameter | Type | Description |
|---|---|---|
| action | string | assigned, unassigned, or status-changed (resolved / reopened appear on older rows) |
| assignedAgentId | string | Agent the conversation went to, on assignment events |
| assignedAgentName | string | Agent name captured at the time, so it survives renames |
| assignedTeamId | string | Team the conversation went to |
| assignedTeamName | string | Team name captured at the time |
| assignedBy | string | Agent id of the actor, or null for API, AI and flow actions |
| assignedByName | string | Who did it — an agent name, or API key <prefix> for API calls |
| statusFrom | string | Previous status key, on status-changed events |
| statusTo | string | New status key, on status-changed events |
| source | string | manual (agent or API), ai (auto-assign), flow (automation), or auto (routing rules) |
| assignedAt | string (ISO 8601) | Server-stamped time of the event |
One trail, every kind of change
Assignments and status moves share the same audit trail, so a single fetch gives you the complete lifecycle of a conversation. Filter on
action if you only care about one kind.Try It
Try it — API Playground
Use instead of a conversation id