Get offers
BetaAPI v2 is in public beta: endpoints, fields and behaviour can change before general availability. See the changelog
GET
/preorders/offers/{id}
const url = 'https://app.stoqapp.com/api/v2/external/preorders/offers/example';const options = {method: 'GET', headers: {'X-Auth-Token': '<X-Auth-Token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://app.stoqapp.com/api/v2/external/preorders/offers/example \ --header 'X-Auth-Token: <X-Auth-Token>'Read a preorder offer’s full representation.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”id
required
string
Responses
Section titled “Responses”Success — example response shown.
Media typeapplication/json
object
Example
{ "id": "gid://shopify/SellingPlan/1", "name": "Summer Sneaker Drop", "internal_name": "summer-2026", "status": "active", "created_at": "2026-06-25T10:30:45Z", "updated_at": "2026-06-25T11:45:30Z", "variants": { "count": 3, "url": "/api/v2/external/preorders/offers/1/products/variants" }, "products": { "source": "custom", "custom": { "variant_ids_sample": [ 47284734423096, 47284734455864, 47284734488632 ] } }, "widget": { "button": { "text": "Preorder Now", "colors": { "enabled": true, "text_color": "#FFFFFF", "background_color": "#1a1a1a" } }, "disclaimer": { "enabled": true, "text": "Expected to ship by August 2026", "text_color": "#666666", "background_color": "#F5F5F5", "border_radius": "4px" }, "badge": { "enabled": true, "text": "Pre-Order", "text_color": "#FFFFFF", "background_color": "#FF6B35" } }, "shipping": { "delivery": { "applies_to_all_products": true, "type": "on_date", "days": null, "date": "2026-08-15T00:00:00Z" }, "display": { "show_details": true, "shipping_text": "Ships in August 2026", "shipping_line_item_property_enabled": true } }, "payments": { "mode": "full", "discount": { "type": null, "value": null }, "options": [ { "type": "full", "deposit_percent": null } ] }, "limits": { "per_order": { "min": 1, "max": 5 }, "per_customer": { "max": 2 }, "total": { "max": 500, "current_count": null }, "display": { "show_remaining": true, "quantity_limit_text": "Only 500 available" } }, "checkout": { "terms": { "enabled": true, "text": "I understand this is a pre-order and will ship in August", "disable_button_until_acknowledged": true }, "mixed_cart": { "allowed": false, "error_message": "Pre-orders cannot be mixed with regular items" }, "order_tags": { "tags": [ "preorder", "summer-2026" ] } }, "inventory": { "provider": "stoq", "reservation": { "timing": "on_sale" }, "continue_selling": { "enabled": true, "auto_apply_to_new_variants": true } }, "markets": { "enabled": false, "applies_to_all_markets": false, "market_ids": [] }, "countdown": { "enabled": true, "mode": "to_schedule_end", "format": "d:h:m:s", "text": "Offer ends in" }, "integrations": { "pos": { "enabled": true, "skip_inventory_check": false }, "b2b": { "enabled": false } }, "translations": { "default_locale": "en", "locales": [ "en", "fr" ], "fields": [ "widget.button.text" ], "translations": { "fr": { "widget.button.text": "Pré-commander" } } }, "advanced": { "use_shopify_selling_plan": false, "custom_css": ".preorder-badge { font-weight: bold; }" }}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 resource does not exist for this shop, or the action path is not registered.
Media typeapplication/json
Error envelope returned by every failed request.
object
errors
required
Array<string>
Example
{ "errors": [ "Offer not found" ]}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?
Thanks for letting us know.
Still stuck? Ask Quinn or chat with support