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 everyday requests teams rely on to sign in, sync shipments, and keep tabs on shipment status.

Authentication

Sign in with ShipVia Web to get the token that keeps the rest of your shipping calls moving.

  • POST /api/v1/auth/login with JSON username and password.
  • Receive a sessionToken ready for Authorization headers.
  • Persist the bearer session token for subsequent shipment calls.

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.

Pull Shipment

Grab a single shipment using a location and tracking number to mirror what your teams see in ShipVia.

  • POST /api/v1/shipments/pull with locationId and either customerTrackingNumber or masterTrackingNumber.
  • Authenticate with Authorization: Bearer <sessionToken>.
  • Receive the shipment details ShipVia Web displays, including packages and carrier references.

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.
  • 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

    Call POST /api/v1/auth/login

    Log in once with your username and password to receive the bearer token you will reuse in later steps.

  • 03

    Sync Shipments

    Send shipment manifests to /api/v1/shipments/sync so ShipVia can build labels, routing, and costs.

  • 04

    Pull Shipment Details

    Look up a shipment with /api/v1/shipments/pull whenever you need the data ShipVia sees.

  • 05

    Run Shipment Inquiry

    Use /api/v1/shipments/inquiry to browse history, filter by status, and keep analytics aligned.

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": "4353637953",
                "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": "9372481317",
                "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": "8015204510",
        "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": "9372481317",
        "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 both your internal customerTrackingNumber 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": "1234567890",
        "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": "9372481317",
        "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.