> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer-stage.shipbob.dev/llms.txt.
> For full documentation content, see https://developer-stage.shipbob.dev/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server.

# Estimate Delivery Date


POST https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date
Content-Type: application/json

Returns an estimated delivery date for a given destination and set of line items. The flow is auto-detected from the request shape: a ZIP-only address with exactly one line item is treated as the Product Details Page (PDP) flow; a full address with one or more line items is treated as the Checkout flow.


Reference: https://developer-stage.shipbob.dev/api/orders/estimate-delivery-date

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2026-01
  version: 1.0.0
paths:
  /2026-01/order:estimate-delivery-date:
    post:
      operationId: estimate-delivery-date
      summary: |
        Estimate Delivery Date
      description: >
        Returns an estimated delivery date for a given destination and set of
        line items. The flow is auto-detected from the request shape: a ZIP-only
        address with exactly one line item is treated as the Product Details
        Page (PDP) flow; a full address with one or more line items is treated
        as the Checkout flow.
      tags:
        - subpackage_orders
      parameters:
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token
          required: true
          schema:
            type: string
        - name: x_correlation_id
          in: header
          description: >
            Optional caller-supplied correlation id (UUID) echoed back in the
            response and logs for end-to-end request tracing. If omitted, the
            request is still processed; supplying one makes it easier to
            correlate this call across ShipBob systems.
          required: false
          schema:
            $ref: >-
              #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.X.Correlation.Id.String
      responses:
        '200':
          description: >-
            OK — one of: full success (estimates populated, errors empty),
            partial success (both populated), or system-can't-fulfill (empty
            estimates + one ApiError in errors[]).
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.OK.Object
        '400':
          description: Bad Request — caller sent a malformed request.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Bad.Request.Object
        '401':
          description: No access right at this time
          content:
            application/json:
              schema:
                description: Any type
        '403':
          description: No access
          content:
            application/json:
              schema:
                description: Any type
        '404':
          description: Not Found — caller referenced a resource that does not exist.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Not.Found.Object
        '422':
          description: Unprocessable Entity — caller violated a business rule.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Unprocessable.Entity.Object
        '500':
          description: >-
            Internal Server Error — EDD-internal failure or an unhandled
            exception.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Internal.Server.Error.Object
        '502':
          description: Bad Gateway — upstream dependency returned an error.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Bad.Gateway.Object
        '504':
          description: >-
            Gateway Timeout — upstream dependency did not respond within the
            allowed time.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Gateway.Timeout.Object
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/Orders.Post.Api.Order.Estimate.Delivery.Date.Request.Object
servers:
  - url: https://sandbox-api.shipbob.com
