Skip to main content

List Recipients

Retrieve a paginated list of a campaign's recipients with per-recipient delivery and engagement status.

Recipient rows are created when a campaign is sent or scheduled (and for selected_customers audiences, when customers are picked in the EquipDash UI).

Endpointโ€‹

GET /v1/campaigns/{id}/recipients

Authenticationโ€‹

Requires an API key with the campaigns:read scope.

Path Parametersโ€‹

ParameterTypeDescription
idintegerThe campaign ID

Query Parametersโ€‹

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger25Items per page (max 100)

Response (200 OK)โ€‹

{
"data": [
{
"id": 9001,
"campaign_id": 42,
"customer_id": 456,
"customer": {
"id": 456,
"first_name": "Jane",
"last_name": "Smith",
"email": "jane@example.com"
},
"status": "sent",
"sent_at": "2026-07-05T10:01:00+00:00",
"opened_at": "2026-07-05T14:22:00+00:00",
"clicked_at": null,
"error_message": null,
"created_at": "2026-07-05T10:00:00+00:00"
},
{
"id": 9002,
"campaign_id": 42,
"customer_id": 457,
"customer": {
"id": 457,
"first_name": "Tom",
"last_name": "Brown",
"email": "tom@example.com"
},
"status": "failed",
"sent_at": null,
"opened_at": null,
"clicked_at": null,
"error_message": "Mailbox unavailable",
"created_at": "2026-07-05T10:00:00+00:00"
}
],
"meta": {
"current_page": 1,
"per_page": 25,
"total": 250,
"total_pages": 10,
"request_id": "req_abc123",
"timestamp": "2026-07-20T12:00:00+00:00"
},
"links": {
"first": "https://app.equipdash.com/api/v1/campaigns/42/recipients?page=1",
"prev": null,
"next": "https://app.equipdash.com/api/v1/campaigns/42/recipients?page=2",
"last": "https://app.equipdash.com/api/v1/campaigns/42/recipients?page=10"
}
}

Response Fieldsโ€‹

FieldTypeDescription
idintegerUnique recipient identifier
campaign_idintegerThe campaign ID
customer_idintegerThe customer ID
customerobject|nullCustomer summary (id, first_name, last_name, email)
statusstringpending, sent, failed, or skipped
sent_atstring|nullDelivery time (ISO 8601)
opened_atstring|nullFirst open time (ISO 8601)
clicked_atstring|nullFirst click time (ISO 8601)
error_messagestring|nullFailure reason (failed recipients only)
created_atstringISO 8601 datetime

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks campaigns:read scope
404resource_not_foundCampaign not found

Example Requestโ€‹

curl -X GET "https://app.equipdash.com/api/v1/campaigns/42/recipients?per_page=50" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."