> ## Documentation Index
> Fetch the complete documentation index at: https://terminal49-feat-trade-intel-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# List shipment party roles

> List the party roles on a shipment in the Terminal49 API. Returns each role, such as shipper or consignee, with the linked party in included.

Returns every party role on the shipment. The linked parties are returned in `included`.

## Path parameters

| Parameter | Required | Description |
| - | - | - |
| `shipment_id` | Yes | The ID of the shipment |


## OpenAPI

````yaml get /shipments/{shipment_id}/party_roles
openapi: 3.0.0
info:
  title: Terminal49 API Reference
  version: 0.2.0
  contact:
    name: Terminal49 API support
    url: https://www.terminal49.com
    email: support@terminal49.com
  description: >-
    The Terminal 49 API offers a convenient way to programmatically track your
    shipments from origin to destination.


    Please enter your API key into the "Variables" tab before using these
    endpoints within Postman.
  x-label: Beta
  termsOfService: https://www.terminal49.com/terms
servers:
  - url: https://api.terminal49.com/v2
    description: Production
security:
  - authorization: []
tags:
  - name: Containers
  - name: Custom Field Definitions
  - name: Custom Field Options
  - name: Custom Fields
  - name: Shipments
  - name: Locations
  - name: Events
  - name: Tracking Requests
  - name: Webhooks
  - name: Webhook Notifications
  - name: Ports
  - name: Metro Areas
  - name: Terminals
  - name: Routing (Paid)
  - name: Documents
  - name: Email Submissions
  - name: Document Schemas
  - name: Search
  - name: Parties
  - name: Trade Intelligence
    description: >-
      Trade intelligence answers questions about who imports what into the US,
      from where, on which carriers, and how that changes over time. The data is
      US import bill-of-lading records (US Customs vessel manifests): every
      ocean container landed at a US port (plus US-bound cargo landed at
      Vancouver, BC) from January 2022 to today, refreshed daily. It does not
      include air freight, exports, or domestic moves.


      **Access.** Trade intelligence is enabled per account. Accounts without it
      receive `403 Forbidden` with `{"error": "Trade intelligence is not enabled
      for this account"}`; contact sales@terminal49.com to enable it. Requests
      are limited to roughly 120 per minute per account (`429` with `{"error":
      "Rate limit exceeded; retry in a minute"}`).


      **Format.** These endpoints accept and return plain JSON, not JSON:API.
      Send `Content-Type: application/json` on `POST` requests and authenticate
      exactly like every other v2 endpoint (`Authorization: Token
      YOUR_API_KEY`).


      **Typical flow.** Resolve a name or product first, then analyze:
      `companies/search` or `commodities/search` give you the exact
      `company_name` or `hs4` to pass to `companies/profile`, `importers/top`,
      `trends`, or `breakdown`. Container and bill of lading numbers go straight
      to `containers/lookup` and `bills_of_lading/lookup`.


      **Reading the numbers.**


      - **Volume is physical containers.** Each box is counted once, even when
      it appears on several bills of lading. A container carrying several HS
      codes counts once per code and companies can share containers, so do not
      add volumes across HS codes or companies; take market totals from `trends`
      or `breakdown` without a company filter.

      - **Estimated value is a modelled USD estimate**, not the declared customs
      value.

      - **The current month is partial.** `trends` and `breakdown` include it by
      default; `companies/profile` and `importers/top` use full calendar months.
      Compare full months against the same months a year earlier.

      - **Absent volume is not small volume.** Importers can ask US Customs to
      withhold their name from manifests, and much large-retail freight is
      booked under forwarders or suppliers. Treat a company's figures as a
      floor, never as its size.

      - **One company, many names.** Company names are normalized but split by
      state, and large importers use several names (distribution, merchandising,
      and DC entities). Related entities are separate companies; report them
      separately. `companies/search` ranks by match quality, not by size.

      - **Companies are the consignee or notify party on the bill.** Forwarders,
      NVOCCs, and customs brokers appear alongside cargo owners. A high
      notify-party share, or LOGISTICS, FREIGHT, SHIPPING, CUSTOMS, or BROKERAGE
      in the name, usually indicates a logistics provider.

      - **Carriers, countries, and ports use the manifests' spellings**, and
      carriers appear under spelling variants (for example `CMA CGM` and `CMA
      CGM AMERICA LLC`). Filter with substrings and merge variants before
      computing shares.

      - **HS4 descriptions are truncated.** Check `common_goods` from
      `commodities/search` before relying on a code.
