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

# Get a claim

> Retrieve a single claim by ID, including its full shipment and incidence details.



## OpenAPI

````yaml GET /v1/claims/{id}
openapi: 3.1.0
info:
  title: Opereit API
  description: >-
    Public API for Opereit. Create and track carrier claims, upload carrier
    contracts, run audits against incoming carrier invoices, and retrieve line
    items and findings.
  version: 1.0.0
servers:
  - url: https://api.opereit.ai
    description: Production
security:
  - apiKey: []
paths:
  /v1/claims/{id}:
    get:
      summary: Get a claim
      description: >-
        Retrieve a single claim by ID, including its full shipment and incidence
        details.
      operationId: getClaimById
      parameters:
        - $ref: '#/components/parameters/ClaimId'
      responses:
        '200':
          description: The claim.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Claim'
        '401':
          $ref: '#/components/responses/ClaimUnauthorized'
        '404':
          $ref: '#/components/responses/ClaimNotFound'
        '500':
          $ref: '#/components/responses/ClaimInternalError'
components:
  parameters:
    ClaimId:
      name: id
      in: path
      required: true
      description: ID of the claim.
      schema:
        type: string
  schemas:
    Claim:
      type: object
      description: >-
        A claim with full shipment and incidence details, as returned by the
        get-by-id endpoint.
      required:
        - id
        - number
        - status
        - status_reason
        - date
        - carrier_id
        - created_at
        - updated_at
        - total_amount
        - shipment
        - incidence
      properties:
        id:
          type: string
          description: Unique claim ID.
        number:
          type:
            - string
            - 'null'
          description: Human-readable claim reference, if assigned.
        status:
          $ref: '#/components/schemas/ClaimStatus'
        status_reason:
          oneOf:
            - $ref: '#/components/schemas/ClaimStatusReason'
            - type: 'null'
          description: >-
            Set when `status` is `PENDING_ACTION`, `CANCELED`, or `REJECTED`.
            `null` for every other status.
        date:
          type: string
          format: date
          description: Date the claim was filed.
        carrier_id:
          type: string
          description: Carrier identifier.
        provider_id:
          type:
            - string
            - 'null'
          description: Provider identifier, if one was set.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        total_amount:
          type: integer
          description: >-
            Sum of the claimed amounts on this claim, in the smallest currency
            unit.
        shipment:
          type: object
          required:
            - id
            - tracking_number
            - carrier_id
            - origin
            - destination
            - created_at
            - line_items
          properties:
            id:
              type: string
            tracking_number:
              type: string
            carrier_id:
              type: string
            service_type:
              type:
                - string
                - 'null'
              description: Carrier service used, e.g. `STANDARD`.
            created_at:
              type: string
              format: date-time
            origin:
              type: object
              properties:
                postcode:
                  type: string
                country:
                  type: string
                  description: ISO 3166-1 alpha-2.
            destination:
              type: object
              properties:
                postcode:
                  type: string
                country:
                  type: string
                  description: ISO 3166-1 alpha-2.
                city:
                  type:
                    - string
                    - 'null'
                address:
                  type:
                    - string
                    - 'null'
                customerName:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Recipient's name. Note: returned as `customerName`
                    (camelCase) here, unlike `customer_name` on the create-claim
                    response.
            line_items:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  description:
                    type:
                      - string
                      - 'null'
                  quantity:
                    type: integer
                  unit_price:
                    type: integer
                    description: Price per unit, in the smallest currency unit.
                  total:
                    type: integer
                    description: '`quantity * unit_price`, in the smallest currency unit.'
        incidence:
          type: object
          required:
            - id
            - type
            - claimed_amount
            - currency
            - line_items
          properties:
            id:
              type: string
            type:
              $ref: '#/components/schemas/IncidenceType'
            description:
              type:
                - string
                - 'null'
            claimed_amount:
              type:
                - integer
                - 'null'
              description: Amount claimed, in the smallest currency unit.
            recovered_amount:
              type:
                - integer
                - 'null'
              description: Amount recovered, if any, in the smallest currency unit.
            currency:
              type: string
              description: ISO 4217 currency code.
            created_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
            line_items:
              type: array
              description: References to the shipment line items this incidence covers.
              items:
                type: object
                properties:
                  id:
                    type: string
    ClaimStatus:
      type: string
      enum:
        - CREATED
        - UNDER_REVIEW
        - PENDING_ACTION
        - PENDING_REFUND
        - PENDING_REFUND_AMOUNT_CONFIRMED
        - RESOLVED
        - CANCELED
        - REJECTED
        - CLOSED
      description: >-
        Current stage of the claim.


        - `CREATED`: claim created, not yet reviewed.

        - `UNDER_REVIEW`: being reviewed by the carrier.

        - `PENDING_ACTION`: action is required from Opereit's team before it can
        move forward.

        - `PENDING_REFUND`: a refund is being processed; amount not confirmed
        yet.

        - `PENDING_REFUND_AMOUNT_CONFIRMED`: refund amount confirmed, not paid
        yet.

        - `RESOLVED`: the claim has been resolved.

        - `CANCELED`: the claim was canceled.

        - `REJECTED`: the claim was rejected by the carrier.

        - `CLOSED`: the claim is closed.


        A claim is considered **closed** (no longer open) when it's `REJECTED`
        (for any reason), or `CANCELED` with a status reason of
        `CREATED_INCORRECTLY` or `SHIPMENT_NOT_CLAIMABLE_YET`. Any other status
        counts as open, and an open claim is what blocks a new claim on the same
        tracking number (see `POST /v1/claims`).
    ClaimStatusReason:
      type: object
      description: Additional detail on why the claim is in its current status.
      required:
        - id
        - slug
        - label
      properties:
        id:
          type: string
          description: Unique ID of this status reason.
        slug:
          $ref: '#/components/schemas/ClaimStatusReasonSlug'
        label:
          type: string
          description: Human-readable label for the reason.
          example: Missing Product Information
    IncidenceType:
      type: string
      enum:
        - DAMAGED
        - LOST
      description: What happened to the shipment.
    ApiError:
      type: object
      description: Error envelope returned by every endpoint.
      required:
        - statusCode
        - statusReasonCode
        - error
      properties:
        statusCode:
          type: integer
          description: HTTP status code — same value as the response status.
        statusReasonCode:
          type: string
          enum:
            - INVALID_REQUEST_BODY
            - INVALID_QUERY_PARAMETERS
            - CLAIM_NOT_FOUND
            - CLAIM_ALREADY_EXISTS
            - CONTRACT_NOT_FOUND
            - INVOICE_AUDIT_NOT_FOUND
            - INTERNAL_ERROR
            - AUTHENTICATION_REQUIRED
            - INVALID_CREDENTIALS_FORMAT
            - INVALID_CREDENTIALS_ENCODING
            - INVALID_CREDENTIALS
          description: Machine-readable error code.
        error:
          type: string
          description: Human-readable error message.
        details:
          type: object
          description: >-
            Present on `400` responses. `formErrors` holds errors not tied to a
            specific field; `fieldErrors` maps a top-level request field to the
            list of validation messages raised under it.
          properties:
            formErrors:
              type: array
              items:
                type: string
            fieldErrors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
    ClaimStatusReasonSlug:
      type: string
      enum:
        - MISSING_PRODUCT_INFORMATION
        - CLAIM_ALREADY_EXISTS
        - TIME_EXCEEDED
        - CLAIM_VOIDED_BY_CARRIER
        - DELIVERED_BY_CARRIER
        - CUSTOMS_HOLD_UNKNOWN
        - CUSTOMS_HOLD_AWAITING_PAYMENT
        - SHIPMENT_NOT_SENT
        - SHIPMENT_NOT_CLAIMABLE_YET
        - NOT_ABLE_TO_CONTACT_DESTINATARY
        - PACKAGE_AT_ACCESSPOINT
        - PENDING_UPLOAD_DOCUMENTS
        - UPDATE_ITEMS_INFORMATION
        - RESTRICTED_ACCOUNT_VIEW
        - TRACKING_REVIEW_REQUIRED
        - CREATED_INCORRECTLY
        - AI_COULD_NOT_CLASSIFY_EMAIL_REPLY
        - CUSTOMER_ACTION_REQUIRED_DAMAGE_PROOF
        - CUSTOMER_ACTION_REQUIRED_AFFIDAVIT
        - CUSTOMER_ACTION_REQUIRED_REFUND_CONFIRMATION
      description: >-
        Machine-readable reason the claim is in its current status. See [Status
        reasons](/guides/claims#status-reasons) for what each one means and
        which claim status it can appear under.
  responses:
    ClaimUnauthorized:
      description: >-
        Authentication is missing or invalid. Also returned as
        `WWW-Authenticate: Basic realm="Opereit API"` on the response headers.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 401
            statusReasonCode: AUTHENTICATION_REQUIRED
            error: Authentication required
    ClaimNotFound:
      description: The claim does not exist, or belongs to a different organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 404
            statusReasonCode: CLAIM_NOT_FOUND
            error: Claim not found
    ClaimInternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            statusCode: 500
            statusReasonCode: INTERNAL_ERROR
            error: Internal server error
  securitySchemes:
    apiKey:
      type: http
      scheme: basic
      description: >-
        HTTP Basic Auth using your API key. Send `Authorization: Basic
        base64(key_id:key_secret)`.

````