Skip to main content

Rate limits

Over a limit, the API returns 429 RATE_LIMITED. The per-store and failed-key limits include a Retry-After header (seconds). For the per-guest and share limits, wait a few seconds before retrying.

Pagination

List endpoints use page numbers. Paged responses include:
Keep loading while hasNextPage is true. To match the storefront, use the merchant’s page sizes from GET /settings: widgetSettings.wishlistPerPage for lists and widgetSettings.wishlistDetailItemsPerPage for items.
GET /wishlists pages the lists, and each list contains all its items. GET /wishlists/{wishlistId} pages the items of one list.

Versions

Every response has an API-Version header (currently 1.0.0). New fields and endpoints are added to v1 without notice, so ignore fields you do not recognise. Breaking changes ship as a new base path (/api/v2). When a version is deprecated, responses also include:
After the sunset date, the old version returns 410 VERSION_RETIRED. Show an “Update your app” message when you get it.

Idempotency

There are no idempotency keys. These calls are safe to repeat:
  • PUT /products/{productId}/wishlists: sends the final state.
  • POST /guest-wishlists/claim
  • POST /wishlists/{wishlistId}/share-links: returns the same unused link.
  • Bulk add with items[]: skips variants already in the list.
Adding a single product or creating a list again returns 409. Treat that as success if you are retrying.