2026-04
2026-04 Release Notes
Inventory
We have redesigned the inventory endpoints to use POST request bodies instead of query parameters, added new response fields, and improved consistency across the API.
Breaking Changes
- POST /inventory (was GET): Now accepts a JSON request body (
InventoryRequest) instead of query parameters. The response returns a flat array ofInventoryobjects instead of a{ data: [...] }wrapper. - POST /inventory_levels (was GET): Now accepts a JSON request body (
InventoryLevelsRequest) instead of a JSON-encodedoptionsquery parameter. The response returns a flat array ofInventoryLevelobjects instead of a{ data: [...] }wrapper. - GET /inventory_levels/{product_id}: The
inactiveparameter (integer0/1) has been renamed toinclude_inactive(boolean). Thetotalsobject has been removed from the response. - Quantity field changes:
inventory_levelandquantityhave been split intocurrent_inventory_levelandquantity_to_procure. In older APIs, stock required for fulfillments and services was represented as negativequantityvalues. In the 2026-04 API, this is now represented as positivequantity_to_procurevalues. This is not a straight renaming — consumers relying on negative values inquantityorinventory_levelmust update their logic.
Updated Endpoints
- POST /inventory: List inventory records. Supports filtering by
product_id,variants,after,before,include_deleted, pagination viasize(max 5000), andsort_direction. - GET /inventory/{product_id}: List inventory records for a single product. Improved
product_idandvariantsparameter descriptions to clarify variant matching behavior. - POST /inventory_levels: List inventory levels. Now supports
group_variantsandto_be_procured_onlyfilters. Theout_of_stock_onlyandgroup_byparameters have been removed.product_idsandroot_product_idsare now documented as mutually exclusive.sizenow has an explicit maximum of 10,000. - GET /inventory_levels/{product_id}: List inventory levels for a single product.
Schema Changes
Inventory
inventory_levelhas been renamed tocurrent_inventory_level.- New fields:
quantity_to_procure,average_cost,deleted_at,version,reorder_target,reorder_method.
InventoryLevel
quantityhas been renamed tocurrent_inventory_level.- New fields:
root_product_id,quantity_to_procure. - Removed:
levelsobject (containingproducibleandon_hand).
Deprecations
- GET /inventory: Deprecated. Please use
POST /inventoryinstead. - GET /inventory_levels: Deprecated. Please use
POST /inventory_levelsinstead.
Gift Cards
New 2026-04 Gift Card and Gift Card Transaction endpoints are now available. These endpoints follow the 2026-04 API conventions while delegating to the same underlying gift card business logic.
New Endpoints
Gift Card Resource
| Method | Path | Scope | Notes |
|---|---|---|---|
POST | /api/2026-04/gift_cards | 🔒 gift_cards:write:issue | Create and activate |
GET | /api/2026-04/gift_cards | 🔒 gift_cards:read | List gift cards |
GET | /api/2026-04/gift_cards/by_number/{card_number} | 🔒 gift_cards:read | Get by number |
GET | /api/2026-04/gift_cards/by_id/{id} | 🔒 gift_cards:read | Get by ID |
DELETE | /api/2026-04/gift_cards/by_number/{card_number} | 🔒 gift_cards:write:issue | Void by number |
DELETE | /api/2026-04/gift_cards/by_id/{id} | 🔒 gift_cards:write:issue | Void by ID |
Gift Card Transaction Resource
| Method | Path | Scope | Notes |
|---|---|---|---|
POST | /api/2026-04/gift_cards/{card_number}/transactions | 🔒 gift_cards:write:redeem | Create transaction |
DELETE | /api/2026-04/gift_cards/transactions/{transaction_id} | 🔒 gift_cards:write:redeem | Reverse redemption |
GET | /api/2026-04/gift_cards/transactions/{transaction_id} | 🔒 gift_cards:read | Supports system_id query param |
Key Changes
- Response structure: All responses return the resource inside a top-level
datakey in the response object. - Monetary values as strings: Fields such as
balance,total_sold,total_redeemed, andamountare now returned as strings for precision. - POST returns 201: Create endpoints now return
201 Createdinstead of200 OK. system_idsupport: The GET gift card by transaction ID endpoint accepts an optionalsystem_idquery parameter (defaults tox-series, also supportse-series).
Updated 1 day ago
