---
title: "List campaigns"
method: GET
path: "/campaigns"
tags: ["Campaigns"]
---

# List campaigns

`GET /campaigns`

## Request

- Base URL: `https://api.textla.com/v1`
- URL: `https://api.textla.com/v1/campaigns`
- Auth: HTTP bearer

Returns the account's campaigns, including ones created in the portal, filtered by status, tag, group, keyword or sender. Results are cursor-paginated: `next_cursor` is null on the last page.

## Query parameters

- `cursor` string: Opaque token from a previous response's next_cursor, to fetch the next page. Omit for the first page.
- `group` string: Only campaigns whose audience includes this group.
- `keyword` string: Only campaigns whose audience includes this keyword.
- `phone_number` string: Only campaigns sent from this number.
- `status` 'active' | 'canceled' | 'complete' | 'failed' | 'paused' | 'pending_approval' | 'rejected' | 'sent': Only campaigns with this status.
- `tag` string: Only campaigns whose audience includes this tag.

## Response `200`

OK

- ListCampaignsOutput
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `items` Campaign[], nullable, required: The campaigns of the page.
    - `$schema` string, uri: A URL to the JSON Schema for this object.
    - `audience` AudienceFilter, required
      - `all_contacts` boolean, nullable, required
      - `groups` LabelFilter, required
        - `exclude` string[], nullable, required
        - `include` string[], nullable, required
        - `match` string, nullable, required
      - `keywords` LabelFilter, required
        - `exclude` string[], nullable, required
        - `include` string[], nullable, required
        - `match` string, nullable, required
      - `tags` LabelFilter, required
        - `exclude` string[], nullable, required
        - `include` string[], nullable, required
        - `match` string, nullable, required
    - `batch_count` integer, required
    - `created_at` integer, required
    - `current_batch` CurrentBatch, required
      - `id` string, required
      - `status` string, required
    - `failure_code` string, nullable, required
    - `id` string, required
    - `media` Media[], nullable, required
      - `content_type` string, required
      - `height` integer, nullable, required
      - `id` string, required
      - `name` string, required
      - `size_bytes` integer, required
      - `url` string, nullable, required
      - `width` integer, nullable, required
    - `message` string, required
    - `message_count` integer, required
    - `name` string, required
    - `phone_number` string, required
    - `rejection_reason` string, nullable, required
    - `send_at` integer, nullable, required
    - `status` string, required
    - `updated_at` integer, required
  - `next_cursor` string, nullable, required: Cursor for the next page; null on the last page.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `412`: Precondition Failed
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error
- `501`: Not Implemented
- `502`: Bad Gateway
- `503`: Service Unavailable
- `504`: Gateway Timeout

---

[API](https://skmtc.dev/textla/apis/textla-api.md) - [All operations](https://skmtc.dev/textla/apis/textla-api/llms.txt) - [OpenAPI document](https://skmtc.dev/textla/apis/textla-api/revisions/473f03350bc1?raw)
