---
title: "Track a shipment by order number"
method: GET
path: "/v1/shipper/shipment/{orderNumber}/tracking"
tags: ["Shipper API"]
---

# Track a shipment by order number

`GET /v1/shipper/shipment/{orderNumber}/tracking`

## Request

- Base URL: `https://api.oway.io`
- URL: `https://api.oway.io/v1/shipper/shipment/{orderNumber}/tracking`
- Auth: HTTP bearer and API key in header `x-oway-api-key`

Retrieves tracking information for a shipment by its order number (PRO number). Returns status and estimated/actual pickup and delivery dates. Pass `include=location` to embed the live position estimate (route-interpolated, refined by recent vehicle positions, with an uncertainty radius) in the response. It is omitted by default so status polling does not pay the position-computation cost.

## Path parameters

- `orderNumber` string, required

## Query parameters

- `include` string

## Response `200`

Tracking information retrieved successfully

- Tracking: Shipment tracking information
  - `id` string: Unique identifier for the order
  - `orderNumber` string: Human-readable PRO number for the shipment (5-character alphanumeric)
  - `orderStatus` 'INITIALIZED' | 'CONFIRMED' | 'ACCEPTED' | 'ASSIGNED' | 'PICKED_UP' | 'IN_TRANSIT' | 'DELIVERED' | 'CANCELLED' | 'REJECTED', nullable: Current status of the order. Null only for an order whose internal state is unset; every live state maps to a value.
  - `actualPickupDate` string, date-time: Actual pickup date/time (ISO 8601 format)
  - `actualDeliveryDate` string, date-time: Actual delivery date/time (ISO 8601 format)
  - `estimatedPickupDate` string, date-time: Estimated pickup date/time (ISO 8601 format)
  - `estimatedDeliveryDate` string, date-time, nullable: Estimated delivery date/time (ISO 8601 format). Null until a delivery window has been predicted or an appointment booked, which for most orders is at dispatch.
  - `location` ShipmentLocation: Current estimated shipment position with an uncertainty radius
    - `center` GpsData: GPS location data point for a vehicle
      - `vehicleId` string, required: Unique identifier for the vehicle
      - `timestamp` string, date-time, required: Timestamp of the GPS reading (ISO 8601 format). Must not be in the future.
      - `latitude` number, double, required: Latitude coordinate
      - `longitude` number, double, required: Longitude coordinate
      - `heading` integer, required: Heading in degrees (0-359, where 0 is North)
      - `speed` integer, required: Speed in km/h
    - `uncertaintyRadiusKm` number, double: Uncertainty radius around the center point, in kilometers
    - `lastEventTimestamp` string, date-time: Timestamp of the last event that updated the location (ISO 8601 format)
    - `isSignificantlyDelayed` boolean: True when delivery is significantly past the expected window; the location estimate should not be shown
    - `delayMessage` string: Human-readable message to display when significantly delayed
    - `statusDescription` string, nullable: Human-readable status sentence combining phase, approximate location, and ETA, e.g. 'IN TRANSIT DIRECT TO RECEIVER - Currently in Flagstaff, AZ - 2 Days 4 Hrs Until Destination'. Present only when a meaningful line can be produced; omitted otherwise.

## Other responses

- `400`: Invalid request: orderNumber is required
- `401`: Unauthorized: missing or invalid Bearer token (authentication failed)
- `403`: Forbidden: missing/invalid API key, or shipment does not belong to your company
- `404`: Shipment not found

---

[API](https://skmtc.dev/shipoway/apis/oway-shipper-api.md) - [All operations](https://skmtc.dev/shipoway/apis/oway-shipper-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shipoway/apis/oway-shipper-api/revisions/35141ac5fb57?raw)
