Generate Transportation Options
POST/api/amazon/:integrationInstance/draft-inbound-plans/:draft_inbound_plan/transportation-options/generate
Generate transportation options (carrier quotes) for the confirmed placement's shipments via the Amazon FBA Inbound API (v2024-03-20 generateTransportationOptions operation). Amazon returns partnered-carrier and own-carrier options per shipping mode for each shipment.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
This is an asynchronous endpoint: it dispatches a tracked background job and returns { "data": { "tracked_job_log_id": <id> } } immediately. Progress is visible via the tracked job log endpoints, and the underlying Amazon operation is resolved by the amazon_inbound_operations poller (a background job).
Tracked job name: Generate FBA Transportation Options: {plan name}. When the job completes, the offered options are persisted locally and can be retrieved with List Transportation Options or nested on List Shipments.
Request body fields:
shipments(array, required, min 1) — one entry per shipment to quoteshipments.*.shipment_id(integer, required) — LOCAL plan-shipment row id (not the Amazon shipment id); must belong to this draft inbound plan (422 otherwise)shipments.*.ready_to_ship_date(date, required) — must be today or later (422: “The ready-to-ship date must be today or later.”)shipments.*.mode(string, optional, nullable,SPDorLTL) — how the shipment travels. SendSPDto switch a shipment back to small parcel: that is the only value that clears its stored pallets, freight class and declared value. Omitting the field leaves those stored values untouched and re-sends them to Amazon, so a caller that does not track the mode cannot silently discard a freight configuration.shipments.*.pallets(array, optional) — pallet configuration, needed for freight (LTL/FTL) quotesshipments.*.pallets.*.length/width/height(numeric, required, > 0)shipments.*.pallets.*.weight(numeric, required, > 0)shipments.*.pallets.*.dimension_unit(string, optional,INorCM)shipments.*.pallets.*.weight_unit(string, optional,LBorKG)shipments.*.pallets.*.stackability(string, optional, nullable,STACKABLEorNON_STACKABLE)shipments.*.pallets.*.quantity(integer, required, min 1)shipments.*.freight_class(string, optional, nullable) — NMFC freight class for the palletised freight. One ofNONE,FC_50,FC_55,FC_60,FC_65,FC_70,FC_77_5,FC_85,FC_92_5,FC_100,FC_110,FC_125,FC_150,FC_175,FC_200,FC_250,FC_300,FC_400,FC_500shipments.*.declared_value(numeric, optional, nullable, > 0) — declared value of the freight, in the marketplace currency (resolved from the plan's marketplace, defaulting toUSD)
Freight (LTL/FTL) quotes require freight information. Amazon only returns priced partnered-LTL (PCP-LTL) options when freightInformation (freight class + declared value) is sent alongside the pallets — without it every freight option comes back as USE_YOUR_OWN_CARRIER with a null quote. Both fields are persisted on the shipment (freight_class, declared_value, declared_value_currency) and echoed back by List Shipments; they are cleared only by a subsequent generate that sets mode to SPD. contactInformation is derived server-side from the shipment's source address (falling back to the source warehouse) — it is not part of this payload.
Pre-flight validation (HTTP 422, checked synchronously before the job is dispatched):
- a placement option must already be confirmed for the plan
- every
shipment_idmust belong to this draft inbound plan
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.