APIAPI referenceConversations
List Conversations
Conversations of the store (newest first).
GET/v1/stores/{store_id}/conversationsScope conversations:read
- Scope:
conversations:read(scopes and plan access) - Rate limit: 600 requests/min per API key (test keys: 60/min) (rate limits)
Conversations of the store (newest first).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| store_idrequired | path | string | |
| status | query | "open" | "closed" | null | |
| from | query | string | null | started_at >= from |
| to | query | string | null | started_at < to |
| updated_since | query | string | null | |
| limit | query | integer | Page size |
| cursor | query | string | null | Cursor from the previous page |
Example request
curl -X GET "https://api.shopassist.coec.dk/v1/stores/sto_01j8000000e008000000000000/conversations" \
-H "Authorization: Bearer $SHOPASSIST_API_KEY"Response 200 (Page_ApiConversation_)
| Field | Type | Description |
|---|---|---|
| datarequired | ApiConversation[] | |
| data[].assigned_user_idrequired | string | null | pattern `^usr_[0-9a-hjkmnp-tv-z]{26}$` |
| data[].channelrequired | "widget" | "playground" | "preview" | "demo" | "api" | |
| data[].closed_atrequired | string | null | format date-time |
| data[].csat_scorerequired | integer | null | |
| data[].handoff_requested_atrequired | string | null | format date-time |
| data[].handoff_staterequired | "none" | "requested" | "live" | "delivered_offline" | "failed" | "resolved" | |
| data[].idrequired | string | pattern `^conv_[0-9a-hjkmnp-tv-z]{26}$` |
| data[].identity_levelrequired | "guest" | "order_lookup" | "order_otp" | "customer" | |
| data[].is_testrequired | boolean | |
| data[].last_message_atrequired | string | null | format date-time |
| data[].localerequired | string | null | |
| data[].message_countrequired | integer | ≥ 0 |
| data[].moderequired | "ai" | "human_requested" | "human" | |
| data[].platform_customer_idrequired | string | null | Only for identity_level = customer |
| data[].resolutionrequired | "resolved_ai" | "handed_off" | "abandoned" | "unknown" | null | |
| data[].shopperrequired | ShopperView | Shopper identity as shown on lists (masked for agent/viewer, 06 §5.3). |
| data[].shopper.emailrequired | string | null | |
| data[].shopper.is_maskedrequired | boolean | |
| data[].shopper.is_verifiedrequired | boolean | |
| data[].shopper.namerequired | string | null | |
| data[].started_atrequired | string | format date-time |
| data[].statusrequired | "open" | "closed" | |
| data[].store_idrequired | string | pattern `^sto_[0-9a-hjkmnp-tv-z]{26}$` |
| data[].tagsrequired | string[] | |
| has_morerequired | boolean | |
| next_cursorrequired | string | null | Opaque cursor for the next page; null on the last page |
{
"data": [
{
"assigned_user_id": "usr_01j8000000e008000000000000",
"channel": "widget",
"closed_at": "2026-09-28T10:15:30.123Z",
"csat_score": 1,
"handoff_requested_at": "2026-09-28T10:15:30.123Z",
"handoff_state": "none",
"id": "conv_01j8000000e008000000000000",
"identity_level": "guest",
"is_test": true,
"last_message_at": "2026-09-28T10:15:30.123Z",
"locale": "da-DK",
"message_count": 0,
"mode": "ai",
"platform_customer_id": "string",
"resolution": "resolved_ai",
"shopper": {
"email": "string",
"is_masked": true,
"is_verified": true,
"name": "string"
},
"started_at": "2026-09-28T10:15:30.123Z",
"status": "open",
"store_id": "sto_01j8000000e008000000000000",
"tags": [
"string"
]
}
],
"has_more": true,
"next_cursor": "string"
}Errors
Every error uses the error envelope; the code field is stable.
400Bad Request401Unauthorized403Forbidden404Not Found422Unprocessable Content429Too Many Requests
Last updated on