List automation campaigns

Overview

Paginated list of the caller's automation campaigns (rs_campaigns.type = 'automation'), each including its file_header configuration (headers map, sample-file path, location identifier). Scoped to the authenticated user's person.company_id.

Prerequisites

  • A bearer token in the Authorization header.

Base URL

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

Endpoint

GET /api/v1/campaign/automate/list

Authentication

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

  • Account bearer. No explicit scope rule — rows cover only the caller's own person.company_id, so you only ever see campaigns owned by your company.

Rate limit

  • No rate limit.

Query parameters

FieldTypeRequiredDescription
pageintegerOptionalPage number, min 1. Default 1.
per_pageintegerOptionalItems per page, 10–100 (values below 10 are raised to 10). Default 15.

How it works

  • 200 with a standard length-aware paginator under data.data (the outer data is the project envelope). Each campaign row carries a nullable file_header object.
  • 422 if page/per_page fall outside their bounds.

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "data": {
      "current_page": 1,
      "data": [
        {
          "id": 12,
          "name": "Weekly review push",
          "description": "Automated weekly review requests",
          "status": "in_progress",
          "type": "automation",
          "created_at": "2026-06-15T10:30:00.000000Z",
          "updated_at": "2026-06-15T10:30:00.000000Z",
          "file_header": {
            "id": 4,
            "rs_campaign_id": 12,
            "headers": {
              "email": "Email Address",
              "phone": "Phone Number",
              "customer_name": "Customer Name",
              "location_identifier": "Store ID"
            },
            "sample_file_path": "campaign_automation/sample_files/1718447400_sample.xlsx",
            "location_identifier": "Store ID"
          }
        }
      ],
      "first_page_url": "https://production-api.shoutaboutus.com/api/v1/campaign/automate/list?page=1",
      "from": 1,
      "last_page": 1,
      "last_page_url": "https://production-api.shoutaboutus.com/api/v1/campaign/automate/list?page=1",
      "links": [
        {
          "url": null,
          "label": "&laquo; Previous",
          "active": false
        },
        {
          "url": "https://production-api.shoutaboutus.com/api/v1/campaign/automate/list?page=1",
          "label": "1",
          "active": true
        },
        {
          "url": null,
          "label": "Next &raquo;",
          "active": false
        }
      ],
      "next_page_url": null,
      "path": "https://production-api.shoutaboutus.com/api/v1/campaign/automate/list",
      "per_page": 15,
      "prev_page_url": null,
      "to": 1,
      "total": 1
    }
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422Returned if page/per_page fall outside their bounds
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/campaign/automate/list?page=1&per_page=15" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?