Core ShipVia API Endpoints
These are the core shipment requests teams rely on to sync/import, pull/import from ShipVia or ERP fallback, print, update tracking references, writeback/export to ERP, and review shipment status.
Sync Shipments (Import)
Sync (import) shipment objects into ShipVia using create/update (upsert). Use this when you do not have an ERP pull integration enabled.
- POST
/api/v1/shipments/syncwith your bearer session token. - Send addresses, package data, and custom attributes exactly as configured in ShipVia Web.
- Receive per-record success/failed results so your source system stays aligned with ShipVia object IDs and state.
Record External Print
Report that a label was printed in a third-party system so ShipVia records label details and marks the shipment PRNT.
- POST
/api/v1/shipments/printwithconnectIdand shipment tracking references. - Include
carrier,totalCost, andtypeas metadata from the external label print. - Confirm in the response that ShipVia recorded the update and set status to
PRNT.
Writeback Shipment Results to ERP
After ShipVia processing/printing, trigger writeback so ShipVia posts finalized shipment data to the connected ERP.
- POST
/api/v1/shipments/writebackwith anobjectIdsarray. - Provide one or more non-empty object IDs tied to printed shipments.
- Use the response to confirm the ERP writeback batch was accepted.
Shipment Inquiry
Review shipment history by status and date to understand volume, exceptions, and invoice timing.
- POST
/api/v1/shipments/inquirywithstartDate,endDate,status, and optionalpageandpageSize. - Statuses include
ALL,PARK,VOID, andSHPD. - Use the response to monitor shipping volumes, exceptions, and invoice visibility.
Integration in Five Simple Steps
Walk through the same milestones we coach customers on when moving from a first login to live shipping.
-
01
Request ShipVia Credentials
Reach out to your ShipVia account team so they can turn on API access.
-
02
Auth Login
Log in once with your username and password to receive the bearer token you will reuse in later steps.
-
03
Sync/Import Shipments or Record External Print
Send manifests with
/api/v1/shipments/syncor call/api/v1/shipments/printwhen labels are created in an external system. -
04
Inquiry Shipments
Use
/api/v1/shipments/inquiryto review shipment history and status across date ranges. -
05
Writeback Shipment Results to ERP
Write shipping details back into your ERP once ShipVia processing is complete by calling
/api/v1/shipments/writeback.
Shipment Sync Blueprint
Choose the mode that matches your freight. Each example shows the core JSON body plus the validation callouts teams ask about most.
POST /api/v1/shipments/sync
Content-Type: application/json
Authorization: Bearer XXXXXXXXXXXXX
[
{
"locationId": 1,
"ltlItems": [
{
"id": "1762713433810",
"pallets": "2",
"pieces": "2",
"unitOfMeasurement": "PCS",
"itemNumber": "1",
"hazardousFlag": false,
"description": "Fasteners",
"nmfcNumber": "3783332",
"class": "50.0",
"weight": "200",
"length": "10",
"width": "12",
"height": "8",
"orderNumber": ""
}
],
"itn": "",
"proNumber": "",
"references": {
"userField1": null,
"userField2": null,
"userField3": null,
"userField4": null,
"userField5": null,
"userField6": null,
"userField7": null,
"userField8": null,
"userField9": null,
"userField10": null
},
"cfr49Items": [
{
"lineNumber": 1,
"accountNumber": "HZ-1001",
"emergencyContactNumber": "123456789",
"trackingNumber": "1Z999AA10123456784",
"company": "ShipVia Hazmat Team",
"signature": "J DOE",
"descriptionQuantity": "UN1993, Flammable liquid, n.o.s., 3, PG II, 1 Drum x 55 gal",
"date": "2026-01-14T00:00:00Z"
}
],
"customerPickTicketNumber": "2",
"addresses": {
"shipTo": {
"id": "",
"locationId": 0,
"line1": "1660 W SUNSET BLVD",
"line2": "H6",
"line3": "",
"city": "SAINT GEORGE",
"state": "UT",
"postalCode": "84770",
"country": "US",
"email": "ME@ME.COM",
"phone": "5551234567",
"name": "CUSTOMER",
"company": "",
"type": "SHIPTO"
},
"origin": {
"id": "1",
"line1": "1001 Innovation Road",
"line2": "",
"line3": "",
"city": "Rantoul",
"state": "IL",
"postalCode": "61866",
"country": "US",
"email": "test@rudirock.com",
"phone": "5551234567",
"name": "Shipping",
"company": "RUDIROCK"
}
},
"clientLocationId": "0001"
}
]
LTL Validation Highlights
-
Send at least one
ltlItemsentry with pallet and piece counts, NMFC number, freight class, weight, and dimensions. -
Use
locationIdandclientLocationIdto anchor the shipment to the correct facility. -
Provide complete postal and contact details for
addresses.shipToandaddresses.origin. -
When shipping hazardous material, include
cfr49Items[]with emergency contact, tracking, and signed 49 CFR detail lines. -
Requests fail when required address data or
ltlItemsvalues are missing because the API treats them as mandatory.
- Required arrays
ltlItems[]with at least one pallet record- Freight classification
- Include
nmfcNumberandclasswhen applicable - Hazmat records
- Use
cfr49Items[]to send 49 CFR hazmat details when required - Useful extras
referencesfields acceptnullwhen you do not have custom data
POST /api/v1/shipments/sync
Content-Type: application/json
Authorization: Bearer XXXXXXXXXXXXX
[
{
"customerPickTicketNumber": "1",
"locationId": 1,
"clientLocationId": "0001",
"addresses": {
"shipTo": {
"id": "",
"locationId": 0,
"line1": "820 E CHADDS FORD LN",
"line2": "APT 11",
"line3": "",
"city": "MIDVALE",
"state": "UT",
"postalCode": "84047",
"country": "US",
"email": "DEV@SHIP-VIA.COM",
"phone": "5551234567",
"name": "DEVELOPER",
"company": "SHIPVIA",
"type": "SHIPTO"
},
"origin": {
"id": "1",
"line1": "1001 Innovation Road",
"line2": "",
"line3": "",
"city": "Rantoul",
"state": "IL",
"postalCode": "61866",
"country": "US",
"email": "test@rudirock.com",
"phone": "5551234567",
"name": "Shipping",
"company": "RUDIROCK"
}
},
"packages": [
{
"id": 1,
"orderCount": 1,
"orderNumber": "",
"itn": "",
"customerTrackingNumber": "1",
"carrierTrackingNumber": "",
"label": "",
"references": {
"userField1": null,
"userField2": null,
"userField3": null,
"userField4": null,
"userField5": null
},
"poNumber": "",
"weight": {
"value": 4,
"unit": "pounds"
},
"dimensions": {
"unit": "inches",
"length": 2,
"width": 2,
"height": 2
},
"accessorials": {
"BillingType": "1",
"PackagingType": "02"
}
}
],
"itn": ""
}
]
Small Parcel Validation Highlights
-
Every package object carries
weight.valueandweight.unit, plusdimensionsto inform carton-level rating. -
Capture the
customerTrackingNumberfor each package and the carrier-provided tracking number when it becomes available. -
accessorialssuch as billing and packaging codes flow directly into the label request. -
Requests fail if the
packagesarray is empty or a package omits required weight data.
- Required arrays
packages[]with at least one parcel- Recommended extras
- Contact email and phone on both addresses for delivery alerts
- Typical errors
- Missing weight units, empty package list, or invalid accessorial code
POST /api/v1/shipments/sync
Content-Type: application/json
Authorization: Bearer XXXXXXXXXXXXX
[
{
"customerPickTicketNumber": "",
"locationId": 1,
"clientLocationId": "0001",
"addresses": {
"shipTo": {
"id": "",
"locationId": 1,
"line1": "50 BAY STREET",
"line2": "SUITE 500",
"line3": "",
"city": "TORONTO",
"state": "ON",
"postalCode": "M5J2L2",
"country": "CA",
"email": "",
"phone": "5551234567",
"name": "RECEIVING",
"company": "TORONTO MAPLE LEAFS",
"type": "SHIPTO"
},
"origin": {
"id": "1",
"line1": "1001 Innovation Road",
"line2": "",
"line3": "",
"city": "Rantoul",
"state": "IL",
"postalCode": "61866",
"country": "US",
"email": "test@rudirock.com",
"phone": "5551234567",
"name": "Shipping",
"company": "RUDIROCK"
}
},
"packages": [
{
"id": 1,
"orderCount": 1,
"orderNumber": "",
"itn": "",
"customerTrackingNumber": "",
"carrierTrackingNumber": "",
"label": "",
"references": {
"userField1": null,
"userField2": null,
"userField3": null,
"userField4": null,
"userField5": null
},
"poNumber": "",
"weight": {
"value": 1,
"unit": "pounds"
},
"dimensions": {
"unit": "inches",
"length": 2,
"width": 2,
"height": 2
},
"accessorials": {},
}
],
"intlItems": [
{
"id": "1762714525298",
"declaredValue": "45",
"descr": "Fasteners",
"itemCode": "123",
"itemNumber": "",
"lineNumber": 1,
"producerCountryCode": "US",
"qty": "3",
"unitValue": "15",
"uom": "",
"weight": 0.46,
"dims": null,
"references": {
"userField1": null,
"userField2": null,
"userField3": null,
"userField4": null,
"userField5": null
}
}
],
"itn": "",
"proNumber": "",
"references": {
"userField1": null,
"userField2": null,
"userField3": null,
"userField4": null,
"userField5": null
},
"accessorials": {
"B13Type": "1",
"BillingType": "1",
"CurrencyType": "USD",
"DutyPayType": "2",
"PackagingType": "1"
}
}
]
International Validation Highlights
-
Pair each package in
packageswith matching customs data inintlItems, including declared value, unit value, and country of origin. -
Use
accessorialsto set duty billing, packaging type, and currency handling for cross-border paperwork. -
Requests fail if required customs fields like
producerCountryCodeordeclaredValueare missing.
- Required arrays
packages[]andintlItems[]with synchronized line numbers- Typical errors
- Missing customs valuation data or misaligned quantity and weight totals
Ready to move faster with ShipVia?
Connect to ShipVia's production API in minutes and start moving packages with confidence.