Advertising is currently in limited beta and is not available to every account. When access has been enabled for an account, a read token can inspect its Meta connection and campaign state; campaign mutations require a Read + Write token and the same owner-confirmation rules as the dashboard. Requests from accounts without access return 403 Forbidden with an errors.base message.

GET /admin/advertising

Returns the account’s Meta connection summary and a cursor-paginated list of campaigns, newest first.

curl -H "Authorization: Bearer your-token-here" \
  -H "Accept: application/json" \
  "https://app.usetix.io/admin/advertising?limit=50"

Query parameters:

Parameter Description
limit Campaigns per page, from 1 to 100. Defaults to 50.
page Opaque cursor from the previous response’s pagination.next_page value or Link header.

Response:

{
  "connection": {
    "provider": "meta",
    "status": "ready",
    "configured": true,
    "ad_account_name": "Usetix Ads",
    "page_name": "Usetix Club",
    "instagram_username": "usetixclub",
    "conversion_tracking_enabled": true,
    "organic_publishing_enabled": true
  },
  "advertising_campaigns": [
    {
      "id": "V3x7Kp9Q",
      "event_slug": "summer-showcase",
      "event_title": "Summer Showcase",
      "name": "Summer Showcase · Local fans",
      "status": "active",
      "objective": "sales",
      "autonomy_mode": "manual",
      "budget": { "amount": "75.00", "currency": "EUR" },
      "spent": { "amount": "18.42", "currency": "EUR" },
      "starts_at": "2026-08-20T10:00:00Z",
      "ends_at": "2026-09-01T18:00:00Z",
      "desired_active": true,
      "last_error_code": null,
      "last_error_message": null,
      "creatives": [],
      "created_at": "2026-08-19T09:00:00Z",
      "updated_at": "2026-08-29T12:00:00Z"
    }
  ],
  "pagination": {
    "total_count": 12,
    "limit": 50,
    "next_page": null
  }
}

connection is null until Meta has been connected. Connection status is one of pending, ready, degraded, expired, or revoked.

Campaign status is one of draft, approved, publishing, in_review, scheduled, active, paused, completed, rejected, or failed. Each campaign also includes its audience, placements, beneficiary and payer, spend-preview ID, and creative copy.

The response sends X-Total-Count with the total campaign count. When another page exists, the Link header contains the full next URL with rel="next"; clients should follow that URL without parsing or modifying the cursor.

Invalid cursors and limits return 400 Bad Request with an error string.