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)
{
"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":[]}'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). |
boxesrequired | object[] | 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. |
itemsrequired | object[] | 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)