Accept 3PL Counts
POST/api/3pl-inventory/integration-instances/:integrationInstance/snapshots/:snapshot/stock-takes
Accept the 3PL's count for the selected lines. Creates one adjustment-mode stock take per SKU.io warehouse, adjusting each product by its difference AT THE SNAPSHOT TIME and dated at the snapshot, so movements recorded since the snapshot are kept. Added units are valued at FIFO / best-available cost. Lines are stamped with the stock take that accepted them.
inventory:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token (inventory:write scope) and the inventory count permission.
Select lines with exactly one of:
line_ids: explicit line IDsfilter: the same keys as the List Comparison Lines filters (e.g. {"status": "sku_higher", "warehouse_id": "7", "filter_groups": "<base64>"}). An empty object selects every line. The filter is resolved against the stored snapshot, never the live 3PL figures.
Body fields:
status(required):closedfinalizes the stock take;draftsaves it for review. A closed stock take that would consume stock allocated to open orders is saved as a draft instead, with awarning.reason(required, max 255): recorded in the stock take notes.notes(optional, max 1000).
Returns 422 when the snapshot is stale (not the latest completed, or older than 48 hours), when every selected line was already accepted, or when no selected line has an acceptable difference.
Holds the integration's snapshot lock: while a capture or settle of the same integration is running the request returns 409 — retry once it finishes. Each line is re-read from the ledger at the snapshot time and adjusted by that fresh difference; lines a finalized stock take could not apply (allocated or held stock) are left unaccepted and named in warning.
Request
Responses
- 201
- 401
- 403
- 404
- 409
- 422
- 429
Created
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.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Conflict
Response Headers
Unprocessable Entity
Response Headers
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.