---
title: "Predict delivery dates"
method: POST
path: "/v2/delivery_predictions"
tags: ["delivery_predictions"]
---

# Predict delivery dates

`POST /v2/delivery_predictions`

<aside class="access" aria-label="Endpoint access">
      <table class="access__table">
        <thead>
          <tr>
            <th class="access__table-header">Products</th>
            <th class="access__table-header">Plans</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td class="access__table-cell access__product">
              <img class="access__logo" src="/static/logos/shipstation-api-logo.svg" alt="ShipStation API Logo" loading="lazy" decoding="async"/>
              <div class="access__sub">Formerly ShipEngine</div>
            </td>
            <td class="access__table-cell access__plans">
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-free.md" class="access__plan">Free</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-advanced-enterprise.md" class="access__plan">Advanced</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-advanced-enterprise.md" class="access__plan">Enterprise</a>
            </td>
          </tr>
          <tr>
            <td class="access__table-cell">
              <img class="access__logo" src="/static/logos/shipstation-logo.svg" alt="ShipStation Logo" loading="lazy" decoding="async"/>
            </td>
            <td class="access__table-cell access__plans">
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-free-starter.md" class="access__plan access__plan--off">Free</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-free-starter.md" class="access__plan access__plan--off">Starter</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan">Standard</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan">Premium</a>
            </td>
          </tr>
        </tbody>
      </table>
      <footer class="access__footer">
        <a class="access__help" href="/apis/@shipstation-v2/docs/getting-started/products-and-plans.md">
          Learn about products and plans
          <img src="/static/icons/external-link.svg" alt="External Link Icon" style="width: 16px;" loading="lazy" decoding="async"/>
        </a>
      </footer>
    </aside>

Predict delivery dates for one or more carrier and service combinations on a single lane, using ShipStation's delivery prediction model rather than the estimate quoted by the carrier.

The prediction stands on its own: this endpoint does not price the shipment, create a shipment or a label, and nothing it returns is stored. Send the origin and destination once and list every carrier and service combination you want predicted for that lane.

A requested combination comes back as an entry in `delivery_predictions` or as an entry in `warnings`, never both. A combination the model has no coverage for becomes a warning, so a response where nothing is supported is still a `200` with an empty `delivery_predictions` array. A combination the model returns nothing usable for is in neither array. Combinations are matched by `carrier_code` and `service_code` rather than by position, and are returned as the model reports them rather than echoed back.

There is no limit you need to manage on your side: a request with more combinations than the model accepts in one call is split across several calls automatically, and none are dropped.

## Request body

- DeliveryPredictionsRequestBody — The lane and the carrier and service combinations to predict delivery dates for.
  - `from_country_code` string, required — The ISO 3166-1 alpha-2 country code of the origin.
  - `from_postal_code` string, required — The postal code of the origin.
  - `to_country_code` string, required — The ISO 3166-1 alpha-2 country code of the destination.
  - `to_postal_code` string, required — The postal code of the destination.
  - `ship_date` string, date — The date the shipment leaves the origin. Defaults to today when omitted. A date in the past is rejected.
  - `delivery_options` DeliveryPredictionOption[], required — The carrier and service combinations to predict for. A combination listed more than once is predicted once.
    - `carrier_details` DeliveryPredictionCarrierDetails, required — The carrier and service a delivery prediction or warning belongs to.
      - `carrier_code` string, required — The carrier code, in lowercase.
      - `service_code` string, required — The carrier service code, in lowercase.

## Response `200`

The predictions for the requested lane, and a warning for every combination that could not be predicted.

- DeliveryPredictionsResponseBody — The delivery predictions for the requested lane. A requested carrier and service combination is never in both arrays: it is either a prediction or a warning. A combination the model returns nothing usable for is in neither, so match on `carrier_details` and treat an absent combination as no prediction being available rather than as an error. When none of the requested combinations is supported, `delivery_predictions` is empty and every combination appears in `warnings`.
  - `delivery_predictions` DeliveryPredictionResult[] — One prediction per supported carrier and service combination.
    - `ship_date` string, date — The ship date the prediction was calculated for.
    - `delivery_date` string, date, nullable — The predicted delivery date.
    - `transit_days` integer, nullable — The predicted time in transit, in whole days. A fractional prediction is rounded up, so 4.1 days is reported as 5.
    - `confidence_level` 'high' | 'low' — How much historical data the prediction rests on. - `high` — the prediction is based on historical data for this carrier service. - `low` — little or no historical data was available for this service, so the prediction is based on similar services.
    - `carrier_details` DeliveryPredictionCarrierDetails — The carrier and service a delivery prediction or warning belongs to.
      - `carrier_code` string, required — The carrier code, in lowercase.
      - `service_code` string, required — The carrier service code, in lowercase.
  - `warnings` DeliveryPredictionWarning[] — One entry per requested combination that no prediction could be made for.
    - `carrier_details` DeliveryPredictionCarrierDetails — The carrier and service a delivery prediction or warning belongs to.
      - `carrier_code` string, required — The carrier code, in lowercase.
      - `service_code` string, required — The carrier service code, in lowercase.
    - `message` string — Why no prediction was returned for this combination.

## Other responses

- `400` — The request contained errors.
- `500` — The request was successful.

## Changes

- **2026-09-09** `dc74a6387377` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/shipstation/apis/shipstation-api-v2/changes/v2/delivery_predictions/post.md)

---

[API](https://skmtc.dev/shipstation/apis/shipstation-api-v2.md) · [All operations](https://skmtc.dev/shipstation/apis/shipstation-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/shipstation/apis/shipstation-api-v2/revisions/dc74a6387377?raw)
