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

# Retrieve Carrier Configurations

> Lists the carriers configured in your account (**Settings > Carriers**).
Use it to discover the `carrier_reference` values accepted by Create
Shipment and Create Booking, and the `carrier_id` values used as
filters in List Shipments and PUDO locations.

The same carrier (`carrier_id`) can appear multiple times with
different `carrier_reference` values — one per configuration, for
example two UPS accounts. No configured carriers returns HTTP 200 with
`count: 0` and empty `data`.



## OpenAPI

````yaml /specs/public-api-v5.yaml get /v5/carrier-configs/
openapi: 3.1.0
info:
  title: Perform.AI Public API (v5)
  version: 5.0.0
  description: |-
    The Perform.AI Public API lets you create and manage shipments, returns,
    bookings, tracking events, and documents, and retrieve reference data such
    as PUDO locations and carrier configurations.

    All endpoints accept HTTPS connections only and are secured with OAuth 2.0.
    Generate a Bearer access token with your API credentials (Client ID and
    Client Secret, from **Integrations > API** in your account), then send it in
    the `Authorization` header of every request.

    This specification covers the following endpoints:
    - `POST /auth/oauth/token/`
    - `POST /v5/shipment/`
    - `POST /v5/shipment/update/`
    - `POST /v5-2-0/shipment/update/`
    - `GET /v5/shipment/list/`
    - `GET /v5/shipment/details/`
    - `GET /v5-2-0/shipment/details/`
    - `POST /v5/events/create/`
    - `POST /v5/return/`
    - `POST /v5/return/update/`
    - `GET /v5/shipments/documents/`
    - `GET /v5/shipments/documents/{document_uuid}/`
    - `GET /v5/shipments/documents/labels/`
    - `POST /v5/booking/`
    - `GET /v5/pudo-locations/`
    - `GET /v5/carrier-configs/`
servers:
  - url: https://api.perform.ai
security:
  - BearerAuth: []
tags:
  - name: Authentication
    description: Generate the Bearer access token used by every other endpoint.
  - name: Shipments
    description: Create, update, search, and retrieve Shipments.
  - name: Events
    description: Add manual tracking events to Shipments.
  - name: Returns
    description: Create and update Returns and their Return Shipments.
  - name: Documents
    description: Retrieve documents attached to Shipments.
  - name: Booking
    description: Book Open Shipments with carriers and provision shipping labels.
  - name: PUDO locations
    description: Search pick-up/drop-off locations across your configured carriers.
  - name: Carrier configurations
    description: Discover the carriers configured in your account.
  - name: Webhooks
    description: Shipment update payloads Perform.AI pushes to your endpoint.
paths:
  /v5/carrier-configs/:
    get:
      tags:
        - Carrier configurations
      summary: Retrieve Carrier Configurations
      description: |-
        Lists the carriers configured in your account (**Settings > Carriers**).
        Use it to discover the `carrier_reference` values accepted by Create
        Shipment and Create Booking, and the `carrier_id` values used as
        filters in List Shipments and PUDO locations.

        The same carrier (`carrier_id`) can appear multiple times with
        different `carrier_reference` values — one per configuration, for
        example two UPS accounts. No configured carriers returns HTTP 200 with
        `count: 0` and empty `data`.
      operationId: get-v5-carrier-configs
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 25
            maximum: 2000
          description: Configurations per page. Default 25, maximum 2000.
        - name: page
          in: query
          schema:
            type: integer
            default: 1
          description: Page number.
      responses:
        '200':
          description: The account's carrier configurations.
          content:
            application/json:
              schema:
                type: object
                properties:
                  api_response:
                    type: string
                  message:
                    type: string
                    description: 'E.g. `Total pages: 1`.'
                  count:
                    type: integer
                  pages:
                    type: integer
                    description: Total number of pages.
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CarrierConfig'
              example:
                api_response: '200'
                message: 'Total pages: 1'
                count: 2
                pages: 1
                data:
                  - carrier_id: dhleco
                    carrier_name: DHL eCommerce
                    carrier_reference: dhl-ecommerce-de
                    carrier_description: outbound Germany
                  - carrier_id: upsglo
                    carrier_name: UPS
                    carrier_reference: ups-returns
                    carrier_description: return booking
        '400':
          description: Invalid `limit` or `page`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldValidationError'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/Throttled'
        '500':
          $ref: '#/components/responses/SystemError'
components:
  schemas:
    CarrierConfig:
      type: object
      description: One configured carrier in the account.
      properties:
        carrier_id:
          type: string
          description: >-
            Perform.AI-defined 6-character carrier ID. Use it where a carrier
            identifier is required, e.g. `carrier_ids` on PUDO locations or the
            `carrier_id` filter on List Shipments.
        carrier_name:
          type: string
        carrier_reference:
          type: string
          description: >-
            Your reference for this configuration — the value Create Shipment
            and Create Booking accept. The same `carrier_id` can appear with
            several references.
        carrier_description:
          type:
            - string
            - 'null'
          description: Optional free text; may be empty.
    FieldValidationError:
      type: object
      description: >-
        HTTP 400 — one or more fields failed validation; nothing was persisted.
        For fields inside arrays, errors are keyed by the item's position as a
        string ("0", "1", …), then the field name.
      required:
        - api_response
        - message
        - errors
      properties:
        api_response:
          type: string
          description: Always `"4030"`.
        message:
          type: string
          description: Always `validation_error`.
        errors:
          type: object
          description: >-
            Affected field → array of error messages (or a nested object for
            array items).
    GatewayError:
      type: object
      description: >-
        An error generated at the API gateway — authorization (`403`) or
        throttling (`429`). Note `api_response` is a number here, unlike
        application-level responses where it is a string.
      required:
        - api_response
        - message
      properties:
        api_response:
          type: integer
          description: '`403` or `429`.'
        message:
          type: string
          description: E.g. `Key not authorized`, `Quota exceeded`, `Throttled`.
    RequestError:
      type: object
      description: >-
        A request-level error such as `4000` (invalid request format), `4041`
        (no results found), or a `5XX` system error.
      required:
        - api_response
        - message
      properties:
        api_response:
          type: string
          description: Error code as a string, e.g. `"4000"`, `"4041"`, `"500"`.
        message:
          type: string
  responses:
    Unauthorized:
      description: >-
        The Bearer token is expired, invalid, or missing — or the account lacks
        access.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GatewayError'
          example:
            api_response: 403
            message: Key not authorized
    Throttled:
      description: Rate limit exceeded (40 requests per second per account).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GatewayError'
          example:
            api_response: 429
            message: Throttled
    SystemError:
      description: Internal system error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestError'
          example:
            api_response: '500'
            message: System error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Used by every functional endpoint. Generate the token with `POST
        /auth/oauth/token/` and send it as `Authorization: Bearer {token}`.

````