APIAPI referenceLeads and back in stock
Get Lead
One lead.
GET/v1/stores/{store_id}/leads/{lead_id}Scope leads:read
- Scope:
leads:read(scopes and plan access) - Rate limit: 600 requests/min per API key (test keys: 60/min) (rate limits)
One lead.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| store_idrequired | path | string | |
| lead_idrequired | path | string |
Example request
curl -X GET "https://api.shopassist.coec.dk/v1/stores/sto_01j8000000e008000000000000/leads/lead_01j8000000e008000000000000" \
-H "Authorization: Bearer $SHOPASSIST_API_KEY"Response 200 (Lead)
| Field | Type | Description |
|---|---|---|
| confirmed_atrequired | string | null | format date-time |
| consentsrequired | ConsentRecordView[] | |
| consents[].confirmed_atrequired | string | null | format date-time |
| consents[].consent_textrequired | string | |
| consents[].consent_text_versionrequired | string | |
| consents[].created_atrequired | string | format date-time |
| consents[].idrequired | string | pattern `^cns_[0-9a-hjkmnp-tv-z]{26}$` |
| consents[].is_grantedrequired | boolean | |
| consents[].localerequired | string | |
| consents[].purposerequired | string (enum) | one of newsletter, marketing_email, back_in_stock, transcript_email, handoff_share, analytics, preferences |
| consents[].sourcerequired | string (enum) | one of widget_form, chat, cmp, double_opt_in, unsubscribe, dashboard, api |
| consents[].withdrawn_atrequired | string | null | format date-time |
| conversation_idrequired | string | null | pattern `^conv_[0-9a-hjkmnp-tv-z]{26}$` |
| created_atrequired | string | format date-time |
| emailrequired | string | |
| idrequired | string | pattern `^lead_[0-9a-hjkmnp-tv-z]{26}$` |
| localerequired | string | null | |
| namerequired | string | null | |
| newsletter_statusrequired | "none" | "pending_confirmation" | "confirmed" | "unsubscribed" | |
| platform_sync_statusrequired | "not_required" | "pending" | "synced" | "failed" | |
| purposesrequired | ("newsletter" | "contact_request" | "back_in_stock" | "transcript")[] | |
| sourcerequired | "lead_form" | "chat_tool" | "handoff" | "back_in_stock" | |
| unsubscribed_atrequired | string | null | format date-time |
{
"confirmed_at": "2026-09-28T10:15:30.123Z",
"consents": [
{
"confirmed_at": "2026-09-28T10:15:30.123Z",
"consent_text": "string",
"consent_text_version": "string",
"created_at": "2026-09-28T10:15:30.123Z",
"id": "cns_01j8000000e008000000000000",
"is_granted": true,
"locale": "da-DK",
"purpose": "newsletter",
"source": "widget_form",
"withdrawn_at": "2026-09-28T10:15:30.123Z"
}
],
"conversation_id": "conv_01j8000000e008000000000000",
"created_at": "2026-09-28T10:15:30.123Z",
"email": "string",
"id": "lead_01j8000000e008000000000000",
"locale": "da-DK",
"name": "string",
"newsletter_status": "none",
"platform_sync_status": "not_required",
"purposes": [
"newsletter"
],
"source": "lead_form",
"unsubscribed_at": "2026-09-28T10:15:30.123Z"
}Errors
Every error uses the error envelope; the code field is stable.
400Bad Request401Unauthorized403Forbidden404Not Found422Unprocessable Content429Too Many Requests
Last updated on