Getting started

Authentication

Every request to the Public API carries an API key as a bearer token. Keys are created by a signed-in store user, belong to exactly one account, are scoped, and are revocable at any time.

Create an API key

  1. Sign in to Peak PIM.
  2. Open Settings → API.
  3. Choose the key's access level (the scopes it carries) and create it.
  4. Copy the key — it starts with pk_live_ and is shown once. Keys are stored hashed, so it cannot be displayed again later.

Use it

Send the key in the Authorization header of every request:

curl https://api.peak-pim.com/api/v1/ping \
  -H "Authorization: Bearer pk_live_..."

A 200 from /api/v1/ping proves the key end to end: it passed authentication, the route allowlist, its scope check, and the rate limiter.

Scopes

A key carries a fixed set of scopes chosen at creation. A request to a route the key's scopes don't cover fails with 403 forbidden_scope.

ScopeGrantsUsed by
pim:readRead the catalogEvery read endpoint — all the GETs in v1
pim:writeEdit draft valuesData-health scans and remediation batches (the first write endpoints, shipped 2026-07-31), plus future entity writes (additive)
pim:publishPublish to ShopifyFuture v1 publish endpoints (additive)
pim:webhooksManage webhooksFuture v1 webhook endpoints (additive)

One more scope exists in the contract but not on keys: POST /api/v1/data-health/unused-deletions requires pim:delete, which key creation cannot grant. That endpoint is documented but RESERVED — it answers 403 for every credential that exists today. See Data health.

Principle of least privilege.

A pim:read-only key still covers every read — most integrations need nothing more. But a read-only key is no longer enough for data-health automation: running scans or remediation batches takes pim:write. Add a scope only when your integration calls the endpoints that use it.

Security model

Rotation and revocation