fbaInbound_generateShipmentContentUpdatePreviews

Generate content update previews for revised box content (write, async).

writeAmazon Seller (SP-API)sp.fulfillmentInbound_2024-03-20

Amazon SP-API · generateShipmentContentUpdatePreviews · POST /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/shipments/{shipmentId}/contentUpdatePreviews 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. Use to change box contents after a shipment is created — Amazon returns previews with the resulting transportation cost change. Both lists describe the shipment AFTER the update, in full — they are not deltas, and Amazon requires both. Timing window (live rules): allowed after fbaInbound_confirmTransportationOptions and BEFORE tracking details are set — once updateShipmentTrackingDetails has run (or the void window ends), Amazon refuses with FBA_INB_0262 "Cannot add boxes because the void window has ended or the shipment is in a status that does not allow edits", even while status is WORKING. Quantity changes are capped at 5% or 6 units per SKU, whichever is greater; a SKU can be removed only if its original quantity is ≤6; the shipment cannot be emptied.

Call it

In an AI client (MCP)

tools/call
{
  "name": "fbaInbound_generateShipmentContentUpdatePreviews",
  "arguments": {
    "store": "myStore-US",
    "plan_id": "<plan_id>",
    "shipment_id": "<shipment_id>",
    "boxes": [],
    "items": []
  }
}

From code (Tool API)

curl -X POST https://api.sellersheetai.com/api/v1/tools/fbaInbound_generateShipmentContentUpdatePreviews \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store":"myStore-US","plan_id":"<plan_id>","shipment_id":"<shipment_id>","boxes":[],"items":[]}'
Early access — the Tool API is open on request, contact us.

Arguments

NameTypeDescription
storerequiredstringthe store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim.
plan_idrequiredstringthe inboundPlanId (from fbaInbound_createInboundPlan or fbaInbound_listInboundPlans).
shipment_idrequiredstringthe shipmentId (from the placement option's shipmentIds in fbaInbound_listPlacementOptions, or fbaInbound_getInboundPlan once a placement is confirmed).
boxesrequiredobject[]every box the shipment will contain after the update (1–5000), shaped as the Body block below; quantity = how many identical boxes. BOX_CONTENT_PROVIDED boxes carry their items; MANUAL_PROCESS and BARCODE_2D boxes carry none. packageId: REQUIRED to keep an existing box (from fbaInbound_listShipmentBoxes); a new box has none, and every existing box whose packageId you omit is removed.
itemsrequiredobject[]every item the shipment will contain after the update (1–2000), shaped as the Body block below.

Result

Every tool answers {notification, data, human_action}; data carries:

  • data.operationId — poll until SUCCESS, then fbaInbound_listShipmentContentUpdatePreviews.

Body (Amazon schema)

boxes*: [{contentInformationSource*, dimensions*: {height*, length*, unitOfMeasurement*, width*}, items: [{expiration, labelOwner*, manufacturingLotCode, msku*, prepOwner*, quantity*}], packageId (38–38 chars), quantity* (1–10000), weight*: {unit*, value*}}] (1–5000)
boxes.contentInformationSource: BOX_CONTENT_PROVIDED | MANUAL_PROCESS | BARCODE_2D
boxes.dimensions.unitOfMeasurement: IN | CM
boxes.items.labelOwner: AMAZON | SELLER | NONE
boxes.items.prepOwner: AMAZON | SELLER | NONE
boxes.weight.unit: LB | KG
items*: [{expiration, labelOwner*: AMAZON | SELLER | NONE, manufacturingLotCode (max 256 chars), msku* (max 255 chars), prepOwner*: AMAZON | SELLER | NONE, quantity* (1–500000)}] (1–2000)

On this page

Actions

View as Markdown

Ask an assistant

Ask ChatGPTAsk Claude