Getting started
Peak PIM Public API
The versioned, supported surface third-party systems program against. Read your whole catalog — products, variants, collections, media files, linked stores, and publish state — plus markets, definitions, translations, sales channels, and drops, with plain HTTPS and JSON. Create products and variants, edit their fields and metafields, then publish to the stores you choose.
| Base URL | https://api.peak-pim.com |
|---|---|
| Version | /api/v1 — additive after the documented private-beta exception (the promise) |
| Authentication | Authorization: Bearer pk_live_… API key (details) |
| Format | JSON over HTTPS; every failure uses one typed error envelope |
| Rate limits | 120 requests/minute per key, 240/minute per account (details) |
| Machine spec | OpenAPI 3.1 document |
Products and variants support creation and field updates, including metafields, under pim:write. Publish to selected stores under pim:publish and poll the returned operation for outcomes. Data-health remediation and discount workflows remain available. Catalog deletion stays reserved behind the non-grantable pim:delete scope.
The data model in one minute
A Peak PIM account owns a catalog shared by one or more linked Shopify stores. The core entities are products, variants, collections, and media files, living on stores — the Shopify stores linked to the account.
Every entity's values exist twice: the canonical values that every
store inherits, and one store version per store that can override
them. GET /api/v1/products/{id} returns the canonical side;
GET /api/v1/products/{id}/stores/{store_id} returns what one store
actually publishes.
Values are carried as attributes: flexible
{key, value, type} triples, on the entity and on each store version.
Relationships come as id arrays — a product's variant_ids and
media_ids, a variant's product_id.
Publish state
Peak PIM tracks where every draft stands with Shopify. Entities and store versions both carry:
pending_publish— there are draft changes not yet pushed to the store(s).last_publish_status— one ofnever_published,pending,published,failed.draft_revision— the canonical entity’s integer revision; send it as PATCHrevision, including zero when returned.revision— a product or variant store version’s opaque string token; copy it from the store read for store PATCH.
Endpoint families
Catalog entities share one uniform read family — list, detail, store versions, one store's version. Around it sits the operations surface: the schema, localization, channel, scheduling, and quality layers of the same catalog.
Products
Create, read, edit fields and metafields, and publish products to selected stores.
CatalogVariants
Create variants beneath a product, edit their store values and metafields, and publish.
CatalogCollections
Collections with canonical values and one version per store.
CatalogMedia
Media files, named by filename, searchable by filename, tags, or alt text.
CatalogStores
The account's linked Shopify stores — the bounded list every store_id comes from.
Markets
Each market's per-store records, currencies, and the catalogs with their price-list and publication handles.
OperationsMetafield definitions
The custom-field schema layer to read before writing values, filterable by owner type.
OperationsMetaobject definitions
The account's structured content types, their field structure, and their entries.
OperationsTranslations
Translated values per locale and store for products and collections.
OperationsSales channels
Live Shopify channel membership per store — the only reads that can answer 502.
Drops
Scheduled change windows, account-wide or narrowed to one entity.
OperationsData health
Cached catalog-quality state, issue lists, scans and remediation batches.
The endpoint index lists every path with its method, scope, and summary on one page.
How the surface behaves
- Pagination & filtering — cursor pages with
next_cursor, bounded lists, the one page-numbered exception,updated_since/status/search, and ETag conditional reads. - Errors — one envelope everywhere; branch on
code, never onmessage. - Rate limits — per-key and per-account minute budgets with self-describing headers.
- Versioning — the compatibility promise, its private-beta exception, and how future breaking changes ship.