SMS recipients

Overview

Get a paginated list of SMS recipients for a campaign, with status filtering, field search, and sorting.

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/sms

Authentication

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

  • Who can call it: Account tokens.

  • Requires the user's own company bundle_id === 3 (ACCOUNT). (404 Campaign not found otherwise).

  • Non-account users get 403.

Rate limit

  • No rate limit.

Path parameters

ParameterTypeRequiredDescription
campaignIdintegerRequiredDigits only.

Query parameters

  • Query: filter (string, optional) — one of processed, pending, sent, delivered, clicked, failed. Maps to a status/timestamp predicate (e.g. clickedlink_clicked_at NOT NULL).
  • Query: search_field (string, optional) — one of phone_number, status, message_id. When set, LIKE on that column; when you omit it but search_value is set, OR-LIKE across all three.
  • Query: search_value (string, optional, max 255) — search term.
  • Query: sort_field (string, optional) — one of id, phone_number, status, created_at, sent_at, delivered_at, link_clicked_at, failed_at, message_id. Default created_at.
  • Query: sort_by (string, optional) — asc/ASC/desc/DESC. Default desc.
  • Query: limit (integer, optional, 10–100) — per-page; values below 10 are raised to 10, capped at 100. Default 10.
  • Query: page (integer, optional, min 1) — page number. Default 1.

Response

  • current_page (int)
  • data[] (array) — recipient rows with the selected columns above plus nested audience_data.
  • per_page (int), total (int), last_page (int), from/to, first_page_url, next_page_url, etc. (standard paginator keys).

200 Success · 200

{
  "current_page": 1,
  "data": [
    {
      "id": 456,
      "status": "delivered",
      "sent_at": "2026-06-15T10:30:00.000000Z",
      "delivered_at": "2026-06-15T10:31:00.000000Z",
      "link_clicked_at": null,
      "failed_at": null,
      "failure_reason": null,
      "metadata": null,
      "created_at": "2026-06-15T10:29:00.000000Z",
      "dialing_code": "+1",
      "phone_number": "5551234567",
      "message_id": "SM123abc",
      "campaign_audience_data_id": 99,
      "audience_data": {
        "id": 99,
        "customer_name": "Jane Doe",
        "email": "[email protected]",
        "phone": "5551234567",
        "is_email_valid": "valid",
        "is_phone_valid": "valid",
        "validation_status": "validated"
      }
    }
  ],
  "per_page": 10,
  "total": 100
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
403The token is valid but the record sits outside your account
404The campaign id does not exist or is not yours (Campaign not found)
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/sms" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?