Skip to main content
GET
/
v1
/
campaigns
List campaigns
curl --request GET \
  --url https://app.loops.so/api/v1/campaigns \
  --header 'Authorization: Bearer <token>'
{
  "success": true,
  "pagination": {
    "totalResults": 2,
    "returnedResults": 2,
    "perPage": 20,
    "totalPages": 1,
    "nextCursor": null,
    "nextPage": null
  },
  "data": [
    {
      "campaignId": "cmp_01hxyz",
      "emailMessageId": "em_01hxyz",
      "name": "Spring announcement",
      "subject": "Big spring updates",
      "status": "Draft",
      "createdAt": "2026-03-28T15:00:00.000Z",
      "updatedAt": "2026-03-28T15:00:00.000Z"
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://loops.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

Content API endpoints are currently in an open alpha and are subject to change.

Request

Query parameters

perPage
string
default:20
How many results to return in each request. Must be between 10 and 50.
cursor
string
A cursor to return a specific page of results. Cursors can be found from the pagination.nextCursor value in each response.

Response

Success

success
boolean
required
pagination
object
data
array
required

Error

If perPage is invalid, a 400 Bad Request is returned. If the API key is invalid (or content API is not enabled for your team), a 401 Unauthorized is returned.
success
boolean
required
message
string
required
An error message describing what went wrong.
{
  "success": true,
  "pagination": {
    "totalResults": 2,
    "returnedResults": 2,
    "perPage": 20,
    "totalPages": 1,
    "nextCursor": null,
    "nextPage": null
  },
  "data": [
    {
      "campaignId": "cmp_01hxyz",
      "emailMessageId": "em_01hxyz",
      "name": "Spring announcement",
      "subject": "Big spring updates",
      "status": "Draft",
      "createdAt": "2026-03-28T15:00:00.000Z",
      "updatedAt": "2026-03-28T15:00:00.000Z"
    }
  ]
}
Last modified on May 20, 2026