Get the paginated, searchable, sortable list of audience recipients for a campaign, plus aggregate validation KPIs, a quality summary, and basic campaign info.
Auth: Both — authentication bearer token. When the campaign has a company_id, it is scoped in-controller (matches caller's person.company_id against that company or its parent/grandparent), so Partner- and Account-tier users inside the campaign's company tree may read it. 404 if campaign not found; 403 if it belongs to another company.
Rate limit: 30 requests/min.
Request
- Query:
page(integer, optional) — page number,min:1. - Query:
limit(integer, optional) — page size, 10–100 (values below 10 are raised to 10), default 10. - Query:
search_value(string, optional) —max:255; substring match. - Query:
search_field(string, optional) — one ofemail,phone,customer_name,requestor_name,company,all(defaultallsearches across all five). - Query:
sort_by(string, optional) —ascordesc(case-insensitive), defaultdesc. - Query:
sort_field(string, optional) — one ofcreated_at,email,phone,customer_name,requestor_name; defaultcreated_at.
Response — { data. } envelope (via CampaignAudienceCollection). Note the collection sets a top-level status: "success" alongside data.
data.audiences:id(integer)email(string|null)phone(string|null)requestor_name(string|null)customer_name(string|null)company(string|null)validation_status(string)is_email_valid(string) — e.g.valid/invalid/duplicateis_phone_valid(string) — e.g.valid/invalid/duplicateis_test(bool)contact_quality(string) — derived:excellent/good/poorcreated_at(stringY-m-d H:i:s| null)updated_at(stringY-m-d H:i:s| null)data.kpis(object) —total_audience,total_valid_emails,total_valid_phones,total_with_both_contacts,total_invalid_emails,total_invalid_phones,total_with_no_contacts,total_kiosk_audience,total_test_audience(ints; all buttotal_test_audienceexcludeis_test), plusemail_validation_rate,phone_validation_rate,both_contacts_rate(floats, %).data.summary(object) —insights(array of strings) anddata_quality_score{ score (float), grade (string A+.F), status (excellent|good|needs_improvement) }.data.campaign_info(object) —id,name,status,file_status(=request_file_status),created_at,updated_at.
Note: this endpoint does NOT use the page rule for slicing beyond the default page query-parameter resolution. Pagination metadata (links, meta) is merged at the top level of the response, beside status and data; data.audiences itself is a plain array of rows.
Path params
| Parameter | Type | Required | Notes |
|---|---|---|---|
campaignId | integer | Required | Digits only. |
Errors: 422 on validation failure.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
