inventory

One product's position at a warehouse, decomposed

What is there, what is held, what is coming and what is left to sell, for one product at one warehouse: on_hand, reserved broken down by why each unit is spoken for and by which order holds it, expected_inbound broken down by the purchase or transfer order it is coming on, and atp.

The identity holds on every answer: on_hand - reserved.hard + expected_inbound.quantity + expected_inbound.returns_expected = atp. atp is computed from those four and read from nowhere else, so a figure you are shown can always be counted off the rows under it.

reserved.hard is what atp subtracts and reserved.soft warns without consuming anything. At a warehouse the connector masters, the hard figure takes the LARGER of Tightly's own order holds and the source's committed_quantity, and the part no Tightly document explains is served as its own source_committed row.

on_hand_basis says which fact the head figure is. source_on_hand is the connector's own physical count; source_available is its available figure standing in where it serves no physical one, and that figure is already net of what the store has promised its own orders; ledger is the sum of the movements, which is the on hand at a warehouse Tightly masters.

Leave location_id off for the total over every warehouse the product is known at, with a row per warehouse under locations. The last 20 movements ride along; the whole ledger is list_movements.

Scope: inventory:read.

get/api/v1/inventory/position

Request

  • Base URL: https://api.app.tightly.io
  • URL: https://api.app.tightly.io/api/v1/inventory/position
  • Auth: HTTP bearer

Query parameters

variant_idstring required
Example:fx-v-mar-top-m

The product variant to read the position of.

location_idstring
Example:loc-lb

The warehouse. Omit for the sum over every warehouse the product is known at, in which case the head figures are the sums of the locations rows.

Headers

Tightly-Versionstring
Example:2026-11

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

The position, its decomposition and the last 20 movements behind it.

messageobject

severity, service and desc.

Changes

No recorded changes to this operation across all 1 revision of this API.