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

# List campaigns

`GET /v1/campaigns`

This endpoint shows all campaigns that are available for the shop.
Campaigns are used to allow temporary discounts on products.
After the indexing process completes, campaign details become immediately available. However, developers should be cautious. Before displaying a campaign, always validate the 'start_at' and 'end_at' fields. Failure to do so might result in campaigns displaying earlier than intended.

## Query parameters

- `sort` 'id' | 'reduction' | 'start_at' | 'end_at'
- `sortDir` 'asc' | 'desc'
- `page` integer
- `perPage` integer
- `limit` integer
- `offset` integer

## Response `200`

successful operation

- CampaignsResponse
  - `pagination` union
    - Pagination
      - `current` integer, required
      - `first` integer, required
      - `last` integer, required
      - `next` integer, required
      - `page` integer, required
      - `perPage` integer, required
      - `prev` integer, required
      - `total` integer, required
    - OffsetPagination
      - `total` integer, required
  - `entities` Campaign[]
    - `id` integer
    - `name` string
    - `key` string
    - `description` string
    - `reduction` integer
    - `customData` object
    - `start_at` string
    - `end_at` string

## Other responses

- `401` — authentication failed

## Changes

- **2026-07-17** `8cfa924ae703` — 3 breaking, 8 warning, 3 info
  - for the `query` request parameter `perPage`, default value was changed from `1` to `100`
  - added `#/components/schemas/Pagination, #/components/schemas/OffsetPagination` to the `pagination` response property `oneOf` list for the response status `200`
  - the `pagination` response's property type/format changed from `object`/`` to ``/`` for status `200`
  - removed the optional property `pagination/current` from the response with the `200` status
  - …10 more
- **2023-08-21** `beabe2149947` — 3 warning
  - removed the optional property `entities/items/customData/newField1` from the response with the `200` status
  - removed the optional property `entities/items/customData/newField2` from the response with the `200` status
  - removed the optional property `entities/items/customData/prices` from the response with the `200` status
- **2023-08-06** `302b7c443b51` — 2 breaking, 2 warning, 13 info
  - for the `query` request parameter `perPage`, default value was changed from `100` to `1`
  - the `pagination` response's property type/format changed from ``/`` to `object`/`` for status `200`
  - deleted the `query` request parameter `limit`
  - deleted the `query` request parameter `offset`
  - …13 more

[Change history](https://skmtc.dev/scayle/apis/storefront-api-documentation/changes/v1/campaigns/get.md)

---

[API](https://skmtc.dev/scayle/apis/storefront-api-documentation.md) · [All operations](https://skmtc.dev/scayle/apis/storefront-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/scayle/storefront-api-documentation/revisions/8cfa924ae703/schema)
