---
title: "Create status updates for a shipment."
method: POST
path: "/api/v4/capacityproviders/ltl/shipments/statusupdates"
tags: ["LTL: Push Tracking"]
---

# Create status updates for a shipment.

`POST /api/v4/capacityproviders/ltl/shipments/statusupdates`

## Request

- Base URL: `https://na12.api.project44.com`
- URL: `https://na12.api.project44.com/api/v4/capacityproviders/ltl/shipments/statusupdates`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/api/v4/oauth2/token`
- TypeScript: <https://skmtc.dev/project44/apis/project44-rest-api/docs/api/v4/capacityproviders/ltl/shipments/statusupdates/post.ts> (a function with typed inputs; its response is checked against the schema)

<h4><b>Required Fields</h4></b>
<ul><li><b>  customerAccount: </b></li><ul><li> accountIdentifier </li></ul><li><b>  carrierIdentifier: </b></li><ul><li> type </li><li> value </li></ul><li><b>  shipmentIdentifiers: </b></li><ul><li> type </li><li> value </li><li> primaryForType (if more than one shipment identifier of the same type)</li></ul><li> statusCode </li><li><b>  location: </b>(if statusCode is 'ARRIVED_AT_TERMINAL' or 'DEPARTED_TERMINAL')</li><ul><li><b>  address: </b>(if location provided)</li><ul><li> city (if location provided)</li><li> state (if location provided and country is US)</li><li> country (if location provided and country is not US. Default: US)</li></ul></ul><li><b> deliveryAppointmentWindow: </b>(if statusCode is 'UPDATED_DELIVERY_APPT')</li><li> timestamp </li></ul>

## Request body

- LtlCapacityProviderPushStatusUpdate
  - `arrivalEstimate` LtlCapacityProviderPushShipmentArrivalEstimate
    - `estimatedArrivalWindow` OffsetDateTimeWindow: A date and time range, with time zone offset.
      - `endDateTime` string: End time of this window with timezone offset. (format: yyyy-MM-dd'T'HH:mm:ssZ)
      - `startDateTime` string: Start time of this window with timezone offset. (format: yyyy-MM-dd'T'HH:mm:ssZ)
  - `carrierIdentifier` CapacityProviderIdentifier: A capacity provider identifier object.
    - `type` 'SCAC' | 'DOT_NUMBER' | 'MC_NUMBER' | 'P44_EU' | 'SYSTEM' | 'P44_GLOBAL' | 'VAT': Capacity provider identifier type.
    - `value` string: Capacity provider identifier value.
  - `customerAccount` CustomerAccount
    - `accountIdentifier` string: The account identifier of the customer to whom this shipment belongs. This will be used to identify the mutual customer in project44's system.
  - `deliveryAppointmentWindow` OffsetDateTimeWindow: A date and time range, with time zone offset.
    - `endDateTime` string: End time of this window with timezone offset. (format: yyyy-MM-dd'T'HH:mm:ssZ)
    - `startDateTime` string: Start time of this window with timezone offset. (format: yyyy-MM-dd'T'HH:mm:ssZ)
  - `geoCoordinates` GeoCoordinates
    - `latitude` number, float: The approximate geographic latitude of a location, using the WGS84 coordinate system.
    - `longitude` number, float: The approximate geographic longitude of a location, using the WGS84 coordinate system.
  - `location` Location: A physical location.
    - `address` Address: A postal address.
      - `addressLines` string[]: Street name, number, direction, PO box, etc. Only three address lines are currently permitted.
      - `city` string: Name of city, town, etc.
      - `country` 'US' | 'CA' | 'MX' | 'AG' | 'BB' | 'BS' | 'BZ' | 'CR' | 'CU' | 'DM' | 'DO' | 'GD' | 'GT' | 'HN' | 'HT' | 'JM' | 'KN' | 'LC' | 'NI' | 'PA' | 'SV' | 'TT' | 'VC' | 'AI' | 'AW' | 'BL' | 'BM' | 'BQ' | 'CW' | 'GL' | 'GP' | 'KY' | 'MF' | 'MQ' | 'MS' | 'PM' | 'PR' | 'SX' | 'TC' | 'UM' | 'VG' | 'VI' | 'AT' | 'BE' | 'BG' | 'CY' | 'CZ' | 'DK' | 'DE' | 'EE' | 'ES' | 'FI' | 'FR' | 'GB' | 'GR' | 'HR' | 'HU' | 'IE' | 'IT' | 'LT' | 'LU' | 'LV' | 'MT' | 'NL' | 'PL' | 'PT' | 'RO' | 'SE' | 'SK' | 'SI' | 'CH' | 'IS' | 'LI' | 'NO' | 'AL' | 'ME' | 'MK' | 'RS' | 'TR' | 'AD' | 'AX' | 'BA' | 'BV' | 'BY' | 'FO' | 'GG' | 'GI' | 'IM' | 'IO' | 'JE' | 'MC' | 'MD' | 'SJ' | 'SM' | 'TF' | 'UA' | 'VA' | 'AE' | 'AF' | 'AM' | 'AZ' | 'BD' | 'BH' | 'BN' | 'BT' | 'CN' | 'GE' | 'HK' | 'ID' | 'IL' | 'IN' | 'IQ' | 'IR' | 'JO' | 'JP' | 'KG' | 'KH' | 'KP' | 'KR' | 'KW' | 'KZ' | 'LA' | 'LB' | 'LK' | 'MM' | 'MN' | 'MO' | 'MV' | 'MY' | 'NP' | 'OM' | 'PH' | 'PK' | 'PS' | 'QA' | 'RU' | 'SA' | 'SG' | 'SY' | 'TH' | 'TJ' | 'TL' | 'TM' | 'TW' | 'UZ' | 'VN' | 'YE' | 'AO' | 'BF' | 'BI' | 'BJ' | 'BW' | 'CD' | 'CF' | 'CG' | 'CI' | 'CM' | 'CV' | 'DJ' | 'DZ' | 'EG' | 'EH' | 'ER' | 'ET' | 'GA' | 'GH' | 'GM' | 'GN' | 'GQ' | 'GW' | 'HM' | 'KE' | 'KM' | 'LR' | 'LS' | 'LY' | 'MA' | 'MG' | 'ML' | 'MR' | 'MU' | 'MW' | 'MZ' | 'NA' | 'NE' | 'NG' | 'RE' | 'RW' | 'SC' | 'SD' | 'SH' | 'SL' | 'SN' | 'SO' | 'SS' | 'ST' | 'SZ' | 'TD' | 'TG' | 'TN' | 'TZ' | 'UG' | 'YT' | 'ZA' | 'ZM' | 'ZW' | 'AR' | 'BO' | 'BR' | 'CL' | 'CO' | 'EC' | 'FK' | 'GF' | 'GS' | 'GY' | 'PE' | 'PY' | 'SR' | 'UY' | 'VE' | 'AS' | 'AU' | 'CC' | 'CK' | 'CX' | 'FJ' | 'FM' | 'GU' | 'KI' | 'MH' | 'MP' | 'NC' | 'NF' | 'NR' | 'NU' | 'NZ' | 'PF' | 'PG' | 'PN' | 'PW' | 'SB' | 'TK' | 'TO' | 'TV' | 'VU' | 'WF' | 'WS' | 'AQ' | 'EL' | 'UK' | 'XK' | 'XS' | 'XI', enum: Abbreviation of country (using ISO 3166 standards). (default: 'US')
      - `postalCode` string: The ZIP or postal code.
      - `state` string: Abbreviation of state, province, district, etc.
    - `contact` Contact: Contact information.
      - `companyName` string: Company name.
      - `contactName` string: Contact name. May be required for shipments.
      - `email` string: Email address. May be required for shipments.
      - `faxNumber` string: Fax number. E.164 or North American Number Plan (NANP) phone numbers are accepted. If a phone number is passed in without the associated country code field, the number will be treated as a number that adheres to the NANP standard. The number will be returned in responses in the NANP format: '[+123 ]123-456-7890[, ext. 123456]'. If the associated country code field is passed in as well, the number will be treated as a number that adheres to the E.164 international phone number standard. The number will be returned in a response in the E.164 format: '[+123 ]12345678910[, ext. 123456]'. In requests, only digits and an optional 'X' (or lowercase 'x') marking the start of an extension will be used. Any other characters included for formatting will be stripped -- project44 will provide the phone number to the capacity provider in the format they accept. There must be at least ten digits before the optional 'X' (for the area code, central office code, and station code for NANP numbers or simply the subscriber number for E.164 numbers). For NANP numbers, no more than thirteen, with the first digits exceeding ten being interpreted as the country code when the country code. The number of digits after the optional 'X' must be less than seven. Examples of acceptable NANP phone numbers: '123-456-7890 x 32', '(123)456-7890 ext 30', '1234567890', '11234567890', '+55-123-456-7890 ext. 312412', '123-456-7890, ext. 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]123-456-7890[, ext. 123456]'. Examples of acceptable E.164 phone numbers: '20-1234-5678 x 1234', '(20) 1234-5678x1234', '2012345678', '20 1234-5678 ext 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]2012345678[, ext. 1234]'.
      - `faxNumberCountryCode` string: The country code associated with the phone number. If this is blank, the phone number will be treated as a number that adheres to the North American Number Plan (NANP) format. Acceptable country codes formats: '+123' or '123'.
      - `phoneNumber` string: Phone number. May be required for shipments. E.164 or North American Number Plan (NANP) phone numbers are accepted. If a phone number is passed in without the associated country code field, the number will be treated as a number that adheres to the NANP standard. The number will be returned in responses in the NANP format: '[+123 ]123-456-7890[, ext. 123456]'. If the associated country code field is passed in as well, the number will be treated as a number that adheres to the E.164 international phone number standard. The number will be returned in a response in the E.164 format: '[+123 ]12345678910[, ext. 123456]'. In requests, only digits and an optional 'X' (or lowercase 'x') marking the start of an extension will be used. Any other characters included for formatting will be stripped -- project44 will provide the phone number to the capacity provider in the format they accept. There must be at least ten digits before the optional 'X' (for the area code, central office code, and station code for NANP numbers or simply the subscriber number for E.164 numbers). For NANP numbers, no more than thirteen, with the first digits exceeding ten being interpreted as the country code when the country code. The number of digits after the optional 'X' must be less than seven. Examples of acceptable NANP phone numbers: '123-456-7890 x 32', '(123)456-7890 ext 30', '1234567890', '11234567890', '+55-123-456-7890 ext. 312412', '123-456-7890, ext. 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]123-456-7890[, ext. 123456]'. Examples of acceptable E.164 phone numbers: '20-1234-5678 x 1234', '(20) 1234-5678x1234', '2012345678', '20 1234-5678 ext 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]2012345678[, ext. 1234]'.
      - `phoneNumber2` string: Alternate phone number. E.164 or North American Number Plan (NANP) phone numbers are accepted. If a phone number is passed in without the associated country code field, the number will be treated as a number that adheres to the NANP standard. The number will be returned in responses in the NANP format: '[+123 ]123-456-7890[, ext. 123456]'. If the associated country code field is passed in as well, the number will be treated as a number that adheres to the E.164 international phone number standard. The number will be returned in a response in the E.164 format: '[+123 ]12345678910[, ext. 123456]'. In requests, only digits and an optional 'X' (or lowercase 'x') marking the start of an extension will be used. Any other characters included for formatting will be stripped -- project44 will provide the phone number to the capacity provider in the format they accept. There must be at least ten digits before the optional 'X' (for the area code, central office code, and station code for NANP numbers or simply the subscriber number for E.164 numbers). For NANP numbers, no more than thirteen, with the first digits exceeding ten being interpreted as the country code when the country code. The number of digits after the optional 'X' must be less than seven. Examples of acceptable NANP phone numbers: '123-456-7890 x 32', '(123)456-7890 ext 30', '1234567890', '11234567890', '+55-123-456-7890 ext. 312412', '123-456-7890, ext. 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]123-456-7890[, ext. 123456]'. Examples of acceptable E.164 phone numbers: '20-1234-5678 x 1234', '(20) 1234-5678x1234', '2012345678', '20 1234-5678 ext 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]2012345678[, ext. 1234]'.
      - `phoneNumber2CountryCode` string: The country code associated with the phone number. If this is blank, the phone number will be treated as a number that adheres to the North American Number Plan (NANP) format. Acceptable country codes formats: '+123' or '123'.
      - `phoneNumberCountryCode` string: The country code associated with the phone number. If this is blank, the phone number will be treated as a number that adheres to the North American Number Plan (NANP) format. Acceptable country codes formats: '+123' or '123'.
  - `proIdentifier` LtlShipmentIdentifier
    - `primaryForType` boolean: Only used in LTL tracking. Whether this is the primary shipment identifier for this type for the given shipment. The primary shipment identifier for a type will always be attempted before other identifiers of that type with the capacity provider.
    - `source` 'CUSTOMER' | 'CAPACITY_PROVIDER': Only used in LTL tracking. Whether this shipment identifier originated from the customer or the capacity provider. If the customer has provided this identifier at any point during the shipment's lifetime, this source will be 'CUSTOMER'. Otherwise, the source will be 'CAPACITY_PROVIDER'. This field is useful for ensuring uniqueness across your shipment identifiers -- you can't control whether duplicates exist among the capacity-provider-sourced identifiers, but you can ensure on your end that all of your provided identifiers are unique and query for unique shipments accordingly.
    - `type` 'PRO' | 'BILL_OF_LADING' | 'CUSTOMER_REFERENCE' | 'PICKUP' | 'PURCHASE_ORDER' | 'EXTERNAL': The type of the shipment identifier.
    - `value` string: The value of the shipment identifier.
  - `shipmentIdentifiers` LtlShipmentIdentifier[]: A list of shipment identifiers that, with the exception of the EXTERNAL type, can be used to track the shipment. At least one identifier of type 'PRO' must be included in the list. The source field cannot be provided in this API.
    - `primaryForType` boolean: Only used in LTL tracking. Whether this is the primary shipment identifier for this type for the given shipment. The primary shipment identifier for a type will always be attempted before other identifiers of that type with the capacity provider.
    - `source` 'CUSTOMER' | 'CAPACITY_PROVIDER': Only used in LTL tracking. Whether this shipment identifier originated from the customer or the capacity provider. If the customer has provided this identifier at any point during the shipment's lifetime, this source will be 'CUSTOMER'. Otherwise, the source will be 'CAPACITY_PROVIDER'. This field is useful for ensuring uniqueness across your shipment identifiers -- you can't control whether duplicates exist among the capacity-provider-sourced identifiers, but you can ensure on your end that all of your provided identifiers are unique and query for unique shipments accordingly.
    - `type` 'PRO' | 'BILL_OF_LADING' | 'CUSTOMER_REFERENCE' | 'PICKUP' | 'PURCHASE_ORDER' | 'EXTERNAL': The type of the shipment identifier.
    - `value` string: The value of the shipment identifier.
  - `sourceType` 'API' | 'EDI': The original type of data source for where this status update originated from. (default: API)
  - `statusCode` 'READY_FOR_PICKUP' | 'UPDATED_PICKUP_APPT' | 'EXCEPTION' | 'PICKED_UP' | 'ARRIVED_AT_TERMINAL' | 'REWEIGHT_RECLASS' | 'INFO' | 'UPDATED_DELIVERY_APPT' | 'DEPARTED_TERMINAL' | 'OUT_FOR_DELIVERY' | 'DELIVERED': The project44 status code for this status update. This field must always be populated.
  - `statusReason` LtlCapacityProviderPushStatusReason
    - `description` string: A description of the reason for the status of the status update.
    - `reasonDetailCode` 'APPOINTMENT_SET' | 'CANNOT_FIND_CONSIGNEE_ADDRESS' | 'CANNOT_REACH_CONSIGNEE' | 'CONS_CLOSED_FOR_HOLIDAY' | 'CONS_DID_NOT_ORDER_FREIGHT' | 'CONSIGNEE_CANCELLED_ORDER' | 'CONSIGNEE_CLOSED' | 'CONSIGNEE_DISPUTES_CHARGES' | 'CREDIT_HOLD' | 'DAMAGED' | 'DAMAGED_ON_DELIVERY' | 'DELIVERY_ATTEMPTED_APPOINTMENT' | 'DELIVERY_ATTEMPTED_NO_DOCK_SPACE' | 'DELIVERY_ATTEMPTED_REAR_LOAD' | 'DELIVERY_REQUIRES_SPECIAL_EQUIPMENT' | 'DELIVERY_SHORTAGE' | 'DUPLICATE_SHIPMENT' | 'EMERGENCY_DELAY_IN_TRANSIT' | 'GENERAL_EXCEPTION' | 'HAZARDOUS_MATERIAL' | 'INCORRECT_ADDRESS_PROVIDED' | 'INVALID_OR_MISSING_PURCHASE_ORDER_NUMBER' | 'LIMITED_ACCESS_LOCATIONS' | 'MISSING_PACKING_LIST' | 'NO_PAYMENT_AVAILABLE_AT_DELIVERY' | 'OVERAGE' | 'PERMANENT_APPOINTMENT_REQUIRED' | 'PROTECTIVE_SERVICE_REQUIRED' | 'RECONSIGNED_TO_NEW_CONSIGNEE' | 'REFUSED_BY_CONS_CANNOT_RECEIVE_ON_DELIVERY_DATE' | 'REFUSED_NO_RETURN_AUTHORIZATION' | 'SHIP_WHEN_CAPACITY_AVAILABLE' | 'SHIPMENT_ALASKA_OR_HAWAII' | 'SHIPMENT_TENDERED_LATE' | 'SHORTAGE' | 'SPOT_MARKET_SHIPMENT' | 'WAITING_INSTRUCTIONS' | 'WEATHER_DELAY' | 'WEATHER_DELAY_CLEARED' | 'WORK_STOPPAGE' | 'WRONG_PRODUCT_SHIPPED': The reason detail code for the status of the status udpate.
    - `reasonSummaryCode` 'APPOINTMENT_ISSUE' | 'BILLING_ISSUE' | 'DELIVERY_ISSUE' | 'INFO_MESSAGE' | 'OTHER_EXCEPTION' | 'PAPERWORK_ISSUE' | 'SHIPMENT_ISSUE' | 'SPOT_SHIPMENT' | 'STAFFING_ISSUE' | 'TRANSIT_ISSUE' | 'VEHICLE_ISSUE' | 'WEATHER_ISSUE': The reason summary code for the status of the status update.
  - `stopNumber` integer: The stop number, where '1' is the origin and the destination has the largest number, with any stops in between ordered by appointment time.
  - `stopType` 'ORIGIN' | 'DESTINATION' | 'TERMINAL': The type of the shipment stop to which this status update corresponds, if any. For example, a status update with code 'AT_STOP' will typically have this field populated with the stop type the vehicle is at.
  - `terminalCode` string: The service center's code. For example, the capacity provider's service center in Miami may have a code like 'MIA-123' or 'MIA'. This should match a stop code of one of the shipment stop's stop codes.
  - `timestamp` string: The timestamp of this status update in the time zone of the location (format: yyyy-MM-dd'T'HH:mm:ssZ). If this status update has no location, the time zone should be UTC.

## Response `202`

Accepted

## Other responses

- `400`: Invalid request
- `401`: Invalid or missing credentials
- `403`: User not authorized to perform this operation

---

[API](https://skmtc.dev/project44/apis/project44-rest-api.md) - [All operations](https://skmtc.dev/project44/apis/project44-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/project44/apis/project44-rest-api/revisions/cdf9675e2294?raw)
