> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dekhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# An order's shipments

> The shipments of one of your orders, planned or on their way, with carrier tracking per box. Pickup and freight entries have no carrier tracking or packages; they are identified by fulfillment. A shipped order can have none when neither structured shipments nor a recognized pickup/freight shipping method is recorded. An order that does not exist, or belongs to a client your credential is not linked to, is `404 not_found`.



## OpenAPI

````yaml /api/partners/openapi.json get /api/partners/v1/orders/{orderId}/shipments
openapi: 3.1.0
info:
  title: DEKHQ Partner REST API
  version: 1.0.0
  description: >-
    JSON versions of the PromoStandards Order Status and Order Shipment
    Notification services, and the partner order API. Same credentials, scopes
    and rate limit as the SOAP endpoints. Generated from the dekhq repo; do not
    edit by hand.
servers:
  - url: https://partners.dekhq.com
security:
  - basicAuth: []
paths:
  /api/partners/v1/orders/{orderId}/shipments:
    get:
      summary: An order's shipments
      description: >-
        The shipments of one of your orders, planned or on their way, with
        carrier tracking per box. Pickup and freight entries have no carrier
        tracking or packages; they are identified by fulfillment. A shipped
        order can have none when neither structured shipments nor a recognized
        pickup/freight shipping method is recorded. An order that does not
        exist, or belongs to a client your credential is not linked to, is `404
        not_found`.
      operationId: listOrderShipments
      parameters:
        - name: orderId
          in: path
          required: true
          description: >-
            The order id, e.g. `ord_22699286ac3294327ea813dd8d`. Stable for the
            life of the order.
          schema:
            type: string
            pattern: ^ord_[A-Za-z0-9]{1,64}$
      responses:
        '200':
          description: Success.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  shipments:
                    type: array
                    items:
                      $ref: '#/components/schemas/Shipment'
                    description: >-
                      The order's carrier shipments and pickup/freight entries.
                      An order can be shipped with none listed when neither
                      structured shipments nor a recognized pickup/freight
                      shipping method is recorded.
                required:
                  - shipments
                additionalProperties: false
              example:
                shipments:
                  - shipmentId: '41027'
                    fulfillment: carrier
                    status: shipped
                    carrier: UPS
                    service: UPS Ground
                    trackingNumber: 1Z999AA10123456784
                    shippedAt: '2026-02-12T18:00:00.000Z'
                    estimatedDeliveryAt: '2026-02-16T00:00:00.000Z'
                    estimatedDeliveryDay: '2026-02-16'
                    deliveredAt: null
                    deliveredDay: null
                    packages:
                      - number: 1
                        trackingNumber: 1Z999AA10123456784
                        weightOz: 200
                  - shipmentId: '41028'
                    fulfillment: pickup
                    status: delivered
                    carrier: null
                    service: null
                    trackingNumber: null
                    shippedAt: null
                    estimatedDeliveryAt: null
                    estimatedDeliveryDay: null
                    deliveredAt: '2026-02-16T18:00:00.000Z'
                    deliveredDay: null
                    packages: []
        '400':
          description: >-
            A query parameter or body field is missing or invalid. `errors[]`
            lists each field.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://docs.dekhq.com/api/partners/errors#invalid_request
                title: Invalid request
                status: 400
                detail: >-
                  A query parameter or body field is missing or invalid.
                  `errors[]` lists each field.
                code: invalid_request
                requestId: req_0123456789abcdef
        '401':
          description: Missing or invalid credentials.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
            WWW-Authenticate:
              description: Basic realm="DEKHQ Partner API"
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://docs.dekhq.com/api/partners/errors#unauthenticated
                title: Unauthenticated
                status: 401
                detail: Missing or invalid credentials.
                code: unauthenticated
                requestId: req_0123456789abcdef
        '403':
          description: Your credential is not enabled for the scope this endpoint needs.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://docs.dekhq.com/api/partners/errors#forbidden
                title: Forbidden
                status: 403
                detail: >-
                  Your credential is not enabled for the scope this endpoint
                  needs.
                code: forbidden
                requestId: req_0123456789abcdef
        '404':
          description: >-
            No such resource for your credential: it does not exist, or it
            belongs to a client your credential is not linked to.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://docs.dekhq.com/api/partners/errors#not_found
                title: Not found
                status: 404
                detail: >-
                  No such resource for your credential: it does not exist, or it
                  belongs to a client your credential is not linked to.
                code: not_found
                requestId: req_0123456789abcdef
        '429':
          description: More than the allowed requests per minute.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://docs.dekhq.com/api/partners/errors#rate_limited
                title: Rate limited
                status: 429
                detail: More than the allowed requests per minute.
                code: rate_limited
                requestId: req_0123456789abcdef
        '500':
          description: An unexpected error on our side. It is logged; retry later.
          headers:
            X-Request-Id:
              description: Id of this call. Quote it when you contact us.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://docs.dekhq.com/api/partners/errors#internal
                title: Internal error
                status: 500
                detail: An unexpected error on our side. It is logged; retry later.
                code: internal
                requestId: req_0123456789abcdef