components:
  schemas:
    Orders.Post.Api.Order.Estimate.Delivery.Date.X.Correlation.Id.String:
      type: string
      format: uuid
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.X.Correlation.Id.String
    OrdersPostApiOrderEstimateDeliveryDateRequestObjectDestinationAddress:
      type: object
      properties:
        address1:
          type: string
          description: >-
            Street address line 1. Required for Checkout flow; omit for PDP
            flow.
        address2:
          type: string
          description: Optional street address line 2 (suite, unit, etc.).
        city:
          type: string
          description: City. Required for Checkout flow; omit for PDP flow.
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code (e.g. "US").
        state:
          type: string
          description: >-
            State or province code (e.g. "IL"). Required for Checkout flow; omit
            for PDP flow.
        zip_code:
          type: string
          description: Postal/ZIP code. Required for both PDP and Checkout flows.
      description: Destination address for a POST /order:estimate-delivery-date request.
      title: OrdersPostApiOrderEstimateDeliveryDateRequestObjectDestinationAddress
    OrdersPostApiOrderEstimateDeliveryDateRequestObjectLineItemsItems:
      type: object
      properties:
        inventory_id:
          type: integer
          description: ShipBob inventory ID. Provide this or `sku`, not both.
        quantity:
          type: integer
          description: >-
            Optional. Quantity of this item. Must be greater than zero when
            specified.
        sku:
          type: string
          description: Merchant SKU. Provide this or `inventory_id`, not both.
      description: >-
        A single line item in a POST /order:estimate-delivery-date request.
        Either `inventory_id` or `sku` must be provided; not both, not neither.
      title: OrdersPostApiOrderEstimateDeliveryDateRequestObjectLineItemsItems
    Orders.Post.Api.Order.Estimate.Delivery.Date.Request.Object:
      type: object
      properties:
        destination_address:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateRequestObjectDestinationAddress
          description: >-
            Destination address for a POST /order:estimate-delivery-date
            request.
        line_items:
          type: array
          items:
            $ref: >-
              #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateRequestObjectLineItemsItems
          description: >-
            The items to estimate. For PDP flow, exactly one item is required.
            For Checkout flow, one or more items are required. Each item must
            supply either `inventory_id` or `sku`.
        location_id:
          type: integer
          description: >-
            Optional. Pin the estimate to a specific fulfillment center
            (location). When omitted, the fulfillment center is resolved via
            soft inventory allocation.
        reference_id:
          type: string
          description: >-
            Optional. Caller-supplied correlation identifier echoed back in the
            response.
      description: >-
        Request body for POST /order:estimate-delivery-date. The flow is
        auto-detected from the request shape: - **PDP flow**:
        `destination_address` contains only `zip_code`, and `line_items`
        contains exactly one item. Returns delivery-date estimates across
        Promise shipping services (no pricing fields). If no fulfillment center
        is available, returns HTTP 200 with an empty `estimates` array. -
        **Checkout flow**: `destination_address` contains a full address
        (`address1`, `city`, `state`, `zip_code`, `country`) with one or more
        line items. Returns delivery-date estimates plus full shipping cost and
        measurement fields. If no fulfillment center is available, returns HTTP
        422 NO_FULFILLMENT_CENTER_AVAILABLE. - **Neither**: returns HTTP 422
        AMBIGUOUS_FLOW.
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.Request.Object
    OrdersPostApiOrderEstimateDeliveryDateOkObjectErrorsItemsCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateOkObjectErrorsItemsCode
    OrdersPostApiOrderEstimateDeliveryDateOkObjectErrorsItems:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectErrorsItemsCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          type: object
          additionalProperties:
            description: Any type
          description: >-
            Optional structured context (key/value pairs) with additional detail
            about the error.
        correlation_id:
          type: string
          description: >-
            Correlation identifier for this error, for tracing the failure
            across logs. May be null.
        description:
          type: string
          description: >-
            Human-readable explanation of the error. May be null when the code
            is self-explanatory.
      description: >-
        Error entry in an API response. Lives inside the response `errors` array
        on successful (200) responses that carry per-FC failures or a
        system-can't-fulfill outcome. Reusable across any FulfillmentEstimator
        response DTO (not EDD-specific).
      title: OrdersPostApiOrderEstimateDeliveryDateOkObjectErrorsItems
    OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsLocation:
      type: object
      properties:
        id:
          type: integer
          description: ShipBob fulfillment center (location) identifier.
        name:
          type: string
          description: Display name of the fulfillment center.
      description: Fulfillment center (location) reference in an EDD response estimate.
      title: OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsLocation
    OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsMeasurements:
      type: object
      properties:
        depth_in:
          type: number
          format: double
          description: Estimated package depth (height) in inches.
        length_in:
          type: number
          format: double
          description: Estimated package length in inches.
        total_weight_oz:
          type: number
          format: double
          description: Estimated total package weight in ounces.
        width_in:
          type: number
          format: double
          description: Estimated package width in inches.
      description: >-
        Package measurements for a POST /order:estimate-delivery-date Checkout
        estimate. Null on the parent estimate for PDP responses.
      title: OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsMeasurements
    OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsShippingCost:
      type: object
      properties:
        currency_code:
          type: string
          description: ISO 4217 three-letter currency code (e.g. "USD"). Defaults to "USD".
        value:
          type: number
          format: double
          description: The monetary amount.
      description: A monetary value with its ISO 4217 currency code.
      title: OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsShippingCost
    OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsShippingService:
      type: object
      properties:
        id:
          type: integer
          description: ShipBob shipping service (ship option) identifier.
        is_promise:
          type: boolean
          description: >-
            True when this service is a Promise (delivery-date-backed) shipping
            service.
        name:
          type: string
          description: Display name of the shipping service (e.g. "Standard", "2-Day").
        shipping_methods:
          type: array
          items:
            type: string
          description: >-
            Merchant-published ShippingMethod values from ShipOptionUserMapping
            for this (merchant, ShipOptionId), ordered by MappingId DESC (newest
            first) and capped at ApplicationSettings.ShippingMethodsLimit
            (default 20). Empty array when the merchant has no active mapping
            row for this service (e.g. default services added unconditionally in
            Precise; promise services exposed in Approximate without a
            per-merchant mapping).
      description: Shipping service reference in an EDD response estimate.
      title: >-
        OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsShippingService
    OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItems:
      type: object
      properties:
        delivery_date:
          type: string
          format: date-time
          description: >-
            Estimated delivery date in UTC. Null if the EDD service was
            unavailable or could not determine a date for this shipping service
            and fulfillment center. A null value does not block the response —
            other estimates may still have dates.
        location:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsLocation
          description: Fulfillment center (location) reference in an EDD response estimate.
        measurements:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsMeasurements
          description: >-
            Package measurements for a POST /order:estimate-delivery-date
            Checkout estimate. Null on the parent estimate for PDP responses.
        order_by_date:
          type: string
          format: date-time
          description: >-
            Latest UTC time the order must be placed to meet `delivery_date`.
            Derived from the fulfillment center's daily cutoff time and
            timezone. Null when `delivery_date` is null.
        packing_material:
          type: string
          description: >-
            Checkout only. Packing material used for the shipment (e.g. "Box",
            "Poly Mailer").
        shipping_cost:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsShippingCost
          description: A monetary value with its ISO 4217 currency code.
        shipping_service:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItemsShippingService
          description: Shipping service reference in an EDD response estimate.
      description: >-
        A single estimate entry in the POST /order:estimate-delivery-date
        response. Checkout-only fields (`shipping_cost`, `measurements`,
        `packing_material`) are null for PDP responses.
      title: OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItems
    Orders.Post.Api.Order.Estimate.Delivery.Date.OK.Object:
      type: object
      properties:
        destination_time_zone:
          type: string
          description: >-
            IANA time-zone id of the destination (e.g. America/New_York),
            best-effort. Serialized as destination_time_zone. Null when it can't
            be resolved (non-US destination, unknown zip, or lookup failure) —
            callers must treat it as optional.
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectErrorsItems
          description: >-
            Errors encountered while computing partial results. Empty on a fully
            successful response.
        estimates:
          type: array
          items:
            $ref: >-
              #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateOkObjectEstimatesItems
          description: >-
            The list of estimates, one per eligible shipping service and
            fulfillment center combination. Empty when no fulfillment center is
            available for a PDP request.
        reference_id:
          type: string
          description: >-
            Echoed from the request's ReferenceId for caller correlation. Null
            if not supplied.
      description: Response body for POST /order:estimate-delivery-date.
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.OK.Object
    OrdersPostApiOrderEstimateDeliveryDateBadRequestObjectCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateBadRequestObjectCode
    OrdersPostApiOrderEstimateDeliveryDateBadRequestObjectContext:
      type: object
      properties: {}
      title: OrdersPostApiOrderEstimateDeliveryDateBadRequestObjectContext
    Orders.Post.Api.Order.Estimate.Delivery.Date.Bad.Request.Object:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateBadRequestObjectCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateBadRequestObjectContext
        correlation_id:
          type: string
          format: uuid
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        trace_id:
          type: string
        type:
          type: string
          format: uri
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.Bad.Request.Object
    OrdersPostApiOrderEstimateDeliveryDateNotFoundObjectCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateNotFoundObjectCode
    OrdersPostApiOrderEstimateDeliveryDateNotFoundObjectContext:
      type: object
      properties: {}
      title: OrdersPostApiOrderEstimateDeliveryDateNotFoundObjectContext
    Orders.Post.Api.Order.Estimate.Delivery.Date.Not.Found.Object:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateNotFoundObjectCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateNotFoundObjectContext
        correlation_id:
          type: string
          format: uuid
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        trace_id:
          type: string
        type:
          type: string
          format: uri
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.Not.Found.Object
    OrdersPostApiOrderEstimateDeliveryDateUnprocessableEntityObjectCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateUnprocessableEntityObjectCode
    OrdersPostApiOrderEstimateDeliveryDateUnprocessableEntityObjectContext:
      type: object
      properties: {}
      title: OrdersPostApiOrderEstimateDeliveryDateUnprocessableEntityObjectContext
    Orders.Post.Api.Order.Estimate.Delivery.Date.Unprocessable.Entity.Object:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateUnprocessableEntityObjectCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateUnprocessableEntityObjectContext
        correlation_id:
          type: string
          format: uuid
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        trace_id:
          type: string
        type:
          type: string
          format: uri
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.Unprocessable.Entity.Object
    OrdersPostApiOrderEstimateDeliveryDateInternalServerErrorObjectCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateInternalServerErrorObjectCode
    OrdersPostApiOrderEstimateDeliveryDateInternalServerErrorObjectContext:
      type: object
      properties: {}
      title: OrdersPostApiOrderEstimateDeliveryDateInternalServerErrorObjectContext
    Orders.Post.Api.Order.Estimate.Delivery.Date.Internal.Server.Error.Object:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateInternalServerErrorObjectCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateInternalServerErrorObjectContext
        correlation_id:
          type: string
          format: uuid
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        trace_id:
          type: string
        type:
          type: string
          format: uri
      title: >-
        Orders.Post.Api.Order.Estimate.Delivery.Date.Internal.Server.Error.Object
    OrdersPostApiOrderEstimateDeliveryDateBadGatewayObjectCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateBadGatewayObjectCode
    OrdersPostApiOrderEstimateDeliveryDateBadGatewayObjectContext:
      type: object
      properties: {}
      title: OrdersPostApiOrderEstimateDeliveryDateBadGatewayObjectContext
    Orders.Post.Api.Order.Estimate.Delivery.Date.Bad.Gateway.Object:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateBadGatewayObjectCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateBadGatewayObjectContext
        correlation_id:
          type: string
          format: uuid
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        trace_id:
          type: string
        type:
          type: string
          format: uri
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.Bad.Gateway.Object
    OrdersPostApiOrderEstimateDeliveryDateGatewayTimeoutObjectCode:
      type: string
      enum:
        - AMBIGUOUS_FLOW
        - MISSING_ZIP
        - INVALID_LINE_ITEM
        - INVALID_QUANTITY
        - INVALID_MERCHANT_ID
        - NO_FULFILLMENT_CENTER_AVAILABLE
        - INVENTORY_NOT_FOUND
        - INVENTORY_NOT_MEASURED
        - WEIGHT_LIMIT_EXCEEDED
        - PACKAGE_SELECTION_FAILED
        - NO_SHIPPING_SERVICES_AVAILABLE
        - EDD_LOOKUP_FAILED
        - DEPENDENCY_TIMEOUT
        - DEPENDENCY_UNAVAILABLE
      description: >-
        Machine-readable error code surfaced by FulfillmentEstimator endpoints.
        See the description next to each value below for what it means.
      title: OrdersPostApiOrderEstimateDeliveryDateGatewayTimeoutObjectCode
    OrdersPostApiOrderEstimateDeliveryDateGatewayTimeoutObjectContext:
      type: object
      properties: {}
      title: OrdersPostApiOrderEstimateDeliveryDateGatewayTimeoutObjectContext
    Orders.Post.Api.Order.Estimate.Delivery.Date.Gateway.Timeout.Object:
      type: object
      properties:
        code:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateGatewayTimeoutObjectCode
          description: >-
            Machine-readable error code surfaced by FulfillmentEstimator
            endpoints. See the description next to each value below for what it
            means.
        context:
          $ref: >-
            #/components/schemas/OrdersPostApiOrderEstimateDeliveryDateGatewayTimeoutObjectContext
        correlation_id:
          type: string
          format: uuid
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        trace_id:
          type: string
        type:
          type: string
          format: uri
      title: Orders.Post.Api.Order.Estimate.Delivery.Date.Gateway.Timeout.Object
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token
    OAuth2:
      type: http
      scheme: bearer
      description: OAuth2 authentication using JWT tokens

