Skip to content

Create an offer

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

POST/preorders/offers

Costs 2 rate-limit points · Rate limits

Create a new preorder offer.

Also searched asnew offermake a preordercreate preorder offer

Headers

  • Idempotency-Keystring

    A fresh unique key for every write (a new UUID, say); reuse it only to retry that write. Keys are remembered for 1 hour: the same key and the same request within that hour returns the first result, with Idempotent-Replayed: true, without running again; the same key with a different method, path or body is refused (422 idempotency_key_reused); a retry while the first is still running gets 409 idempotency_key_in_progress. Keys are per store. Server errors and rate limits are not kept, so their retry runs.

Request body

  • namestring
    Example: Summer Sneaker Drop
  • internal_namestring
    Example: summer-2026

Returns

  • idstring
    Example: 73a74948-2b57-4cc3-971f-2b441828c977
  • namestring
    Example: Summer Sneaker Drop
  • internal_namestring
    Example: summer-2026
  • availabilityobject
    Show 5 child attributesHide child attributes
    • schedulestring
      Example: enabled
    • starts_atany
    • ends_atany
    • current_statusstring
      Example: live
    • time_zonestring
      Example: America/New_York

Errors

401

Missing or invalid X-Auth-Token.

409

An earlier request with the same Idempotency-Key is still running. Wait, then resend the same request with the same key.

422

The request failed validation.

429

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

Every error has the same shape: see Errors.

POST/preorders/offers
curl -X POST "https://app.stoqapp.com/api/v2/external/preorders/offers" \
  -H "X-Auth-Token: $STOQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Summer Sneaker Drop",
    "internal_name": "summer-2026"
  }'
Response
{
  "id": "73a74948-2b57-4cc3-971f-2b441828c977",
  "name": "Summer Sneaker Drop",
  "internal_name": "summer-2026",
  "availability": {
    "schedule": "enabled",
    "starts_at": null,
    "ends_at": null,
    "current_status": "live",
    "time_zone": "America/New_York"
  }
}