Skip to main content

List Campaigns

Retrieve a paginated list of campaigns.

Endpointโ€‹

GET /v1/campaigns

Authenticationโ€‹

Requires an API key with the campaigns:read scope.

Query Parametersโ€‹

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger25Items per page (max 100)
searchstring-Search by campaign name
statusstring-Filter by status: draft, scheduled, sending, sent, cancelled (all disables the filter)
sortstring-created_atSort field: id, name, status, created_at, scheduled_at, sent_at. Prefix with - for descending
sort_bystring-Alternative to sort: field name only
sort_orderstring-asc or desc (used with sort_by)

Response (200 OK)โ€‹

{
"data": [
{
"id": 42,
"name": "Summer Kayak Promo",
"description": "Promote summer kayak rentals",
"kind": "one_off",
"channel": "email",
"status": "sent",
"audience_type": "filter",
"audience_filter": {
"v": 2,
"preset": "recent"
},
"email_subject": "Summer is here, {customer_name}!",
"email_body": "<p>Hi {customer_name}, book your kayak now.</p>",
"template_key": "promo_blast",
"cta_text": "Book now",
"cta_url": "https://example.com/book",
"scheduled_at": null,
"sent_at": "2026-07-05T10:00:00+00:00",
"total_recipients": 250,
"total_sent": 248,
"created_at": "2026-07-01T09:00:00+00:00",
"updated_at": "2026-07-05T10:05:00+00:00"
}
],
"meta": {
"current_page": 1,
"per_page": 25,
"total": 12,
"total_pages": 1,
"request_id": "req_abc123",
"timestamp": "2026-07-20T12:00:00+00:00"
},
"links": {
"first": "https://app.equipdash.com/api/v1/campaigns?page=1",
"prev": null,
"next": null,
"last": "https://app.equipdash.com/api/v1/campaigns?page=1"
}
}

Response Fieldsโ€‹

FieldTypeDescription
idintegerUnique identifier
namestringCampaign name
descriptionstring|nullInternal description
kindstringone_off or automation
channelstringemail (SMS is planned)
statusstringdraft, scheduled, sending, sent, or cancelled
audience_typestringall_customers, selected_customers, or filter
audience_filterobject|nullAudience filter criteria (see Audience Filter)
email_subjectstring|nullEmail subject line (supports merge tags)
email_bodystring|nullEmail body HTML (supports merge tags)
template_keystring|nullplain, announcement, promo_blast, season_opener, or win_back
cta_textstring|nullButton label
cta_urlstring|nullButton link
scheduled_atstring|nullScheduled send time (ISO 8601, UTC)
sent_atstring|nullActual send time (ISO 8601, UTC)
total_recipientsintegerRecipients resolved for the campaign
total_sentintegerEmails successfully sent
created_atstringISO 8601 datetime
updated_atstringISO 8601 datetime

List responses omit promo_codes and stats โ€” use Get Campaign for those.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks campaigns:read scope

Example Requestโ€‹

curl -X GET "https://app.equipdash.com/api/v1/campaigns?status=draft&sort=-created_at" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."