# GET /distributor-portal/shipments

List your own shipments: status, units, lots. Distributor contact account session.

Source: https://docs.sealtrust.io/en/reference/get-distributor-portal-shipments/

---

You list your own B2B orders (your shipments), never another distributor's
of the same brand nor another brand's. Each entry carries the number of
allocated units, the lots shipped, and whether a goods-in confirmation already
exists.

> [!INFO] Multi-brand: one `brand_id` at a time, never a merge
> If you are an active contact at several brands, this list answers for ONE
> brand at a time (`brand_id`) — never the union of every brand's shipments
> in the same call. Omitted when there is no ambiguity (only one accessible
> brand), `brand_id` stays optional; with several brands, it becomes
> required (see the 400 below).

## Authorization

Session of a distributor contact account. See
[`GET /distributor-portal/me`](/en/reference/get-distributor-portal-me/) for
the session rules and the 401/403 refusals.

## Rate limit

30 calls a minute, shared with the rest of the distributor portal.

## Query parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `brand_id` | `integer` | Which brand to list shipments for. Required when you are an active contact at several brands; optional otherwise (the only accessible brand is used). |
| `page` | `integer` | Page, starting at 1. Defaults to 1. |
| `page_size` | `integer` | Page size, 1 to 200. Defaults to 25. |
| `status` | `string` | `open`, `closed` or `cancelled`. Omitted: every shipment. |

## Example request

```bash
curl -i "https://api.sealtrust.io/v1/distributor-portal/shipments?page=1&page_size=25" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.0000000000000000000000000000.0000000000000000000000000000"
```

## Example response

```json
{
  "items": [
    {
      "id": 318,
      "order_ref": "SO-2026-0318",
      "status": "closed",
      "ship_date": "2026-10-01",
      "units_allocated": 240,
      "lots": ["LOT-2026-09-A", "LOT-2026-09-B"],
      "received": false,
      "created_at": "2026-09-28T09:12:00Z"
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 25,
  "total_pages": 1
}
```

### Response fields

| Field | Type | Description |
| --- | --- | --- |
| `units_allocated` | `integer` | Active units allocated to this shipment. |
| `lots` | `array` | Distinct lot codes among the shipment's units. |
| `received` | `boolean` | At least one goods-in confirmation was recorded for this shipment. |

## Errors

| Code | Condition | What to do |
| --- | --- | --- |
| 401 | Token missing, unreadable or expired. | Sign in again. |
| 403 | Account with no active distributor access at all, at any brand. | See [`GET /distributor-portal/me`](/en/reference/get-distributor-portal-me/). |
| 400 | Several brands accessible and `brand_id` omitted. | Call [`GET /distributor-portal/brands`](/en/reference/get-distributor-portal-brands/) and pass `brand_id`. |
| 404 | `brand_id` given, but no active contact for that brand (including a brand that does not exist). Same answer either way. | Check the id. |
| 429 | Rate limit exceeded. | Wait the delay in `Retry-After`. |

## See also

- [`GET /distributor-portal/brands`](/en/reference/get-distributor-portal-brands/),
  the list of your brands, to build a selector.
- [`GET /distributor-portal/shipments/{shipment_id}`](/en/reference/get-distributor-portal-shipments-id/),
  one shipment's detail: its units, its goods-in confirmations.
- [`POST /distributor-portal/shipments/{shipment_id}/receive`](/en/reference/post-distributor-portal-shipments-id-receive/),
  confirm the reception of a shipment.
