Get a shipment
AI agents: read /llms.txt; add .md to any page URL. This page as Markdown: /reference/shipments/v2-shipment-show.md. Index of every page and the rules for every call: /llms.txt. Guides and concepts in one file: /llms-full.txt. OpenAPI: /openapi.json.
GET/
A shipment sends some or all of a sales order's (or quote's) lines to one address, by one shipping type. One order can have many shipments. Each shipment line points at an order line with a quantity, or is a shipping cost line; packages hold the labels and tracking numbers.
Returns the shipment with its lines (items), packages (shipment_packages) and shipping estimates (shipment_estimates): order and customer, shipping type, Ship To as shipping_address_id plus the full address in shipping_address (null when none), the receiver contact as receiver_contact_id only (read it with Get a contact by id), ready_to_ship (every job of its lines is Completed), status_id plus the full status object, external_mutation_source (which side may change a Shopify shipment), notes, cost_total and billable_fee_total as { value, dp } pairs, and pdf links (packing slip and shipment labels; they carry their own access token).
scoped_id reads back as SHIP-<number>.
Path parameters
Your team slug, shown as Team ID next to your API key in Profile.
- Example
your-team
- Example
The shipment's
id(a hash id), as its answers show it. Its unique key (shp_...) also works, but API answers don't include it.- Example
MQyJUnd3oty75h
- Example
Request body
This operation takes no request body.
Response
200Successful response.
A shipment.
Child fields (43)
billable_fee_totaldecimal pairShipping cost lines (what is billed), at the stored scale (4 decimal places). A decimal pair: the amount is
value÷ 10^dp({ "value": 1250, "dp": 2 }is 12.50). Readdpevery time: it can differ between fields and records.- See Money and quantities.
cost_totaldecimal pairShipping cost lines (the cost), at the stored scale (4 decimal places). A decimal pair: the amount is
value÷ 10^dp({ "value": 1250, "dp": 2 }is 12.50). Readdpevery time: it can differ between fields and records.- See Money and quantities.
customerobject | nullThe customer (the full customer record).
customer_due_datestring (date-time) | nullThe order's customer due date. ISO 8601 with offset, or null.
customer_idstring | nullThe customer.
customer_po_numberstring | nullcustomer_profile_idstring | nullThe brand profile printed on the documents.
delivery_notesstring | nullexternal_idsarray of objectsThe shipment's links to external systems (a Shopify fulfillment); usually empty.
external_mutation_sourcestringWho may change a Shopify shipment:
shopifymeans it is managed in Shopify and locked here;unknownon non-Shopify orders.- One of:
"shopify","yoprint","broken_link","unknown"
- One of:
external_typestring | nullfrom_legacybooleanidstringThe shipment.
internal_notesstring | nullis_externalboolean | integer | nullis_validbooleanHas lines, a shipping type, an address, and the order's customer.
itemsarray of objectsThe lines.
Fields of each item (16)
_metaobjectRead-only details of the line.
auto_invoice_managedbooleanbillable_fee_totaldecimal pairShipping cost lines only: what is billed (after override, markup or margin);
pricing.product_cost.totalis the cost. A decimal pair: the amount isvalue÷ 10^dp({ "value": 1250, "dp": 2 }is 12.50). Readdpevery time: it can differ between fields and records.- See Money and quantities.
external_idsarray of objectsLinks to external systems; usually empty.
external_typestring | nullfrom_legacybooleanidstringThe shipment line.
is_externalbooleanlock_versionintegerReturned but not checked on shipment lines.
positionintegerpricingobjectFor
system,_meta.unit_priceis the order line's unit price and_meta.subtotalis that price × this shipment line's quantity (_meta.totalis always 0); forshipment_cost,product_costhasoverride(always true for lines saved through the API),total(the cost),pricing_modeandpricing_mode_total(decimal pairs at 6 decimal places).Child fields (1)
typestring- One of:
"system","shipment_cost"
- One of:
productobjectChild fields (3)
_metaobjectRead-only details; for
order_item,parentdescribes the order line.propertiesobjectFor
order_item,idis the order line; forshipment_cost,name,description,shipment_package_id,shipment_estimate_id.typestring- One of:
"order_item","shipment_cost"
- One of:
quantityobjectChild fields (2)
typestring- Always
"unit"
- Always
totaldecimal pairThe quantity. A decimal pair: the amount is
value÷ 10^dp({ "value": 1250, "dp": 2 }is 12.50). Readdpevery time: it can differ between fields and records.- See Money and quantities.
shipment_idstringThe shipment.
typestringSame as
product.type.weightobjectThe order line's weight (
_meta.total,_meta.unit).
last_sync_sourcestring | nulllock_versionintegerorder_external_idsarray of objectsThe order's links to external systems.
order_external_typestring | nullorder_idstringThe order.
order_object_typestring | nullorder_quotebooleanorder_scoped_idstring | nullThe order number.
packed_bystring | nullWho packed it.
pdfarray of objectsThe packing slip and the shipment label in Letter, 4" x 6" and 1" x 2-1/8" sizes (
is_customabsent), then one entry per enabled custom shipment PDF template (label,type,description,url, theshow_in_*flags,is_custom: true).Fields of each item (5)
descriptionstringis_custombooleanTrue on custom template entries.
labelstringobject_typestringurlstringA download link with its own access token.
ready_to_shipbooleanEvery job of its lines is in a Completed status.
receiver_contact_idstring | nullThe receiver contact.
scoped_idstringThe shipment number with its prefix. Update a shipment takes only the digits.
ship_due_datestring (date-time) | nullThe order's ship-by date. ISO 8601 with offset, or null.
ship_to_statusstring- One of:
"okay","empty","diff_from_order","diff_from_customer"
- One of:
shipment_estimatesarray of objectsThe saved shipping estimates.
Fields of each item (22)
created_atstring (date-time)frontend_dataobject | arrayWhat you sent as
frontend_data; an empty list[]when you sent none.What you sent, or null.
goshippo_selected_rate_idstring | nullThe rate chosen when it was saved.
goshippo_shipment_idstring | nullThe Shippo shipment.
idstringThe estimate.
order_idstringThe order.
order_object_typestring | nullorder_quotebooleanorder_scoped_idstring | nullshipment_idstringThe shipment.
shipment_scoped_idstring | nullshippo_address_fromobjectshippo_address_toobjectshippo_carrier_accountsarray of stringsshippo_extraanyThe label options, or null.
shippo_object_idstring | nullshippo_parcelsarray of objectsshippo_ratesarray of objectsEvery rate of that Shippo shipment, as saved (
amountis a decimal string).Fields of each item (19)
amountstringamount_localstringarrives_bystring | nullattributesarray of stringsShippo's tags, for example
CHEAPEST.carrier_accountstringcurrencystringcurrency_localstringduration_termsstring | nullestimated_daysinteger | nullincluded_insurance_pricestring | nullmessagesarray of objectsobject_createdstringobject_idstringThe rate id. Send it as
rate_idto buy this label.object_updatedstringproviderstringprovider_image_200stringprovider_image_75stringA URL of the carrier logo.
servicelevelobjectExactly these four keys; null when Shippo sends no service level.
Child fields (4)
extended_tokenstringnamestringtermsstringtokenstring
shipmentstringThe Shippo shipment this rate belongs to.
shippo_shipment_datestring | nullshippo_statusstring | nulltypestring
shipment_packagesarray of objectsThe packages.
Fields of each item (36)
chargesinteger | number | string | nullThe label cost. For a multi-parcel label every package repeats the rate's full amount: read the master's value and don't add packages up. Null for external labels. Thousandths, an older encoding:
12500is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (1234.5is 1.2345), or as a string ("1234.5") when you sendX-Yoprint-Decimal-Format: exact-v1. See Money and quantities.created_atstring (date-time)from_addressanyThe address record behind
from_address_id, or null when it is not set.from_address_idstring | nullOlder packages only: the ship-from address record; null otherwise.
goshippoobjectShippo labels only: the Shippo details (shipment, rate, carrier, addresses, parcels).
Child fields (13)
address_fromanyThe ship-from address sent to Shippo.
The return address sent to Shippo.
address_toanyThe ship-to address sent to Shippo.
carrier_idstring | nullThe Shippo carrier account.
parcel_idstring | nullThe Shippo parcel.
parcelsanyThe parcels of the Shippo shipment.
providerstring | nullprovider_image_200string | nullprovider_image_75string | nullprovider_tracking_numberstring | nullrate_idstring | nullThe Shippo rate bought.
The Shippo shipment the rate came from.
shipment_idstring | nullThe Shippo shipment.
heightnumber | string | nullParcel size and weight as stored, in
length_unitandweight_unit. Null for external labels.idstringThe package.
is_masterbooleanThe first package of a label (the others have
parent_id).lengthnumber | string | nulllength_unitstring | nullShippo labels only, upper case.
order_external_idsarray of objectsThe order's links to external systems.
order_external_typestring | nullshopifywhen the order came from Shopify.order_idstringThe order.
order_object_typestring | nullorder_quotebooleanorder_scoped_idstring | nullparent_idstring | nullThe master package, for the other parcels of a multi-parcel label.
pdfarray of objectsNot on external labels: the label file.
labelanddescriptionare fixed texts that always say 4 x 6, whatever your label size setting.Fields of each item (3)
descriptionstringlabelstringurlstringFor a Shippo label, Shippo's signed link to the label file: don't publish it.
provider_namestring | nullThe carrier.
provider_saturday_deliverybooleanShippo labels only (absent on external labels); always false today.
provider_service_codestring | nullFor external labels,
ups,fedexorother. For Shippo labels it may be null: read the service fromprovider_service_name.provider_service_namestring | nullprovider_shipment_idstring | nullThe Shippo transaction id (Shippo labels).
provider_tracking_numberstring | nullshipment_external_typestring | nullshopifywhen the shipment is linked to Shopify.shipment_idstringThe shipment.
shipment_scoped_idstringShopify sync state of the shipment.
statusstring- One of:
"pending","ready-to-ship","shipped","delivered"
- One of:
to_addressanyThe address record behind
to_address_id, or null when it is not set.to_address_idstring | nullOlder packages only: the ship-to address record; null otherwise.
typestringgoshippoa label bought through Shippo;external_labela label recorded from elsewhere.- One of:
"goshippo","external_label","single_label"
- One of:
weightnumber | string | nullweight_unitstring | nullShippo labels only, upper case.
widthnumber | string | null
shipping_addressobject | nullShip To, the full address, always included (null when none).
Child fields (10)
address1string | nulladdress2string | nullcitystring | nullcountrystring | nullcountry_codestring | nullidstringThe address.
labelstring | nullpostcodestring | nullstatestring | nullstate_codestring | null
shipping_address_idstring | nullShip To.
shipping_type_idstring | nullThe shipping type.
shopify_syncanyShopify sync state, for Shopify shipments.
statusobject | nullThe shipment status, always included.
Child fields (9)
colorstring | nullHex color.
customer_labelstringidstringThe status.
labelstringpipeline_idstringOnly on the statuses of a task preset (
rolepipeline): the task preset. Absent on other statuses.positionintegerIts place in the team's list: sort by it to find the next status.
rolestringWhich list it belongs to:
jobfor job statuses,pipelinefor the statuses of a task preset.- One of:
"order","quote","job","purchase_order","shipment","customer_message","pipeline"
- One of:
trashedbooleanThe status was deleted.
typestringThe kind of status:
start(Pending),pre_productionandin_progress(In Progress),end(Completed).- One of:
"start","pre_production","in_progress","end"
- One of:
status_idstring | nullThe shipment status.
typestring | nullversioninteger
Errors
401The API key is missing or wrong (
unauthenticated).403You are not allowed to do this.
api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only{"message": "Insufficient Permission"}. Other refusals use the error envelope, withunauthorizedoruser_is_not_authorized.404Not found.
page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's.code: null, with a message that starts "No query results for": there is no record with that id.- When
- The shipment isn't your team's.
- Fix
- Use an id from the order's shipment list or Filter shipments.
Notes
- Very old shipments (
version1) come back in the old shipment shape, without the v2 includes.
Related
- PUTUpdate a shipment
/v2/ api/ store/ {team_slug}/ v2/ shipment/ {unique_key} - GETList the lines of a shipment
/v2/ api/ store/ {team_slug}/ v2/ shipment/ {unique_key}/ item - GETList the packages of a shipment
/v2/ api/ store/ {team_slug}/ v2/ shipment/ {hash_id}/ packages - GETList the shipments of a sales order
/v2/ api/ store/ {team_slug}/ v2/ sales_order/ {unique_key}/ shipment
