One variant's own timeline of changes, newest first
Every recorded change to one variant: id, event_type, event_date, previous_value, new_value, a typed metadata object, location_id, created_at and created_by_user_id. It carries no product or SKU fields, because they are the ones you name in the request.
event_type today is one of price_change, cost_change, stock_change, stockout, restock, status_change, supplier_change, lead_time_change, moq_change, velocity_shift, tag_change, managed_change, po_created, variant_created, variant_image_change, forecast_override (a planner edited the demand plan) and forecast_event_declared (a sales-velocity event was declared, changed or cancelled). The list is open, tolerate a type you do not know, and takes a comma-separated list.
location_id narrows stock events to one warehouse, matched against the per-location changes in metadata.
start_date and end_date bound the range as ISO dates; end_date defaults to today. Paging is offset and limit, limit at most 100 and 8 by default. Both counts come back: total_count is every event this variant has, filtered_count is how many the range and type filters matched, and the page is cut from filtered_count. The offset and limit actually used are echoed back.
For the same log across every variant, read the catalogue's events.
Scope: products:read.
Request
- Base URL: https://api.app.tightly.io
- URL: https://api.app.tightly.io/api/v1/variants/{variant_id}/events
- Auth: HTTP bearer
Path parameters
The variant whose timeline this reads.
Query parameters
Comma-separated event types to filter by. Omit to return every type.
Start of the range (ISO 8601 date).
End of the range (ISO 8601 date). Defaults to today.
Narrow stock events to one warehouse, matched against metadata.location_changes.
Events in this page.
Events to skip before this page.
Headers
The date train to answer on. One train exists today, 2026-11, the one this reference describes and the one every key is minted on, so the call answers on it with or without this header. Send it anyway, so a client built now names its train from the start.
Response
A page of this variant's changes, with both the total and the filtered count.
Changes
No recorded changes to this operation across all 1 revision of this API.