Skyline background representing shipping logistics
Developer Center

ShipVia API

Connect ShipVia to your shipping tools with friendly, secure endpoints. Explore what's possible and dig into the full docs whenever you're ready.

Illustration of ShipVia API dashboards on a laptop screen

Core ShipVia API Endpoints

These are the core shipment requests teams rely on to sync, print, write back, and review shipment status.

Sync Shipments

Sync shipment details in bulk so ShipVia can easily pull your shipment details and find the best carrier and print labels.

  • POST /api/v1/shipments/sync with your bearer session token.
  • Send addresses, package data, and custom attributes exactly as configured in ShipVia Web.
  • Receive a normalized payload that echoes ShipVia shipment identifiers and processing 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/print with connectId and shipment tracking references.
  • Include carrier, totalCost, and type as metadata from the external label print.
  • Confirm in the response that ShipVia recorded the update and set status to PRNT.

Writeback Shipment

Push shipment IDs back to ShipVia after labels are printed so your ERP can capture finalized shipment details.

  • POST /api/v1/shipments/writeback with an objectIds array.
  • Provide one or more non-empty object IDs tied to printed shipments.
  • Use the response to confirm ShipVia accepted the writeback batch.

Shipment Inquiry

Review shipment history by status and date to understand volume, exceptions, and invoice timing.

  • POST /api/v1/shipments/inquiry with startDate, endDate, status, and optional page and pageSize.
  • Statuses include ALL, PARK, VOID, and SHPD.
  • 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 Shipments or Record External Print

    Send manifests with /api/v1/shipments/sync or call /api/v1/shipments/print when labels are created in an external system.

  • 04

    Inquiry Shipments

    Use /api/v1/shipments/inquiry to review shipment history and status across date ranges.

  • 05

    Writeback Shipment Details to ERP

    Write shipping details back into your ERP once ShipVia processing is complete by calling /api/v1/shipments/writeback.

Timeline illustration showing integration steps

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
        },
        "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 ltlItems entry with pallet and piece counts, NMFC number, freight class, weight, and dimensions.
  • Use locationId and clientLocationId to anchor the shipment to the correct facility.
  • Provide complete postal and contact details for addresses.shipTo and addresses.origin.
  • Requests fail when required address data or ltlItems values are missing because the API treats them as mandatory.
Quick Reference
Required arrays
ltlItems[] with at least one pallet record
Freight classification
Include nmfcNumber and class when applicable
Useful extras
references fields accept null when 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.value and weight.unit, plus dimensions to inform carton-level rating.
  • Capture the customerTrackingNumber for each package and the carrier-provided tracking number when it becomes available.
  • accessorials such as billing and packaging codes flow directly into the label request.
  • Requests fail if the packages array is empty or a package omits required weight data.
Quick Reference
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 packages with matching customs data in intlItems, including declared value, unit value, and country of origin.
  • Use accessorials to set duty billing, packaging type, and currency handling for cross-border paperwork.
  • Requests fail if required customs fields like producerCountryCode or declaredValue are missing.
Quick Reference
Required arrays
packages[] and intlItems[] 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.