# Get freight shipment tracking

Retrieve the current tracking status and event history for a booked freight shipment directly from the carrier.

The shipment is tracked by its PRO number when one has been assigned, and by its BOL number otherwise. A shipment that has neither returns a 400 Bad Request with error code freight_tracking_not_available — this is normal immediately after booking, before the carrier assigns a PRO number.

Endpoint: GET /v1/freight/shipments/{freight_shipment_id}/tracking
Version: 1.1.202604070904
Security: api_key

## Path parameters:

  - `freight_shipment_id` (string, required)
    The identifier of the freight shipment.
    Example: "se-28529731"

## Response 200 fields (application/json):

  - `freight_shipment_id` (string)
    The freight shipment being tracked.
    Example: "se-28529731"

  - `freight_provider_account_id` (string)
    The freight provider account used to retrieve the tracking.
    Example: "se-28529731"

  - `freight_provider_code` (string)
    The code of the freight provider used to retrieve the tracking.
    Example: "UNISHIPPERS"

  - `carrier_scac` (string,null)
    The SCAC of the LTL carrier moving the freight.
    Example: "FXFE"

  - `bol_number` (string,null)
    The Bill of Lading number of the shipment.
    Example: "BOL-20260417-4821"

  - `pro_number` (string,null)
    The carrier's PRO number for the shipment, or null until the carrier assigns one.
    Example: "072-51293847"

  - `status` (string)
    The shipment status derived from the carrier's tracking status.
    Enum: "pending", "quoted", "booked", "in_transit", "delivered", "cancelled", "exception"

  - `tracking_status` (string,null)
    The detailed tracking status reported by the carrier. tracking_status is finer-grained than status: several tracking statuses, such as dispatched and out_for_delivery, all map to the in_transit shipment status.
    Enum: "unknown", "created", "pending_pickup", "dispatched", "in_route_to_pickup", "at_pickup", "in_transit", "out_for_delivery", "at_delivery", "delivered", "exception", "voided", null

  - `estimated_delivery_date` (string,null)
    The carrier's estimated delivery date, in YYYY-MM-DD format.
    Example: "2026-04-22"

  - `tracking_url` (string,null)
    A carrier page where the shipment can be tracked, when the carrier provides one.
    Example: "https://www.fedex.com/fedextrack/?trknbr=07251293847"

  - `last_event_at` (string,null)
    When the most recent tracking event occurred.
    Example: "2026-04-20T14:05:00Z"

  - `events` (array)
    The tracking events reported by the carrier.

  - `events.occurred_at` (string,null)
    When the event occurred, in YYYY-MM-DDTHH:mm:ssZ format. Carriers that report only a date return midnight as the time.
    Example: "2026-04-20T14:05:00Z"

  - `events.status` (string,null)
    The tracking status the event corresponds to.
    Example: "in_transit"

  - `events.carrier_code` (string,null)
    The carrier's own status or event code.
    Example: "AF"

  - `events.description` (string,null)
    The carrier's description of the event.
    Example: "Departed terminal in Grand Rapids, MI"

  - `events.documents` (array)
    Any documents the carrier attached to the event, such as a proof of delivery. Always present; an empty array when the carrier attached none.

  - `events.documents.type` (string,null)
    The type of document, as reported by the carrier.
    Example: "PROOF_OF_DELIVERY"

  - `events.documents.filename` (string,null)
    The name of the document file.
    Example: "pod_072-51293847.pdf"

  - `events.documents.format` (string,null)
    The file format of the document.
    Example: "PDF"

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, or the ShipEngine API itself.
    Enum: "carrier", "order_source", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "file_not_found", "shipping_rule_not_found", "service_not_determined", "no_rates_returned", "funding_source_registration_in_progress", "insurance_failure", "funding_source_missing_configuration", "funding_source_error", "freight_connection_inactive", "freight_provider_id_required", "freight_provider_already_connected", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.carrier_id` (string)
    A string that uniquely identifies the carrier that generated the error.
    Example: "se-28529731"

  - `errors.carrier_code` (string)
    The name of the shipping carrier that generated the error, such as fedex, dhl_express, stamps_com, etc.
    Example: "dhl_express"

  - `errors.field_name` (string)
    The name of the field that caused the error
    Example: "shipment.ship_to.phone_number"


