fbaInbound_updateShipmentTrackingDetails
Upload carrier tracking for one shipment to Amazon.
destructiveAmazon Seller (SP-API)sp.fulfillmentInbound_2024-03-20
Amazon SP-API · updateShipmentTrackingDetails · PUT /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/shipments/{shipmentId}/trackingDetails Amazon SP-API · getInboundOperationStatus · GET /inbound/fba/2024-03-20/operations/{operationId} Gate: approve — interactive: show the change (Amazon's preview first where one exists), wait for an explicit approve; autopilot: only when the seller's own words asked for this change; otherwise ask. Async — the server polls the returned operationId to completion. This is the non-Amazon-partnered (USE_YOUR_OWN_CARRIER) flow. TrackingDetailsInput is a union of exactly two shapes — supply ONE. Small Parcel tracking is per BOX, so ONE call carries every box of the shipment; there is no carrier field on this operation at all.
Call it
In an AI client (MCP)
{
"name": "fbaInbound_updateShipmentTrackingDetails",
"arguments": {
"store": "myStore-US",
"plan_id": "<plan_id>",
"shipment_id": "<shipment_id>"
}
}From code (Tool API)
curl -X POST https://api.sellersheetai.com/api/v1/tools/fbaInbound_updateShipmentTrackingDetails \
-H "Authorization: Bearer $SELLERSHEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store":"myStore-US","plan_id":"<plan_id>","shipment_id":"<shipment_id>"}'Arguments
| Name | Type | Description |
|---|---|---|
storerequired | string | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
plan_idrequired | string | the inboundPlanId (from fbaInbound_createInboundPlan or fbaInbound_listInboundPlans). |
shipment_idrequired | string | the shipmentId (from the placement option's shipmentIds in fbaInbound_listPlacementOptions, or fbaInbound_getInboundPlan once a placement is confirmed). |
spd_tracking_items | object[] | Small Parcel (SPD) tracking, one entry per box: [{boxId, trackingId}]. boxId is the FBAxxxxxxxx ID from fbaInbound_listShipmentBoxes / fbaInbound_create_packing_list (maxLength 1024); trackingId is the carrier's number (maxLength 64). Pass exactly one of spd_tracking_items / ltl_tracking_detail — both or neither is refused. boxIds exist only after the shipment's transportation is confirmed. |
ltl_tracking_detail | object | LTL/FTL freight tracking, shipment-level: {freightBillNumber: [str] (required, exactly 1), billOfLadingNumber: str (optional, ≤1024)}. |
Result
Every tool answers {notification, data, human_action}; data carries:
data.uploaded— True once the operation reached SUCCESS.data.operation— the final getInboundOperationStatus payload.
Workflow
- 1. fbaInbound_listShipmentBoxes — the boxId (FBAxxxxxxxx) of every box. 2. Call this tool once per shipment with all its boxes.
Body (Amazon schema; updateShipmentTrackingDetails)
trackingDetails*: {ltlTrackingDetail: {billOfLadingNumber, freightBillNumber*}, spdTrackingDetail: {spdTrackingItems*}}