APIAPI referenceEvent log
List Events
Events of the last 30 days (newest first).
GET/v1/eventsScope events:read
- Scope:
events:read(scopes and plan access) - Rate limit: 600 requests/min per API key (test keys: 60/min) (rate limits)
Events of the last 30 days (newest first).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| type | query | string (enum) | null | |
| store_id | query | string | null | |
| created_after | 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/events" \
-H "Authorization: Bearer $SHOPASSIST_API_KEY"Response 200 (Page_WebhookEventEnvelope_)
| Field | Type | Description |
|---|---|---|
| datarequired | WebhookEventEnvelope[] | |
| data[].api_versionrequired | "v1" | default "v1" |
| data[].created_atrequired | string | format date-time |
| data[].datarequired | object | |
| data[].idrequired | string | pattern `^evt_[0-9a-hjkmnp-tv-z]{26}$` |
| data[].organization_idrequired | string | pattern `^org_[0-9a-hjkmnp-tv-z]{26}$` |
| data[].store_idrequired | string | null | null for organization-level events (usage)pattern `^sto_[0-9a-hjkmnp-tv-z]{26}$` |
| data[].typerequired | string (enum) | one of conversation.created, conversation.closed, message.created, handoff.requested, handoff.updated, lead.captured, lead.confirmed, lead.unsubscribed, back_in_stock.subscribed, back_in_stock.notified, csat.submitted, action.executed, order.attributed, privacy_request.completed, store.status_changed, sync.failed, usage.threshold_reached |
| has_morerequired | boolean | |
| next_cursorrequired | string | null | Opaque cursor for the next page; null on the last page |
{
"data": [
{
"api_version": "v1",
"created_at": "2026-09-28T10:15:30.123Z",
"data": {},
"id": "evt_01j8000000e008000000000000",
"organization_id": "org_01j8000000e008000000000000",
"store_id": "sto_01j8000000e008000000000000",
"type": "conversation.created"
}
],
"has_more": true,
"next_cursor": "string"
}Errors
Every error uses the error envelope; the code field is stable.
400Bad Request401Unauthorized403Forbidden422Unprocessable Content429Too Many Requests
Last updated on