Last updated

Point-to-Point Schedules

project44's Point-to-Point Schedules API returns carrier-authoritative ocean point-to-point sailing schedules — sea and inland legs, unlimited transshipments, and per-leg cut-off times — so you can search for and select a sailing before a shipment is booked.

The response body follows the DCSA Commercial Schedules 1.0 standard; the envelope (authentication, pagination, errors, versioning) follows project44's standard REST API design. See the API documentation for the full field-by-field schema.

Key concepts

  • Route — one bookable path from an origin to a destination, made up of one or more ordered legs. A route with no transshipments has one leg; a route with two transshipments has three.
  • Leg — a single vessel, barge, or inland (rail/truck) movement between two consecutive stops on a route. Each leg carries its own departure/arrival times, performing vessel (when known), and carrier service/voyage information.
  • Carrier — the SCAC-coded carrier operating a route (or leg). The route-level carrierCode is a headline rollup; the same value also appears per-leg under servicePartners, since different legs of a transshipment route can in principle be operated by different carriers.
  • Cut-off time — the latest time cargo, documentation, or containers must be ready at origin for a given sailing (e.g. VCO vessel cut-off, DCO documentation cut-off). Returned as an array, empty when the carrier supplies none for that route — never null.

Searching for a route

All payloads below are simplified for illustration. For the exact request/response schema, see the API documentation.

A search requires an origin, a destination, and at least one complete date window — a departure window, an arrival window, or both:

GET /services/advanced-sailing-schedules/v1/point-to-point-routes
    ?origin=NLRTM
    &destination=USLGB
    &departureStartDate=2026-05-20
    &departureEndDate=2026-06-03

Response:
{
  "results": [
    {
      "placeOfReceipt": { "location": { "UNLocationCode": "NLRTM" }, "dateTime": "2026-05-27T00:00:00+02:00" },
      "placeOfDelivery": { "location": { "UNLocationCode": "USLGB" }, "dateTime": "2026-06-25T00:00:00-07:00" },
      "carrierCode": "ONEY",
      "carrierName": "Ocean Network Express",
      "transshipmentCount": 1,
      "transitTime": 29,
      "legs": [ /* one entry per leg, see the API documentation for the full shape */ ],
      "extensions": { "routeId": "<uuid>" }
    }
  ],
  "paginationInfo": { "total": 348, "pageNumber": 1, "pageSize": 50 }
}

A search with no matching routes returns 200 OK with an empty results array — never 404.

Point-to-Point Schedules Operations

  1. Get proper credentials.
  2. Search Point-to-Point Routes.
  3. List Carriers.

Get Credentials

You must be provisioned with a tenant to have a client application within that tenant with the appropriate permissions to use any API within project44.

See Authentication and Authorization for more information.

Search Point-to-Point Routes

Use the GET endpoint to search for bookable point-to-point routes between an origin and a destination.

Endpoint/services/advanced-sailing-schedules/v1/point-to-point-routes
VerbGET
Required Fieldsorigin, destination, and at least one complete date window (departureStartDate + departureEndDate, and/or arrivalStartDate + arrivalEndDate)

Optional filters: carrierCodes (comma-separated SCAC list, max 50), transshipmentsMax (0-10), sort (DEPARTURE_DATE_TIME default, ARRIVAL_DATE_TIME, or TRANSIT_TIME, all ascending), pageNumber, pageSize (default 50, max 200).

Common Error Scenarios

  • No date window supplied, or only one side of a window (e.g. departureStartDate without departureEndDate) -> 400 error code.
  • origin or destination is not a valid 5-character UN/LOCODE -> 400 error code.
  • More than 50 SCACs in carrierCodes -> 400 error code.
  • Missing or invalid credentials -> 401 error code.
  • Authenticated but lacking the read:advanced-sailing-schedules permission -> 403 error code.

List Carriers

Use the GET endpoint to list the carriers currently live in the service.

Endpoint/services/advanced-sailing-schedules/v1/carriers
VerbGET
Required FieldsNone

Migrating from Sailing Schedules V2

If you currently use the legacy /sailingschedules/v2/p2pquery endpoint, this API is its DCSA-shaped, carrier-authoritative replacement — it is not a breaking change to V2, which continues to run unchanged. Key differences to plan for when migrating:

  • The response body is DCSA Commercial Schedules 1.0 shaped, not the legacy V2 schema — field names, nesting, and enums differ; see the API documentation for the new field-by-field contract.
  • Routes are carrier-authoritative (sourced directly from carrier schedule feeds) rather than inferred from vessel-rotation data, and support unlimited transshipments rather than being capped at two. (The transshipmentsMax query filter is capped at 0-10, but that only bounds the search — it does not cap the transshipmentCount a returned route can carry.)
  • Inland legs (rail/truck) can appear alongside sea legs on the same route.
  • Each route carries per-leg cut-off times where the carrier supplies them; V2 does not return cut-off data.