Skip to content

List offers

BetaAPI v2 is in public beta: endpoints, fields and behaviour can change before general availability. See the changelog

GET
/preorders/offers
curl --request GET \
--url 'https://app.stoqapp.com/api/v2/external/preorders/offers?status=all&sort=created_at%20desc&page=string&per_page=string&search=string&market_ids=gid%3A%2F%2Fshopify%2FMarket%2F12345&expand=string' \
--header 'X-Auth-Token: <X-Auth-Token>'

List preorder offers in this shop, paginated. search matches offer name, internal name, or an attached product’s title. status filters by enabled/disabled/scheduled. market_ids narrows to offers restricted to those Shopify markets. sort orders by created date, name, or revenue.

Note: expand adds capability blocks to each row, in the same shape as their own reads: inventory, shipping, payments, markets, products (comma-separated or an array). summary counts every offer matching the filters by state (total, active, scheduled, paused, ended), not only this page.

status
Allowed values: all enabled disabled scheduled

Example

all
sort
Allowed values: created_at desc created_at asc internal_name asc internal_name desc preorder_revenue desc preorder_revenue asc

Example

created_at desc
page

Example

string
per_page

Example

string
search

Example

string
market_ids

Example

[
"gid://shopify/Market/12345"
]
expand

Example

string

Success — example response shown.

Media typeapplication/json
object

Example

{
"offers": [
{
"id": "gid://shopify/SellingPlan/1",
"name": "Summer Sneaker Drop",
"internal_name": "summer-2026",
"status": "draft",
"created_at": "2026-06-25T10:30:45Z",
"updated_at": "2026-06-25T10:30:45Z"
},
{
"id": "gid://shopify/SellingPlan/2",
"name": "Winter Collection",
"internal_name": "winter-2026",
"status": "active",
"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
}
}

Missing or invalid X-Auth-Token.

Media typeapplication/json

Error envelope returned by every failed request.

object
errors
required
Array<string>

Example

{
"errors": [
"Unauthorized"
]
}

The request failed validation.

Media typeapplication/json

Error envelope returned by every failed request.

object
errors
required
Array<string>

Example

{
"errors": [
"name is required"
]
}

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

Media typeapplication/json

Error envelope returned by every failed request.

object
errors
required
Array<string>

Example

{
"errors": [
"Rate limit exceeded"
]
}
Was this page helpful?

Still stuck? Ask Quinn or chat with support