List campaigns
Overview
List campaigns for the authenticated user's own company (paginated), with status/search filtering and sorting.
Prerequisites
- A bearer token. Callable with Account tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/campaign/list
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Account tokens.
-
Authentication, under the ACCOUNT-scope route group.
-
Scoped to (the caller's own company); no partner-tree walk.
-
If the user has
assign_locationset with assigned stores, results are further restricted tostore_id IN (assignedStores).
Rate limit
- No rate limit.
Query parameters
- Query:
status(string, optional) — one ofdraft,active(becomes scheduled/in_progress),inactive(becomes completed/paused/cancelled). - Query:
page(integer, optional) — min 1. - Query:
per_page(integer, optional) — 10–100 (values below 10 are raised to 10), default 15. - Query:
search_field(string, optional) — one ofname,description,store_name,store_id,storeId,type(paired withsearch_value). - Query:
search_value(string, optional) — max 255. - Query:
sort_field(string, optional) — one ofname,status,created_at,updated_at,scheduled_at,started_at,completed_at,request_file_status,request_per_day,request_frequency,request_delay,next_execution_time,total_audience,total_valid_phones,total_valid_emails,store_name,storeId,type(defaultcreated_at). - Query:
sort_by(string, optional) —asc/ASC/desc/DESC(default DESC). - Query:
location_id(integer, optional) — Must be an existing location; filters to a single store.
Response
data.data[](array) — campaign rows; each item:id,store_id,user_id(int)name,description,status,current_step— campaign basicsscheduled_at,started_at,completed_at,created_at,updated_at,next_execution_time(datetime|null)total_audience,total_valid_phones,total_valid_emails(int) — non-test countsrequest_file_name,request_file_status,request_per_day,request_frequency,request_delay,request_after_time,send_immediately(bool),typechannels[]—{ id, rs_campaign_id, channel_type, is_enabled(bool), template_id, errors[], landing_page{} }store(object|null) —{ id, name, storeId, clientLocationId }request_file_url(string|null),unique_code(string|null)has_sms_channel(bool),has_email_channel(bool),is_active(bool)data.current_page,data.per_page,data.total,data.last_page,data.from,data.to,data.first_page_url,data.last_page_url,data.prev_page_url,data.next_page_url,data.path,data.links[]— standard pagination meta.
200 Success · 200
200{
"data": {
"current_page": 1,
"data": [
{
"id": 1,
"store_id": 123,
"user_id": 456,
"name": "Summer Review Campaign",
"description": "Collect summer reviews",
"status": "draft",
"current_step": 3,
"scheduled_at": null,
"started_at": null,
"completed_at": null,
"total_audience": 1000,
"total_valid_phones": 850,
"total_valid_emails": 920,
"request_file_name": "audience.xlsx",
"request_file_status": "completed",
"request_per_day": 50,
"request_frequency": 1,
"request_delay": 0,
"request_after_time": "09:00:00",
"next_execution_time": null,
"send_immediately": false,
"type": "bulk_upload",
"created_at": "2024-01-10T14:30:00.000000Z",
"updated_at": "2024-01-15T10:00:00.000000Z",
"channels": [
{
"id": 1,
"rs_campaign_id": 1,
"channel_type": "email",
"is_enabled": true,
"template_id": 5,
"errors": [],
"landing_page": []
}
],
"store": {
"id": 123,
"name": "Downtown Store",
"storeId": "STORE001",
"clientLocationId": null
},
"request_file_url": null,
"unique_code": "a1b2c3",
"has_sms_channel": false,
"has_email_channel": true,
"is_active": false
}
],
"per_page": 15,
"total": 45,
"last_page": 3,
"from": 1,
"to": 15,
"first_page_url": "http://example.com/api/v1/campaign/list?page=1",
"next_page_url": "http://example.com/api/v1/campaign/list?page=2",
"prev_page_url": null,
"path": "http://example.com/api/v1/campaign/list",
"links": []
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/campaign/list" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 8 days ago
Did this page help you?
