2026-06-22 - Product store endpoints; variants folded into products
The catalog is keyed at the SKU (item) level.item_id is the required unique identifier for each item; product_id is now an optional product-level code that groups related items.
Added:
- Product store REST entity -
GET /v1/product_store(list),POST /v1/product_store(upsert),POST /v1/product_store/bulk, andGET/PATCH/DELETE /v1/product_store/{entity_id}- per-store, market, or channel prices, costs, and stock. Upsert key(item_id, store_id). See Product store. POST /v1/imports/product_store- asynchronous CSV import for product store-level data. See Import product store CSV.
- Product create now requires
item_id(the unique SKU-level key);product_idis optional.
POST/PATCH/DELETE /v1/product_variants/*andPOST /v1/product_variants/bulk. The variant level is now the item-level product, addressed byitem_id. Migrate variant writes to the Products endpoints.
2026-06-03 - Store-level ingestion
The ingest path now supports store-level product data, so clients pushing data programmatically can send multiple prices per product per store, market, or channel. Added:- Ingest endpoints accept a
store_idalongsideitem_id- one record per item-store combination, persisted per the Product store data spec. - Upsert semantics use
(item_id, store_id)as the natural key. - Every incoming record is validated against existing stores and products; invalid records (unknown store, duplicate keys within a batch) return a 4xx with a specific error code per row.
store_id are treated as product-level and behave exactly as before.
2026-05-21 - Read endpoints
The Public API now reads as well as writes. The inbound/outbound asymmetry that integrators raised at v1 launch is closed. Added:GET /v1/products— list and filter enriched product records, including custom columns from product imports. See List products.GET /v1/transactions— list and filter sales transactions. See List transactions.GET /v1/grids— list grids in the account, including a column-schema summary and row count per grid. See List grids.GET /v1/grids/{grid_id}/rows— export the full row contents of a grid (canonical + custom + formula/calculated columns). See Get grid rows.
2026-05-04 - v1 launch
The first public version of the Retailgrid API is live athttps://clientapi.retailgrid.io.
Available now:
- Auth -
GET /v1/auth/verifyfor key validation. Bearer tokens, prefixedrg_live_. - Imports (async CSV) - products, transactions, competitor prices.
- Products - bulk upsert, create, patch, delete.
- Product variants - bulk upsert, create, patch, delete.
- Transactions - bulk upsert, create, patch, delete.
- Competitor prices - bulk upsert, create, patch, delete.
- Jobs -
GET /v1/jobs/{job_id}for polling async import status.
Idempotency-Keyheader support on non-idempotent creates.- A documented rate-limit ceiling.
- Webhook callbacks for job completion (replacing polling).
