Catalog

Stores

The Shopify stores linked to the account. Store ids are the addressing scheme for everything store-scoped in the API — store versions, sales channels, and store-scoped filters all take a store_id from this list.

List linked stores

GET/api/v1/storespim:read

Every Shopify store linked to the account. Bounded by the account's stores, so the whole list is returned in one response and next_cursor is always null — no pagination parameters to pass.

FieldTypeDescription
data[].iduuidThe store's id — the store_id every store-scoped endpoint takes.
data[].domainstringThe Shopify domain, e.g. acme.myshopify.com.
data[].namestringThe store's display name.
next_cursornullAlways null — the list is complete.
curl -s "https://api.peak-pim.com/api/v1/stores" \
  -H "Authorization: Bearer pk_live_..."
{
  "data": [
    {
      "id": "9b2f6c1a-7d3e-4f80-b1c5-6a4e8d2b9c30",
      "domain": "acme.myshopify.com",
      "name": "Acme US"
    },
    {
      "id": "4d8e1f2a-3b5c-4967-8d0e-1f2a3b4c5d6e",
      "domain": "acme-eu.myshopify.com",
      "name": "Acme EU"
    }
  ],
  "next_cursor": null
}
Fetch this list first, then cache it.

It rarely changes, and every store-scoped call needs an id from it. A store id that is not this account's is reported as 404 not_found — indistinguishable from a nonexistent store.

Where store ids are used

The store list is small on purpose — the interesting reads hang off other resources and take a store id:

UsageWhere
/api/v1/{resource}/{id}/stores/{store_id}One store's version of a product, variant, collection, or media file — the values that store publishes.
?store_id=… on sales-channel readsSales-channel membership is per store, so those endpoints require the store to answer for.
store_ids on list itemsEvery entity list row names the stores the entity lives on, so you can tell single-store from multi-store rows without a detail read.
stores[] on entitiesThe entity detail carries per-store publish state (store_id, store_domain, pending_publish, last_publish_status) — state only, the values live on the store subresource.

A store's sales channels

GET/api/v1/stores/{id}/sales-channelspim:read

Every Shopify sales channel the store owns — the set an entity's own channel membership is drawn from. This read reaches Shopify live, so it can answer 502. next_cursor is always null. Fully documented on the Sales channels page.