---
title: "List the packing lists of a shipment with pallets and lines"
method: GET
path: "/shipments/{shipment_id}/packing_lists"
tags: ["Shipments"]
---

# List the packing lists of a shipment with pallets and lines

`GET /shipments/{shipment_id}/packing_lists`

## Request

- Base URL: `https://trackberry.com/api/v1`
- URL: `https://trackberry.com/api/v1/shipments/{shipment_id}/packing_lists`
- Auth: HTTP bearer

Use this to read what is physically in the shipment: for each current packing list, its declared totals, its pallets, and each pallet's produce lines (produce, variety, calibre, box counts and weights). Only current packing lists (not replaced by a newer document) are listed, oldest first, not paged. Pallets that belong to no packing list are not reachable here (they still count in `cargo.pallets` of the shipment).

## Path parameters

- `shipment_id` string, required

## Headers

- `Trackberry-Version` string

## Response `200`

The current packing lists of the shipment.

- object: The envelope every list endpoint returns.
  - `object` 'list', required: Always `list`.
  - `data` object[], required: The items of this page, in the order the endpoint documents. Each item is an object of the kind the endpoint returns.
    - `object` 'packing_list', required: Always `packing_list`.
    - `id` string, required: The packing list id.
    - `shipment_id` string, required: The shipment it belongs to.
    - `document_id` string, nullable, required: The document it was read from. Null when it was created without one.
    - `container_id` string, nullable, required: The container it covers. Null when the document did not say.
    - `reference` string, nullable, required: The packing list's own number.
    - `declared_box_count` integer, nullable, required: The total number of boxes the document states, before Trackberry sums the lines. Compare with `totals.boxes`.
    - `declared_net_weight_kg` number, nullable, required: The total net weight in kilograms the document states. Compare with `totals.net_weight_kg`.
    - `totals` object, required: Totals Trackberry computed from this packing list's own visible lines.
      - `pallets` integer, required: Number of pallets on this packing list.
      - `boxes` integer, required: Sum of the box counts of its lines.
      - `net_weight_kg` number, required: Sum of the net weights of its lines, in kilograms.
    - `pallets` Pallet[], required: The pallets of this packing list, oldest first.
      - `object` 'pallet', required: Always `pallet`.
      - `id` string, required: The pallet id.
      - `pallet_number` string, nullable, required: The pallet's number or SSCC as printed on the packing list. Unique within a shipment when set.
      - `container_id` string, nullable, required: The container the pallet is loaded in. Null when unknown.
      - `lines` PackingLine[], required: The pallet's produce lines in reading order. Lines merged into another line are left out.
        - `object` 'packing_line', required: Always `packing_line`.
        - `id` string, required: The line id.
        - `line_index` integer, nullable, required: The line's position in the packing list, used to order lines.
        - `produce_name` string, nullable, required: The produce, normalized (for example `Grapes`).
        - `produce_type` string, nullable, required: How the produce was grown, as written on the packing list. Lines marked organic (any letter case) make the shipment `organic`.
        - `variety` string, nullable, required: The variety or cultivar.
        - `calibre` string, nullable, required: The size grade of the produce.
        - `quality_category` string, nullable, required: The quality class, such as `Class I`.
        - `pack_format` string, nullable, required: How the produce is packed, for example a carton size.
        - `label` string, nullable, required: The brand or label printed on the packaging.
        - `ggn` string, nullable, required: The GLOBALG.A.P. Number (GGN) of the producer, when stated.
        - `comment` string, nullable, required: Remarks the packing list gives for this line, as written, often about how it is packed or labelled.
        - `box_count` integer, nullable, required: Number of boxes on this line.
        - `box_weight_kg` number, nullable, required: Net weight of one box in kilograms.
        - `net_weight_kg` number, nullable, required: Net weight of the whole line in kilograms.
        - `gross_weight_kg` number, nullable, required: Gross weight of the whole line in kilograms, packaging included.
  - `has_more` boolean, required: True when more items exist after this page. Pass the last item's `id` as `starting_after` to fetch them. Always false for unpaged lists.

## Other responses

- `400`: A parameter or header is invalid (`invalid_parameter`, with `param` naming it), a customer link cannot be made for this shipment (`not_shareable`), an uploaded file is empty, over 50 MB or of a type Trackberry does not read (`file_empty`, `file_too_large`, `unsupported_file_type`), an upload's container number is on more than one live shipment (`ambiguous_container`), an `Idempotency-Key` was already used for a different request (`idempotency_key_reused`) or `Trackberry-Version` names an unpublished version (`invalid_version`, with `param` set to `Trackberry-Version`). A parameter that must be a single value but was sent as an array or hash (`status[]=x`, `q[a]=1`) is also a 400.
- `401`: No token was sent (`missing_token`) or the token is wrong, expired, revoked, or its user left the organization (`invalid_token`). The response has a `WWW-Authenticate` header.
- `403`: The token may not do this. `insufficient_scope`: a write endpoint was called with a read-only token. `read_only_member`: a write endpoint was called by a token whose owner is now a read-only member of the organization. `revoke_not_allowed`: the link can only be revoked by an admin or by the member who made it. `billing_blocked`: an upload needed a new shipment and the organization's billing does not allow one.
- `404`: No such object in this organization (`resource_missing`). This is also the answer for an id of another organization, an id with the wrong prefix, or a malformed id, so the API never confirms that an object exists elsewhere.
- `429`: A rate limit was hit (`rate_limited`). Wait the number of seconds in `Retry-After`. A BI feed answers the same way (`feed_in_progress`) when another feed for the organization is still being produced.

---

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