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

# List Campaigns

`GET /api/v1/campaigns`

## Request

- Base URL: `https://app.kaminari.ad`
- URL: `https://app.kaminari.ad/api/v1/campaigns`
- Auth: HTTP bearer

List campaigns with optional filters + pagination.

``created_from`` / ``created_to`` and ``last_run_from`` /
``last_run_to`` are inclusive calendar days interpreted in
``timezone`` (IANA name, defaults to UTC). "Last run" is the newest
run of the campaign, so a campaign that has never run is excluded
once either last-run bound is set.

``limit`` is capped at 200; requests above that are rejected with 422
rather than silently downgraded. Use ``page`` + ``limit`` to iterate
through all results using the returned ``total``/``pages``.

## Query parameters

- `archived` boolean
- `group_id` string, uuid, nullable
- `q` string, nullable
- `created_from` string, date, nullable
- `created_to` string, date, nullable
- `last_run_from` string, date, nullable
- `last_run_to` string, date, nullable
- `timezone` string
- `page` integer
- `limit` integer

## Response `200`

Successful Response

- PaginatedResponseCampaignResponse
  - `items` CampaignResponse[], required
    - `id` string, uuid, required
    - `name` string, required
    - `campaign_type` string
    - `url` string, required
    - `ad_tag` string, nullable
    - `vast_tag` string, nullable
    - `referrer` string, nullable
    - `ignore_first_n_domains` integer
    - `max_discovered_ads` integer, nullable
    - `ad_formats` DiscoveryAdFormat[], nullable
    - `country_codes` string[], required
    - `group_id` string, uuid, required
    - `emulator_selection` EmulatorSelectionResponse, required: Embedded emulator selection in campaign responses.
      - `categories` string[], required
      - `specific_ids` string[], required
      - `mode` string, required
    - `proxy_type` string
    - `proxy_region` string
    - `proxy_city` string
    - `proxy_isp` string
    - `repeat_count` integer
    - `repeat_mode` 'isolated' | 'shared': How the repeats of one ``url x country x device`` relate to each other. Value-compatible with scanning's ``RepeatModeType`` — campaigns owns its own copy because the write side must not import another domain's package (``check-imports``), and only the value crosses the boundary.
    - `retry_max_attempts` integer
    - `schedule_type` string, nullable
    - `schedule_weekly` object, nullable
    - `schedule_interval_seconds` integer, nullable
    - `schedule_timezone` string, nullable
    - `labels` object
    - `policy_set_id` string, uuid, nullable
    - `schedule_enabled` boolean, required
    - `is_archived` boolean, required
    - `created_at` string, date-time, required
    - `last_run_at` string, date-time, nullable
  - `total` integer, required
  - `page` integer, required
  - `limit` integer, required
  - `pages` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kaminari/apis/kaminari-ad-api.md) · [All operations](https://skmtc.dev/kaminari/apis/kaminari-ad-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaminari/apis/kaminari-ad-api/revisions/013f86e2fd32?raw)