components:
  schemas:
    Shipment:
      type: object
      properties:
        shipmentId:
          type: string
          description: Identifies the shipment within this order.
        fulfillment:
          type: string
          enum:
            - carrier
            - pickup
            - freight
          description: >-
            How the order left us. `carrier` entries carry carrier tracking;
            `pickup`/`freight` entries have no carrier, service or tracking and
            no packages. Consumers must tolerate new values later.
        status:
          $ref: '#/components/schemas/ShipmentStatus'
        carrier:
          description: Carrier, e.g. `UPS`.
          type:
            - string
            - 'null'
        service:
          description: >-
            The carrier's own service-level name, e.g. `UPS Ground` or `UPS Next
            Day Air®` (values can include symbols such as ®). `null` when the
            carrier gave none or it is unknown; never guessed.
          type:
            - string
            - 'null'
        trackingNumber:
          description: >-
            The shipment's carrier tracking number. Each box's own number is
            under `packages`.
          type:
            - string
            - 'null'
        shippedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: When it shipped or was picked up, if recorded.
        estimatedDeliveryAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            The carrier's estimated delivery. When `estimatedDeliveryDay` is
            set, the carrier gave a date only: prefer that field, since this one
            then holds that date at 00:00 UTC.
        estimatedDeliveryDay:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: >-
            The carrier's estimated delivery as a calendar date (YYYY-MM-DD)
            when the carrier gave a date only. `null` when it gave a real time
            (use `estimatedDeliveryAt`) or there is no estimate.
        deliveredAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            When it was delivered or collected, if recorded. When `deliveredDay`
            is set, the carrier gave a date only: prefer that field, since this
            one then holds that date at 00:00 UTC.
        deliveredDay:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: >-
            The delivery as a calendar date (YYYY-MM-DD) when the carrier gave a
            date only. `null` when it gave a real time (use `deliveredAt`) or
            the delivery is not recorded.
        packages:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentPackage'
          description: >-
            Each box with its own tracking number. Empty when the carrier
            tracking is recorded per shipment only.
      required:
        - shipmentId
        - fulfillment
        - status
        - carrier
        - service
        - trackingNumber
        - shippedAt
        - estimatedDeliveryAt
        - estimatedDeliveryDay
        - deliveredAt
        - deliveredDay
        - packages
      additionalProperties: false
      description: One shipment of an order.
    Problem:
      type: object
      properties:
        type:
          type: string
          description: URI of the docs entry for this error code.
        title:
          type: string
          description: Short summary of the error code; the same for every occurrence.
        status:
          type: integer
          description: The HTTP status code.
        detail:
          type: string
          description: What went wrong in this request.
        code:
          type: string
          enum:
            - forbidden
            - idempotency_conflict
            - internal
            - invalid_request
            - not_found
            - order_refused
            - payload_too_large
            - rate_limited
            - unauthenticated
            - upload_refused
          description: Stable, machine-readable error code.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ProblemFieldError'
          description: The rejected fields, for `invalid_request` and `order_refused`.
        currentTotal:
          type: string
          pattern: ^\d{1,10}\.\d{2}$
          description: >-
            With `order_refused` and a `total_changed` field error: the order's
            current total in US dollars, e.g. `1234.50`. Send it back as
            `expectedTotal` once you accept it.
        requestId:
          type: string
          description: >-
            The X-Request-Id of the call that produced this problem. Quote it
            when you contact us. A submission's stored refusal, replayed for its
            Idempotency-Key or a poll, keeps the id of the call that refused it.
      required:
        - type
        - title
        - status
        - detail
        - code
        - requestId
      additionalProperties: false
      description: An RFC 9457 problem (application/problem+json).
    ShipmentStatus:
      type: string
      enum:
        - pending
        - labeled
        - shipped
        - delivered
      description: >-
        Where the shipment is: `pending` (planned), `labeled` (label bought, not
        yet with the carrier), `shipped`, `delivered`.
    ShipmentPackage:
      type: object
      properties:
        number:
          type: integer
          minimum: 1
          description: Box number within the shipment, from 1.
        trackingNumber:
          type: string
          description: Carrier tracking number for this box.
        weightOz:
          description: >-
            Box weight in ounces. Left out when the carrier label reports no
            weight.
          type: number
      required:
        - number
        - trackingNumber
      additionalProperties: false
      description: One box in a shipment.
    ProblemFieldError:
      type: object
      properties:
        field:
          type: string
          description: >-
            Dotted path of the field, e.g. `lines.0.quantity`, or the query
            parameter name.
        code:
          type: string
          description: >-
            Why the field was rejected, e.g. `invalid_type`, `too_small`,
            `unrecognized_keys`, `not_supported_yet`, `total_changed`.
      required:
        - field
        - code
      additionalProperties: false
      description: One rejected field.
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Your DEKHQ partner `id` and `password`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.