paths:
  /shipments/{shipment_id}/party_roles:
    parameters:
      - schema:
          type: string
        name: shipment_id
        in: path
        required: true
        description: Shipment ID
    get:
      tags:
        - Parties
      summary: List shipment party roles
      description: >-
        Returns the party roles attached to the shipment. Each role links one
        party to the record. The linked parties are returned in `included`.
      operationId: get-shipments-party-roles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/party_role'
                  included:
                    type: array
                    items:
                      $ref: '#/components/schemas/party'
                  links:
                    $ref: '#/components/schemas/links'
                  meta:
                    $ref: '#/components/schemas/meta'
              examples:
                Party roles:
                  value:
                    data:
                      - id: 1d0f2a0e-5c3b-4c7e-9a52-3b6f8d2e4a11
                        type: party_role
                        attributes:
                          role: shipper
                          roleable_type: Shipment
                          roleable_id: 8f0c6b1a-2d4e-4f7b-9c3a-5e6d7f8a9b0c
                          created_at: '2026-09-01T14:02:11Z'
                          updated_at: '2026-09-01T14:02:11Z'
                        relationships:
                          party:
                            data:
                              id: ba4cb904-827f-4038-8e31-1e92b3356218
                              type: party
                    included:
                      - id: ba4cb904-827f-4038-8e31-1e92b3356218
                        type: party
                        attributes:
                          company_name: ACME LOGISTICS
                          nickname: ACME
                    links:
                      self: >-
                        /v2/shipments/8f0c6b1a-2d4e-4f7b-9c3a-5e6d7f8a9b0c/party_roles
        '401':
          description: >-
            Unauthorized. Also returned when the record belongs to another
            account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      $ref: '#/components/schemas/error'
        '404':
          description: Not Found
components:
  schemas:
    party_role:
      title: Party role model
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
          enum:
            - party_role
        attributes:
          type: object
          properties:
            role:
              type: string
              enum:
                - shipper
                - consignee
                - notify_party
                - customs_broker
                - customer
                - freight_forwarder
                - pickup_dray_carrier
              description: >-
                Role the party plays on the record. Shipments accept every
                value. Containers accept only `pickup_dray_carrier`.
            roleable_type:
              type: string
              enum:
                - Shipment
                - Cargo
              description: >-
                Type of the record the role is attached to. `Cargo` is returned
                for containers.
            roleable_id:
              type: string
              format: uuid
              description: ID of the shipment, container, or tracking request.
            created_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
        relationships:
          type: object
          properties:
            party:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    type:
                      type: string
                      enum:
                        - party
    party:
      title: Party model
      type: object
      properties:
        id:
          type: string
          format: uuid
        attributes:
          type: object
          required:
            - company_name
          properties:
            company_name:
              type: string
              description: Company name
        type:
          type: string
          enum:
            - party
      required:
        - attributes
    links:
      title: links
      type: object
      properties:
        last:
          type: string
          format: uri
        next:
          type: string
          format: uri
        prev:
          type: string
          format: uri
        first:
          type: string
          format: uri
        self:
          type: string
          format: uri
    meta:
      title: meta
      type: object
      properties:
        size:
          type: integer
        total:
          type: integer
    error:
      title: Error model
      type: object
      properties:
        detail:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        source:
          type: object
          nullable: true
          properties:
            pointer:
              type: string
              nullable: true
            parameter:
              type: string
              nullable: true
        code:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        meta:
          type: object
          nullable: true
          additionalProperties: true
      required:
        - title
  securitySchemes:
    authorization:
      name: Authorization
      type: apiKey
      in: header
      description: >-
        Use a Terminal49 API key in the `Authorization` header with the `Token`
        prefix.


        `Authorization: Token YOUR_API_KEY`

````

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