---
title: "List offers"
description: "List preorder offers in this shop, paginated. search matches offer name, internal name, or an attached product's title. status filters by current_status (live, scheduled, off, or deleted for deleted offers, which all lea"
url: https://docs.stoqapp.com/v2-reference/preorders-offers/list-offers/
api: "API v2 reference"
method: GET
path: "/preorders/offers"
---

# List offers

`GET https://app.stoqapp.com/api/v2/external/preorders/offers`

List preorder offers in this shop, paginated. search matches offer name, internal name, or an attached product's title. status filters by current_status (live, scheduled, off, or deleted for deleted offers, which all leaves out). shopify_market_ids (Market GIDs) narrows to offers restricted to those Shopify markets. sort orders by created date, name, or revenue.

**Note:** expand adds offer sections to each row, in the same shape as [`GET /preorders/offers/:id`](https://docs.stoqapp.com/v2-reference/preorders-offers/retrieve-an-offer/): inventory, shipping, payments, markets, products (comma-separated or an array). summary counts every offer matching the filters by current_status (total, live, scheduled, off; with status=deleted, total and deleted), not only this page.

## Query parameters

- `status` (string) One of: `all`, `live`, `scheduled`, `off`, `deleted`, `enabled`, `disabled`.
- `sort` (string) One of: `created_at desc`, `created_at asc`, `internal_name asc`, `internal_name desc`, `preorder_revenue desc`, `preorder_revenue asc`.
- `page` (string)
- `per_page` (string)
- `search` (string)
- `shopify_market_ids` (array)
- `expand` (string)

## Returns

- `offers` (array of objects)
  - `id` (string): e.g. `73a74948-2b57-4cc3-971f-2b441828c977`
  - `name` (string): e.g. `Summer Sneaker Drop`
  - `internal_name` (string): e.g. `summer-2026`
  - `current_status` (string): e.g. `live`
  - `line_item_revenue` (string): e.g. `0.00`
  - `order_revenue` (string): e.g. `0.00`
  - `created_at` (string): e.g. `2026-06-25T10:30:45Z`
  - `updated_at` (string): e.g. `2026-06-25T10:30:45Z`
- `meta` (object)
  - `total_count` (integer): e.g. `2`
  - `page` (integer): e.g. `1`
  - `per_page` (integer): e.g. `50`
  - `total_pages` (integer): e.g. `1`

Rate limit: this call costs 1 point ([rate limits](https://docs.stoqapp.com/docs/rate-limits/)).

## Examples

### List offers

```sh
curl "https://app.stoqapp.com/api/v2/external/preorders/offers" \
  -H "X-Auth-Token: $STOQ_API_KEY"
```

### List offers filtered by status, sort and shopify_market_ids

```sh
curl "https://app.stoqapp.com/api/v2/external/preorders/offers?status=all&sort=created_at%20desc&shopify_market_ids=gid%3A%2F%2Fshopify%2FMarket%2F12345" \
  -H "X-Auth-Token: $STOQ_API_KEY"
```

## 200

Success: example response shown.

```json
{
  "offers": [
    {
      "id": "73a74948-2b57-4cc3-971f-2b441828c977",
      "name": "Summer Sneaker Drop",
      "internal_name": "summer-2026",
      "current_status": "live",
      "line_item_revenue": "0.00",
      "order_revenue": "0.00",
      "created_at": "2026-06-25T10:30:45Z",
      "updated_at": "2026-06-25T10:30:45Z"
    },
    {
      "id": "5d1c6f0e-8a43-4e57-9b0a-2f6f4c1d7e90",
      "name": "Winter Collection",
      "internal_name": "winter-2026",
      "current_status": "off",
      "line_item_revenue": "0.00",
      "order_revenue": "0.00",
      "created_at": "2026-06-20T14:15:30Z",
      "updated_at": "2026-06-22T09:45:12Z"
    }
  ],
  "meta": {
    "total_count": 2,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}
```

## 401

Missing or invalid `X-Auth-Token`.

```json
{
  "errors": [
    "Invalid API key"
  ],
  "code": "auth_invalid",
  "details": [
    {
      "code": "auth_invalid",
      "message": "Invalid API key",
      "path": null,
      "value": null,
      "expected": null
    }
  ]
}
```

## 422

The request failed validation.

```json
{
  "errors": [
    "name is required"
  ],
  "code": "validation_failed",
  "details": [
    {
      "code": "validation_failed",
      "message": "name is required",
      "path": null,
      "value": null,
      "expected": null
    }
  ]
}
```

## 429

Rate limited: cost-weighted per token (read 1, write 2; 360 points / 60s). Check `Retry-After`.

```json
{
  "errors": [
    "Rate limit exceeded"
  ],
  "code": "rate_limited",
  "details": [
    {
      "code": "rate_limited",
      "message": "Rate limit exceeded",
      "path": null,
      "value": null,
      "expected": null
    }
  ]
}
```

