List Cost Changes
GET/api/cost-changes
Lists cost change sets: every retroactive cost change that was staged for review or resolved, one row per triggering document event. A set carries the trigger (the bill, invoice or purchase order edit that fired it), the originating purchase order, the receipt date span of the stock it touches, the total delta split into still-on-hand and already-consumed, and the flags that shaped its routing.
inventory:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
restate_blocked_reason is a sentence, or null, on every row. When set, restating this change is refused everywhere - preview, apply, switch and bulk resolve - because one or more of its original receipt months sit behind the accounting lock date. Only going forward is available for such a set.
Authentication: Requires Bearer token (inventory scope).
Filters:
- filter[status]: exact status - pending_review, applied, dismissed, superseded
- filter[statuses]: comma-separated list of statuses
- filter[trigger_type]: exact trigger - landed_cost_bill, purchase_invoice_new, purchase_invoice_edited, po_line_edited, po_financials_edited, po_currency_changed, data_fix
- filter[trigger_types]: comma-separated list of triggers
- filter[resolution]: exact resolution - restate, prospective
- filter[applied_via]: how an applied set was resolved - policy, manual, backfill
- filter[flags]: comma-separated; any of locked_period, closed_period, synced_entries (rows matching ANY listed flag)
- filter[product_id]: sets with at least one line for this product
- filter[warehouse_id]: sets with at least one line in this warehouse
- filter[date_from] / filter[date_to]: staged on or after / on or before this day (Y-m-d)
- filter[period]: sets with a receipt in this month (YYYY-MM)
- filter[search]: matches the set id exactly, or partial match on the set uid, trigger document type and notes
Sorting: sort with an optional leading - for descending. Allowed sorts: id, created_at, updated_at, total_delta, affected_layers_count, affected_products_count, earliest_affected_period, resolved_at, trigger_document_date. Default: -created_at.
Pagination: page and per_page (default 10).
Request
Responses
- 200
- 401
- 403
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.