# List the shipments of a sales order

```http
GET https://secure.yoprint.com/v2/api/store/{team_slug}/v2/sales_order/{unique_key}/shipment
```

- API version: v2
- Operation ID: `v2_public_sales_order_shipment_index_for_order`
- Section: Shipping › [Shipments](https://developer.yoprint.com/reference/shipments.md)
- Web page: https://developer.yoprint.com/reference/shipments/v2-sales-order-shipment-index-for-order/
- Authentication: `Authorization: Bearer YOUR_API_KEY`

Returns the shipments of an order with their lines, estimates and packages. `{unique_key}` is the order's `id` (for example `V4keXwwxMQyXw7`). The `ord_` unique key does not work here: it gives an empty list with status 200, not an error, so an empty list does not prove the order has none. An unknown id returns an empty list.

## Permission

Any member of the team.

## Path parameters

- `team_slug` (string, required): Your team slug, shown as Team ID next to your API key in Profile. Example `your-team`.
- `unique_key` (string, required): The sales order's or quote's `id` (a hash id). The `ord_` unique key and the order number do not work here. Example `V4keXwwxMQyXw7`.

## Request body

This operation takes no request body.

### Example request

```bash
curl 'https://secure.yoprint.com/v2/api/store/your-team/v2/sales_order/V4keXwwxMQyXw7/shipment' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'X-Yoprint-Decimal-Format: exact-v1'
```

## Response

`200` Successful response.

Fields:

- `data` (array of objects, required)
  - Each item:
    - `id` (string, required)
    - `order_id` (string, required)
    - `status_id` (string, required)
    - `billable_fee_total` (decimal pair, optional): Shipping charged to the customer. A decimal pair: the amount is `value` ÷ 10^`dp` (`{ "value": 125000, "dp": 4 }` is 12.50). Kept with 4 decimal places; an amount never set can come as `{ "value": 0, "dp": 0 }`. Read `dp` every time: it can differ between fields and records. See https://developer.yoprint.com/concepts/money-and-quantities.md.
    - `cost_total` (decimal pair, optional): Shipping cost. A decimal pair: the amount is `value` ÷ 10^`dp` (`{ "value": 125000, "dp": 4 }` is 12.50). Kept with 4 decimal places; an amount never set can come as `{ "value": 0, "dp": 0 }`. Read `dp` every time: it can differ between fields and records. See https://developer.yoprint.com/concepts/money-and-quantities.md.
    - `customer_due_date` (string (date-time) | null, optional): The order's in-hands date. ISO 8601 with offset, or null.
    - `customer_id` (string | null, optional)
    - `delivery_notes` (string | null, optional)
    - `internal_notes` (string | null, optional)
    - `is_external` (boolean, optional)
    - `is_valid` (boolean, optional)
    - `items` (array of objects, optional): Shipment lines (list only).
    - `order_scoped_id` (string, optional)
    - `ready_to_ship` (boolean, optional)
    - `receiver_contact_id` (string | null, optional)
    - `scoped_id` (string, optional): The shipment number.
    - `shipment_estimates` (array of objects, optional): Shipping estimates (list only).
    - `shipment_packages` (array of objects, optional): Packages (list only).
    - `shipping_address_id` (string | null, optional)
    - `shipping_type_id` (string | null, optional)
    - `status` (object | null, optional): A status, as the status operations return it.
      - `color` (string, required): A hex color, such as `#2196f3`.
      - `customer_label` (string, required): What customers see in the customer portal. When none is set: `Pending` for `start`, `In Progress` for `in_progress` and `pre_production`, `Completed` for `end`.
      - `id` (string, required)
      - `label` (string, required): The status name people see.
      - `position` (integer, required): Sort order within its list, lowest first.
      - `role` (string, required): Which list the status belongs to: `order`, `quote`, `job`, `shipment`, `purchase_order`, `pipeline` or `customer_message`.
      - `trashed` (boolean, required): true for a deleted status.
      - `type` (string, required): `start` is the first status of its list and `end` the last; `pre_production` and `in_progress` are the ones in between. One of: `"start"`, `"pre_production"`, `"in_progress"`, `"end"`.
      - `pipeline_id` (string, optional): The task preset, for `pipeline` statuses only; absent for other roles.
- `status` (integer, required)
- `success` (boolean, required)

Example response:

```json
{
  "data": [
    {
      "billable_fee_total": {
        "dp": 0,
        "value": 0
      },
      "cost_total": {
        "dp": 0,
        "value": 0
      },
      "delivery_notes": "Leave at reception.",
      "id": "qAKg4jO63uFqjs",
      "order_id": "V4keXwwxMQyXw7",
      "order_scoped_id": "SO1001",
      "ready_to_ship": false,
      "scoped_id": "SHIP-1001",
      "shipping_address_id": "RNG2OuYC20YzXs",
      "status": {
        "color": "#9e9e9e",
        "customer_label": "Pending",
        "id": "43J0pEwV4RKUdO",
        "label": "To pack",
        "position": 1,
        "role": "shipment",
        "trashed": false,
        "type": "start"
      },
      "status_id": "43J0pEwV4RKUdO"
    }
  ],
  "status": 200,
  "success": true
}
```

## Errors

- `401` The API key is missing or wrong (`unauthenticated`).
- `403` You are not allowed to do this. `api_access_not_in_plan`: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only `{"message": "Insufficient Permission"}`. Other refusals use the error envelope, with `unauthorized` or `user_is_not_authorized`.
- `404` Not found. `page_not_found`: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. `code: null`, with a message that starts "No query results for": there is no record with that id.

## Related

- [Create a shipment for a sales order](https://developer.yoprint.com/reference/shipments/v2-sales-order-shipment-create.md): `POST /v2/api/store/{team_slug}/v2/sales_order/{unique_key}/shipment`
- [Get a shipment](https://developer.yoprint.com/reference/shipments/v2-shipment-show.md): `GET /v2/api/store/{team_slug}/v2/shipment/{unique_key}`
