Email recipients

Overview

Get a paginated list of email recipients for a campaign, with optional status filter, search, and sort.

Prerequisites

  • A bearer token. Callable with Account tokens.
  • The campaignId of the record you are targeting.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

GET /api/v1/campaign/{campaignId}/recipients/email

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Who can call it: Account tokens.

  • A non-matching id returns 404 Campaign not found.

Rate limit

  • No rate limit.

Path parameters

ParameterTypeRequiredDescription
campaignIdintegerRequiredDigits only.

Query parameters

  • Query: filter (string, optional) — one of processed,pending,sent,delivered,opened,clicked,unsubscribed,failed; filters by status or by presence of the matching *_at timestamp.
  • Query: search_field (string, optional) — one of email,status,message_id,customer_name; when you omit it but search_value is present, searches across email/status/message_id/customer_name.
  • Query: search_value (string, optional, max 255) — LIKE-matched.
  • Query: sort_field (string, optional) — one of id,email,status,created_at,sent_at,delivered_at,opened_at,clicked_at,unsubscribed_at,failed_at,customer_name; defaults to created_at.
  • Query: sort_by (string, optional) — asc/desc (case-insensitive); defaults to desc.
  • Query: limit (integer, optional, 10–100) — page size; defaults to 10 (values below 10 are raised to 10, capped at 100).
  • Query: page (integer, optional, min 1) — page number.

Response

  • id (int)
  • status (string)
  • sent_at / delivered_at / opened_at / clicked_at / unsubscribed_at / failed_at (datetime, nullable)
  • unsubscribe_reason / failure_reason (string, nullable)
  • metadata (object/array, nullable)
  • created_at (datetime)
  • email (string)
  • message_id (string, nullable)
  • campaign_audience_data_id (int, nullable)
  • next_follow_up_at (datetime, nullable), follow_up_count (int), parent_id (int, nullable)
  • audience_data (object, nullable) — included relation with id,customer_name,email,phone,is_email_valid,is_phone_valid,validation_status.

200 Success · 200

{
  "current_page": 1,
  "data": [
    {
      "id": 123,
      "status": "delivered",
      "sent_at": "2026-06-15T13:45:00.000000Z",
      "delivered_at": "2026-06-15T13:46:00.000000Z",
      "opened_at": null,
      "clicked_at": null,
      "unsubscribed_at": null,
      "failed_at": null,
      "unsubscribe_reason": null,
      "failure_reason": null,
      "metadata": null,
      "created_at": "2026-06-15T13:40:00.000000Z",
      "email": "[email protected]",
      "message_id": "abc-123",
      "campaign_audience_data_id": 9,
      "next_follow_up_at": null,
      "follow_up_count": 0,
      "parent_id": null,
      "audience_data": {
        "id": 9,
        "customer_name": "Jane Doe",
        "email": "[email protected]",
        "phone": "+15551234567",
        "is_email_valid": "valid",
        "is_phone_valid": "valid",
        "validation_status": "valid"
      }
    }
  ],
  "per_page": 10,
  "total": 100,
  "last_page": 10
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
404No record matches the id you sent
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/campaign/123/recipients/email" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?