> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apifycloud.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Campaigns

> List campaigns with filters and cursor pagination

## Endpoint

`GET https://api.apifycloud.io/api/v1/analytics/{appId}/campaigns`

## Authentication

Bearer token required.

Scope: `campaigns:read`

## Path parameters

* `appId` (UUID, required)

## Query parameters

* `limit` (number, optional) page size for cursor pagination
* `cursor` (string, optional) base64 cursor from the previous response
* `status` (string, optional) one of `all`, `active`, `completed`, `paused`, `failed`, `scheduled`, `running`
* `search` (string, optional) search by campaign name
* `tags` (string, optional) comma-separated tags (e.g. `vip,launch`)
* `startDate` (string, optional) ISO date (YYYY-MM-DD)
* `endDate` (string, optional) ISO date (YYYY-MM-DD)

## Response

```json theme={null}
{
  "data": [
    {
      "id": "uuid",
      "name": "string",
      "status": "string",
      "total_contacts": 0,
      "sent_count": 0,
      "created_at": "2024-01-01T00:00:00.000Z"
    }
  ],
  "meta": {
    "timestamp": "2024-01-01T00:00:00.000Z"
  },
  "pagination": {
    "limit": 25,
    "hasMore": false,
    "nextCursor": null
  }
}
```

## Errors

* `403 forbidden` unauthorized for app or missing scope
* `400 validation_error` invalid query parameters
* `429 rate_limit_exceeded`
* `500 server_error`

## Example

```bash theme={null}
curl "https://api.apifycloud.io/api/v1/analytics/{appId}/campaigns?limit=25&status=running&tags=vip,launch" \
  -H "Authorization: Bearer {access_token}"
```
