POST /v5/shipment/update/, identifying it by the shipment_uuid or shipment_id query parameter:
Replace, append, or locked — know which is which
Most fields replace the stored value entirely. That includes three cases that surprise integrators:line_itemsandshipping_costsreplace the whole array. Sending one line item removes all others. To keep existing items, resend the complete set.- Each address object replaces as a unit. Sending
to_addresswith only a newpostal_codeerases the rest of that address. notification_email/notification_phonereplace the whole array — to add a recipient, send the full list.
tags, events, linked_shipments, and documents. Values you send are added; nothing is removed. (v5.0 has no way to remove tags — that’s what the v5.2 endpoint below is for.)
Locked fields:
Manage tags with v5.2
POST /v5-2-0/shipment/update/ adds tags_action, which controls how the tags you send are applied:
Sending
tags_action without tags returns a 299 warning; removing a tag that doesn’t exist, or a system-generated one, returns a validation error. Everything else about the v5.2 endpoint is identical to v5.0.
Read the response
299 means the update applied with skipped parts (see warnings); 4030 means nothing changed — including No shipments found with provided shipment_id. when the identifier doesn’t match. See responses and errors.
Next steps
- Retrieve the Shipment to verify the stored state after an update.
- Order fields (
order_reference,order_source_*) require a valid existingorder_id— see Orders.