Submit Shipment Tracking
POST/api/amazon/:integrationInstance/draft-inbound-plans/:draft_inbound_plan/shipments/:plan_shipment/tracking
Submit non-partnered-carrier (nPCP) tracking for a shipment. Provide exactly ONE of:
box_tracking— per-box tracking IDs (small parcel / SPD)freight_bill_numbers— freight bill numbers (LTL/FTL)
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Sending both (or neither) is a 422.
Fields:
box_tracking(array, min 1, required withoutfreight_bill_numbers, prohibitsfreight_bill_numbers):box_tracking.*.box_id(integer, required) — local box ID; must belong to this shipment/plan and must already have an Amazon box ID (submit packing information first — 422 otherwise)box_tracking.*.tracking_id(string, required, max 255) — carrier tracking number
freight_bill_numbers(array of strings, min 1, max 255 each, required withoutbox_tracking)
The tracking is persisted locally first (boxes merged into the shipment's tracking_summary.boxes; freight bill numbers stored on the shipment), then a tracked background job submits it to Amazon via the FBA Inbound v2024-03-20 updateShipmentTrackingDetails operation. Returns { "data": { "tracked_job_log_id": <id> } } immediately; progress is visible via the tracked job log endpoints.
Tracked job name: Update FBA Shipment Tracking: {plan name}. The job starts an asynchronous Amazon operation; the TrackedJobLog is completed (or failed) by the amazon_inbound_operations poller (a background job), which refreshes the shipment's tracking_summary from Amazon via getShipment on success.
422 conditions:
- neither or both of
box_tracking/freight_bill_numbersprovided - a
box_tracking.*.box_iddoes not belong to this shipment or plan - a box has no Amazon box ID yet (packing information not submitted)
Returns 404 when the shipment does not belong to the draft inbound plan.
LTL example body:
{
"freight_bill_numbers": ["FBN-2026-0001", "FBN-2026-0002"]
}
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
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.
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.