```

## SDK Code Examples

```python default
import requests

url = "https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date"

payload = {
    "destination_address": {
        "address1": "123 Main St",
        "city": "Chicago",
        "country": "US",
        "state": "IL",
        "zip_code": "60601"
    },
    "line_items": [
        {
            "inventory_id": 12345,
            "quantity": 2
        }
    ],
    "reference_id": "order-abc-123"
}
headers = {
    "x_correlation_id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript default
const url = 'https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date';
const options = {
  method: 'POST',
  headers: {
    x_correlation_id: '497f6eca-6276-4993-bfeb-53cbbbba6f08',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"destination_address":{"address1":"123 Main St","city":"Chicago","country":"US","state":"IL","zip_code":"60601"},"line_items":[{"inventory_id":12345,"quantity":2}],"reference_id":"order-abc-123"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go default
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date"

	payload := strings.NewReader("{\n  \"destination_address\": {\n    \"address1\": \"123 Main St\",\n    \"city\": \"Chicago\",\n    \"country\": \"US\",\n    \"state\": \"IL\",\n    \"zip_code\": \"60601\"\n  },\n  \"line_items\": [\n    {\n      \"inventory_id\": 12345,\n      \"quantity\": 2\n    }\n  ],\n  \"reference_id\": \"order-abc-123\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x_correlation_id", "497f6eca-6276-4993-bfeb-53cbbbba6f08")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby default
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x_correlation_id"] = '497f6eca-6276-4993-bfeb-53cbbbba6f08'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"destination_address\": {\n    \"address1\": \"123 Main St\",\n    \"city\": \"Chicago\",\n    \"country\": \"US\",\n    \"state\": \"IL\",\n    \"zip_code\": \"60601\"\n  },\n  \"line_items\": [\n    {\n      \"inventory_id\": 12345,\n      \"quantity\": 2\n    }\n  ],\n  \"reference_id\": \"order-abc-123\"\n}"

response = http.request(request)
puts response.read_body
```

```java default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date")
  .header("x_correlation_id", "497f6eca-6276-4993-bfeb-53cbbbba6f08")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"destination_address\": {\n    \"address1\": \"123 Main St\",\n    \"city\": \"Chicago\",\n    \"country\": \"US\",\n    \"state\": \"IL\",\n    \"zip_code\": \"60601\"\n  },\n  \"line_items\": [\n    {\n      \"inventory_id\": 12345,\n      \"quantity\": 2\n    }\n  ],\n  \"reference_id\": \"order-abc-123\"\n}")
  .asString();
```

```php default
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date', [
  'body' => '{
  "destination_address": {
    "address1": "123 Main St",
    "city": "Chicago",
    "country": "US",
    "state": "IL",
    "zip_code": "60601"
  },
  "line_items": [
    {
      "inventory_id": 12345,
      "quantity": 2
    }
  ],
  "reference_id": "order-abc-123"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'x_correlation_id' => '497f6eca-6276-4993-bfeb-53cbbbba6f08',
  ],
]);

echo $response->getBody();
```

```csharp default
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date");
var request = new RestRequest(Method.POST);
request.AddHeader("x_correlation_id", "497f6eca-6276-4993-bfeb-53cbbbba6f08");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"destination_address\": {\n    \"address1\": \"123 Main St\",\n    \"city\": \"Chicago\",\n    \"country\": \"US\",\n    \"state\": \"IL\",\n    \"zip_code\": \"60601\"\n  },\n  \"line_items\": [\n    {\n      \"inventory_id\": 12345,\n      \"quantity\": 2\n    }\n  ],\n  \"reference_id\": \"order-abc-123\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = [
  "x_correlation_id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "destination_address": [
    "address1": "123 Main St",
    "city": "Chicago",
    "country": "US",
    "state": "IL",
    "zip_code": "60601"
  ],
  "line_items": [
    [
      "inventory_id": 12345,
      "quantity": 2
    ]
  ],
  "reference_id": "order-abc-123"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/2026-01/order:estimate-delivery-date")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```