Update Shipment
Updates an existing Shipment, identified by the shipment_uuid or
shipment_id query parameter.
Replace vs add: most fields replace the stored value entirely —
including the whole line_items array, the whole shipping_costs
array, and each address object as a unit. Four fields are add-only:
tags, events, linked_shipments, and documents — values you send
are appended, never removed (use the v5.2 endpoint’s tags_action to
remove or replace tags).
Immutability: shipment_id can be set once on a Shipment created
without one, and never changed after. tracking_number and
carrier_reference can be changed only while the Shipment has no track
events. A Return Shipment cannot be updated after a successful carrier
booking.
Authorizations
Used by every functional endpoint. Generate the token with POST /auth/oauth/token/ and send it as Authorization: Bearer {token}.
Query Parameters
Perform.AI identifier of the Shipment. Provide either shipment_uuid or shipment_id.
Your identifier of the Shipment. Provide either shipment_uuid or shipment_id.
50Body
Same fields and constraints as Create Shipment; no field is required. Most fields replace the stored value entirely (whole arrays, whole address objects); tags, events, linked_shipments, and documents are add-only.
Your unique identifier. Unique across the account; cannot be changed after creation. Accepts A–Z a–z 0–9 _ - ., no spaces.
50Carrier tracking number — optional, but needed (with carrier_reference) for tracking. A–Z a–z 0–9 _ - . /, no spaces, at least one digit. Stored uppercase.
6 - 50A carrier reference configured under Settings > Carriers. An unconfigured value blocks creation.
505050Attach to an existing order by its Perform.AI identifier. Preferred over order_id if both are sent.
Your order identifier. Creates the order if it doesn't exist.
50Settable only together with a new order_id.
50500500Stored lowercase.
100Recipients of tracking email notifications.
100Recipients of tracking SMS notifications, as +{country code}{number}.
30Assigns the Shipment to a tracking page for notification branding and tracking links. An unconfigured value returns a 299 warning.
50One of the Shipment's five address roles (recipient, sender, to, from, return). Provide either country or country_code. The email and phone here are contact data — they are never subscribed to tracking notifications.
One of the Shipment's five address roles (recipient, sender, to, from, return). Provide either country or country_code. The email and phone here are contact data — they are never subscribed to tracking notifications.
One of the Shipment's five address roles (recipient, sender, to, from, return). Provide either country or country_code. The email and phone here are contact data — they are never subscribed to tracking notifications.
One of the Shipment's five address roles (recipient, sender, to, from, return). Provide either country or country_code. The email and phone here are contact data — they are never subscribed to tracking notifications.
One of the Shipment's five address roles (recipient, sender, to, from, return). Provide either country or country_code. The email and phone here are contact data — they are never subscribed to tracking notifications.
Money string, e.g. 150 SGD.
Money string. Computed from shipping_costs if not provided.
Money string.
75Measurement string, e.g. 15 cm. Stored in cm.
Measurement string. Stored in cm.
Measurement string. Stored in cm.
Measurement string, e.g. 1.5 kg.
x >= 07550050050010050ISO 8601. Start of the expected delivery window.
ISO 8601. Requires expected_delivery_from.
Custom fields. Keys max 50 chars, values max 150.