Inventory Change History Get

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"
    }
]
FieldTypeDescription
date_changedstringWhen the change was made, in your account's time zone, formatted 2025-11-04 15:10:52.
total_inventorystringThe SKU's total inventory across all warehouses after the change.
quantity_addedstringThe amount the change added. Negative for a decrease. null when the change set an exact quantity.
quantity_setstringThe exact quantity the change set. null when the change added or subtracted an amount.
change_notestringWhat 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_changed is 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_changed uses 24-hour YYYY-MM-DD HH:MM:SS, not the 2018-01-01 10:10:10 AM format 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"
    }
]