Skip to content

Update a countdown on an offer

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

PATCH/preorders/offers/{id}/countdown

Costs 2 rate-limit points · Rate limits

Update any subset of the countdown timer settings on a preorder offer.

Deep partial: absent fields are unchanged; current is read-only.

Also searched asedit countdownchange timermodify countdown settingsenable countdownshow timerturn on countdownenable countdown timerdisable countdownhide timerturn off countdowndisable countdown timerset countdown textset timer textchange countdown labelset timer labelset custom end dateset timer end datechange timer deadlineset ends textset timer end textset 'ends in' textset countdown modechange timer modeuse schedule for timeruse custom date for timerset starts textset timer pre-launch textset 'starts in' textset timer stylechange timer styleset countdown stylechange timer colorscountdown labelstimer labelsrename days labelchange hours labelcountdown unit names

Path parameters

  • idstringRequired

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

  • show_whenstring

    disabled hides the timer; before_launch counts down to the start, during_preorder to the end, both to the start and then the end. It is read back from the dates: both switches date_source to schedule unless date_source is sent, and with custom dates before_launch clears ends_at and during_preorder clears starts_at.

    One of disabledbefore_launchduring_preorderboth
  • date_sourcestring

    schedule uses the offer schedule start and end dates; custom uses starts_at and ends_at.

    One of schedulecustom
  • starts_atstring

    Custom launch date and time. Without Z or an offset it is the shop's local time (2026-09-30T18:00). null clears it. Used when date_source is custom.

  • ends_atstring

    Custom deadline date and time. Without Z or an offset it is the shop's local time (2026-09-30T18:00). null clears it. Used when date_source is custom.

  • starts_textstring

    Heading shown before launch.

  • ends_textstring

    Heading shown during the preorder.

  • labelsobject
    Show 4 child attributesHide child attributes
    • daysstring

      Days label.

    • hoursstring

      Hours label.

    • minutesstring

      Minutes label.

    • secondsstring

      Seconds label.

  • text_colorstring

    Timer text color. Hex.

  • background_colorstring

    Timer background color. Hex.

  • border_radiusinteger

    Corner radius in pixels.

  • unitsarray of anys

    Time units to display, any of days, hours, minutes, seconds.

  • localestring

    Language the translated fields are written in, such as 'fr' or 'pt-BR'. Omitted: the shop's default language. Untranslated fields ignore it.

Returns

  • show_whenstring
    Example: during_preorder
  • date_sourcestring
    Example: custom
  • starts_atany
  • ends_atstring
    Example: 2026-09-30T18:00:00Z
  • starts_textany
  • ends_textany
  • labelsobject
    Show 4 child attributesHide child attributes
    • daysstring
      Example: Days
    • hoursstring
      Example: Hours
    • minutesstring
      Example: Mins
    • secondsstring
      Example: Secs
  • text_colorstring
    Example: #000000
  • background_colorstring
    Example: #f5f5f5
  • border_radiusinteger
    Example: 8
  • unitsarray of strings
  • currentobject
    Show 3 child attributesHide child attributes
    • visible_phasestring
      Example: during_preorder
    • target_atstring
      Example: 2026-09-30T18:00:00Z
    • heading_textany

Errors

401

Missing or invalid X-Auth-Token.

404

The resource does not exist for this shop, or the action path is not registered.

409

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

422

Invalid fields: one details entry per field error, its path the canonical section path. Nothing was saved.

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.

PATCH/preorders/offers/{id}/countdown
curl -X PATCH "https://app.stoqapp.com/api/v2/external/preorders/offers/73a74948-2b57-4cc3-971f-2b441828c977/countdown" \
  -H "X-Auth-Token: $STOQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "show_when": "during_preorder",
    "date_source": "custom",
    "ends_at": "2026-09-30T18:00:00Z"
  }'
Response
{
  "show_when": "during_preorder",
  "date_source": "custom",
  "starts_at": null,
  "ends_at": "2026-09-30T18:00:00Z",
  "starts_text": null,
  "ends_text": null,
  "labels": {
    "days": "Days",
    "hours": "Hours",
    "minutes": "Mins",
    "seconds": "Secs"
  },
  "text_color": "#000000",
  "background_color": "#f5f5f5",
  "border_radius": 8,
  "units": [
    "days",
    "hours",
    "minutes",
    "seconds"
  ],
  "current": {
    "visible_phase": "during_preorder",
    "target_at": "2026-09-30T18:00:00Z",
    "heading_text": null
  }
}