Inventory Change History Get
{{api_url}}/shop/inventory/change_history/{{sku}}Returns the inventory changes recorded for one SKU, newest first. Each entry shows when the change happened, how much it changed by or what it was set to, the SKU's total inventory across all warehouses after the change, and what caused it.
Use it to explain why a SKU has the count it has, to trace an oversell back to the orders that caused it, or to reconcile InfiPlex against your own system. For the SKU's current inventory alone, use Inventory Get.
By default, the response holds up to the 100 most recent changes.
Response
A JSON array, one object per change, newest first:
[
{
"date_changed": "2025-11-04 15:10:52",
"total_inventory": "8",
"quantity_added": "-1",
"quantity_set": null,
"change_note": "Order 103706"
},
{
"date_changed": "2025-11-04 15:10:45",
"total_inventory": "10",
"quantity_added": "10",
"quantity_set": null,
"change_note": "Product creation"
}
]
| Field | Type | Description |
|---|---|---|
date_changed | string | When the change was made, in your account's time zone, formatted 2025-11-04 15:10:52. |
total_inventory | string | The SKU's total inventory across all warehouses after the change. |
quantity_added | string | The amount the change added. Negative for a decrease. null when the change set an exact quantity. |
quantity_set | string | The exact quantity the change set. null when the change added or subtracted an amount. |
change_note | string | What caused the change, for example Order 103706 for a sale or Product creation. |
Each entry has either quantity_added or quantity_set, never both. They map to the two fields on Inventory Set: a quantity_to_add write is recorded in quantity_added, and a quantity_to_set write is recorded in quantity_set.
Reading the history
Work from the bottom of the array up. In the example, the SKU was created with 10 units, then each sale subtracted 1. total_inventory shows the running total across all warehouses after every step.
Before you build
- Numbers come back as strings. Convert them before doing math.
date_changedis in the time zone set on your InfiPlex account, since each account sets its own. Convert it before comparing against timestamps from another system.date_changeduses 24-hourYYYY-MM-DD HH:MM:SS, not the2018-01-01 10:10:10 AMformat that the search endpoints take as date filters.- Your API key needs Inventory read permission. A key without it gets
403 Forbidden.
Related guides:
Authorization
Bearer token, sent in the Authorization header. Inherited from the collection.
Example Request
curl --location --request GET '{{api_url}}/shop/inventory/change_history/{{sku}}' \
--header 'Authorization: Bearer {{auth_token}}'Example Responses
Inventory Change History Get
Request
curl --location --request GET '{{api_url}}/shop/inventory/change_history/G-110429' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json'Response 200 OK
[
{
"date_changed": "2025-11-04 15:10:52",
"total_inventory": "8",
"quantity_added": "-1",
"quantity_set": null,
"change_note": "Order 103706"
},
{
"date_changed": "2025-11-04 15:10:45",
"total_inventory": "9",
"quantity_added": "-1",
"quantity_set": null,
"change_note": "Order 103649"
},
{
"date_changed": "2025-11-04 15:10:45",
"total_inventory": "10",
"quantity_added": "10",
"quantity_set": null,
"change_note": "Product creation"
}
]
