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

# Get a claim

> Returns the claim as you sent it, with its current `assignment`. Adjusters' later edits
in the app don't change what this endpoint returns.

A claim that belongs to another firm, or a real claim requested with a test key,
returns `404 not_found`.




## OpenAPI

````yaml /openapi.yaml get /v1/claims/{id}
openapi: 3.1.0
info:
  title: OSA Partner API
  version: 1.0.0
  summary: Send claims to adjusters in the OSA app and follow their acceptance.
  description: >
    The OSA Partner API lets an adjusting firm's claims system invite adjusters
    to the firm,

    send them claims, and see whether each claim was accepted or rejected in the
    OSA app.


    **Conventions**

    - All requests and responses are JSON (`application/json`); errors use RFC
    9457 problem
      details (`application/problem+json`).
    - Field names are `snake_case`. Enum values are lowercase (for example
    `flood`,
      `pending_acceptance`), except US state and territory codes, which are the standard
      two-letter USPS codes, and flood zones, which are written as FEMA writes them (for
      example `AE`).
    - Enums are **open**: new values may be added to responses at any time, so
    your code must
      tolerate values it doesn't recognise.
    - Additive changes (new endpoints, new optional request fields, new response
    fields, new
      enum values) are made within `/v1`. Breaking changes go to a new version.
    - Requests are strict: an unknown or misspelled body field or query
    parameter is
      rejected with `422 validation_failed`, so typos can't be silently ignored.
    - Your own claim id (`external_id`) is stored on every claim and returned on
    every claim
      response, so you can match claims without keeping OSA's id.
    - Timestamps are RFC 3339 date-times in UTC. Dates that are calendar dates
    (such as the
      date of loss) are `YYYY-MM-DD` and are never converted between time zones.

    **Keys.** Every request except `GET /v1/health` needs an API key sent as

    `Authorization: Bearer <key>`. Live keys start with `osa_live_`; test keys
    start with

    `osa_test_` and only reach test claims and test accounts.
  contact:
    name: OSA API support
    email: info@osaconnection.com
    url: https://docs.osaconnection.com
servers:
  - url: https://api.osaconnection.com
    description: >-
      Production. Live and test keys both use this host; the key decides which
      data you reach.
security:
  - apiKey: []
tags:
  - name: Claims
    description: >
      Send claims to adjusters, offer them to another adjuster, and poll for
      acceptance.

      `/v1/claims` is always the claims your firm sent through the API.
  - name: Adjusters
    description: Invite adjusters to your firm by their OSAID and track their invitations.
  - name: Account
    description: Check which firm and permissions your API key carries.
  - name: Health
    description: Service availability. No key needed.
paths:
  /v1/claims/{id}:
    get:
      tags:
        - Claims
      summary: Get a claim
      description: >
        Returns the claim as you sent it, with its current `assignment`.
        Adjusters' later edits

        in the app don't change what this endpoint returns.


        A claim that belongs to another firm, or a real claim requested with a
        test key,

        returns `404 not_found`.
      operationId: getClaim
      parameters:
        - $ref: '#/components/parameters/ClaimId'
      responses:
        '200':
          description: The claim.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Claim'
              examples:
                rejected:
                  summary: A claim the adjuster rejected
                  value:
                    id: 9b2e4f70-1c3d-4a5b-8e6f-0a1b2c3d4e5f
                    external_id: CMS-884530
                    claim_number: FL-2026-0091877
                    test: false
                    created_at: '2026-09-28T14:40:03Z'
                    updated_at: '2026-09-28T15:12:09Z'
                    assignment:
                      status: rejected
                      adjuster_osa_id: Rt7uW2eY9iO4pA6sD1fG3hJ5kL8z
                      responded_at: '2026-09-28T15:12:09Z'
                      rejection_reason: At capacity this week.
                    instructions: Marina office opens at 8 am.
                    loss:
                      date: '2026-09-27'
                      peril: flood
                    policy:
                      number: '8705127781'
                      form: general_property
                      program: nfip
                    carrier:
                      name: Gulf Coast Mutual Insurance
                    loss_location:
                      street: 77 Davis Boulevard
                      city: Tampa
                      state: FL
                      zip: '33606'
                    policyholder:
                      company_name: Davis Island Marina LLC
                      email: office@davismarina.example.com
                    coverages:
                      building:
                        limit: 500000
                        deductible: 5000
                full:
                  summary: A claim sent with the fuller set of fields
                  value:
                    id: 3f8a2c61-5b7e-4d2a-9c1e-7a4b2d9e6f10
                    external_id: CMS-884512
                    claim_number: FL-2026-0091832
                    test: false
                    created_at: '2026-09-28T14:32:11Z'
                    updated_at: '2026-09-28T15:05:42Z'
                    assignment:
                      status: accepted
                      adjuster_osa_id: Xk3pQ9vT2mN8rL5wB7yC1dF4gH6j
                      responded_at: '2026-09-28T15:05:42Z'
                      rejection_reason: null
                    file_number: TPA-55120
                    instructions: >-
                      Policyholder is staying with family; call before visiting.
                      Gate code 4471.
                    reported_date: '2026-09-28'
                    contact_date: '2026-09-29'
                    inspection_date: '2026-10-02'
                    loss:
                      date: '2026-09-27'
                      peril: flood
                    policy:
                      number: '8705123456'
                      form: dwelling
                      program: nfip
                      effective_date: '2026-03-15'
                      expiration_date: '2027-03-15'
                    carrier:
                      name: Gulf Coast Mutual Insurance
                      phone: '8005550199'
                      email: claims@gulfcoastmutual.example.com
                      address:
                        street: 2100 Harbour Island Boulevard, Suite 300
                        city: Tampa
                        state: FL
                        zip: '33602'
                    loss_location:
                      street: 418 Bayshore Drive
                      city: Tampa
                      state: FL
                      zip: '33606'
                      latitude: 27.9312
                      longitude: -82.4871
                    policyholder:
                      first_name: Maria
                      last_name: Delgado
                      phone: '8135550142'
                      secondary_phone: '8135550178'
                      email: maria.delgado@example.com
                      mailing_address:
                        street: 1200 W Platt Street, Apt 4
                        city: Tampa
                        state: FL
                        zip: '33606'
                    additional_contacts:
                      - type: additional_policyholder
                        first_name: Luis
                        last_name: Delgado
                        phone: '8135550143'
                    agent:
                      name: Coastal Insurance Agency
                      phone: '8135550120'
                      email: service@coastal-agency.example.com
                    mortgagee:
                      name: Suncoast Federal Credit Union
                    building:
                      occupancy_type: single_family_home
                      building_type: main_dwelling
                      foundation_type: slab_on_grade
                      number_of_floors: 2
                      firm_status: post_firm
                      firm_date: '1982-06-18'
                      construction_date: '1996-04-01'
                      flood_zone: AE
                      community_number: '120114'
                      map_panel_number: 12057C0354J
                      construction_type: masonry
                      number_of_units: 1
                      first_floor_height_feet: 1
                      first_floor_height_inches: 6
                      flood_opening_count: 0
                    coverages:
                      building:
                        limit: 250000
                        deductible: 2000
                      contents:
                        limit: 100000
                        deductible: 2000
                      special_limits_cap: 2500
                    estimate:
                      contents_tax_rate: 0.07
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - apiKey:
            - claims:read
components:
  parameters:
    ClaimId:
      name: id
      in: path
      required: true
      description: OSA's claim id, as returned in the claim's `id`.
      schema:
        type: string
        format: uuid
      examples:
        claim:
          summary: A claim id
          value: 3f8a2c61-5b7e-4d2a-9c1e-7a4b2d9e6f10
  headers:
    RequestId:
      description: >
        The id of this request. Quote it to OSA support. On error responses it
        equals

        `request_id` in the body.
      required: true
      schema:
        type: string
      examples:
        request_id:
          summary: A request id
          value: 7f3e9a1c2b4d6e8f0a1b3c5d7e9f1a2b
    RetryAfter:
      description: Seconds to wait before retrying.
      required: true
      schema:
        type: integer
        minimum: 1
      examples:
        seconds:
          summary: Retry in 12 seconds
          value: 12
  schemas:
    Claim:
      type: object
      description: >
        A claim as you sent it, with OSA's id, your `external_id`, and the
        current assignment.

        Optional fields you didn't send are omitted. Adjusters' later edits in
        the app don't

        change these fields.
      required:
        - id
        - external_id
        - claim_number
        - test
        - created_at
        - updated_at
        - assignment
        - loss
        - policy
        - carrier
        - loss_location
        - policyholder
      properties:
        id:
          type: string
          format: uuid
          description: OSA's id for the claim.
        external_id:
          type: string
          description: Your own id for the claim.
        claim_number:
          type: string
          description: The carrier's claim number.
        test:
          type: boolean
          description: >
            `true` for a test claim: one sent with a test key to a test account.
            Test claims are

            never billed. The value never changes.
        created_at:
          type: string
          format: date-time
          description: When the claim was created.
        updated_at:
          type: string
          format: date-time
          description: >
            When something you can see last changed: creation, an offer, an
            acceptance or a

            rejection. This is the field `updated_since` filters on.
        assignment:
          $ref: '#/components/schemas/Assignment'
        file_number:
          type: string
          description: Your firm's file number.
        instructions:
          type: string
          description: Your notes for the adjuster.
        reported_date:
          type: string
          format: date
          description: The date the loss was reported to the carrier.
        contact_date:
          type: string
          format: date
          description: The date the policyholder was contacted, as you sent it.
        inspection_date:
          type: string
          format: date
          description: The date of the inspection, as you sent it.
        loss:
          $ref: '#/components/schemas/LossOut'
        policy:
          $ref: '#/components/schemas/PolicyOut'
        carrier:
          $ref: '#/components/schemas/CarrierOut'
        loss_location:
          $ref: '#/components/schemas/LossLocationOut'
        policyholder:
          $ref: '#/components/schemas/Policyholder'
        additional_contacts:
          type: array
          description: Other people or companies involved in the claim.
          items:
            $ref: '#/components/schemas/AdditionalContact'
        agent:
          $ref: '#/components/schemas/AgentOut'
        mortgagee:
          $ref: '#/components/schemas/MortgageeOut'
        building:
          $ref: '#/components/schemas/BuildingOut'
        coverages:
          $ref: '#/components/schemas/CoveragesOut'
        estimate:
          $ref: '#/components/schemas/EstimateOut'
    Assignment:
      type: object
      description: >
        The latest offer of the claim to an adjuster. When you offer the claim
        to someone else,

        this describes the new offer and the earlier response is no longer
        shown.
      required:
        - status
        - adjuster_osa_id
        - responded_at
        - rejection_reason
      properties:
        status:
          $ref: '#/components/schemas/AssignmentStatus'
        adjuster_osa_id:
          type:
            - string
            - 'null'
          description: >
            The adjuster the claim was offered to. On a rejected claim, this is
            the adjuster who

            rejected it. `null` when the claim isn't currently offered to anyone
            (`unassigned`).
        responded_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            When the adjuster accepted or rejected the claim; `null` while
            pending.
        rejection_reason:
          type:
            - string
            - 'null'
          description: >-
            The reason the adjuster gave for rejecting, if any. `null` unless
            rejected; optional even then.
    LossOut:
      type: object
      description: The loss being claimed.
      required:
        - date
        - peril
      properties:
        date:
          type: string
          format: date
          description: The date of loss at the loss location, exactly as you sent it.
        peril:
          type: string
          description: The cause of loss.
          enum:
            - flood
    PolicyOut:
      type: object
      description: The insurance policy, as you sent it.
      required:
        - number
      properties:
        number:
          type: string
          description: The policy number.
        form:
          type: string
          description: The policy form.
          enum:
            - dwelling
            - dwelling_gfip
            - general_property
            - rcbap
        program:
          type: string
          description: The policy program.
          enum:
            - nfip
            - private
            - other
        effective_date:
          type: string
          format: date
          description: The date the policy term starts.
        expiration_date:
          type: string
          format: date
          description: The date the policy term ends.
        edn:
          type: string
          description: >-
            The Event Designation Number (EDN) of the flood event, as you sent
            it.
    CarrierOut:
      type: object
      description: The insurance carrier, as you sent it.
      required:
        - name
      properties:
        name:
          type: string
          description: The carrier's name.
        phone:
          type: string
          description: The carrier's claims phone number.
        email:
          type: string
          description: The carrier's claims email address.
        address:
          $ref: '#/components/schemas/AddressOut'
          description: The carrier's mailing address.
    LossLocationOut:
      type: object
      description: The address of the insured property, as you sent it.
      required:
        - street
        - city
        - state
        - zip
      properties:
        street:
          type: string
          description: Street address.
        city:
          type: string
          description: City.
        state:
          $ref: '#/components/schemas/State'
        zip:
          type: string
          description: ZIP code.
        latitude:
          type: number
          description: Latitude, if you sent it.
        longitude:
          type: number
          description: Longitude, if you sent it.
    Policyholder:
      type: object
      description: The policyholder, as you sent it.
      properties:
        first_name:
          type: string
          description: First name.
        last_name:
          type: string
          description: Last name.
        company_name:
          type: string
          description: Company name.
        phone:
          type: string
          description: Primary phone number.
        secondary_phone:
          type: string
          description: Another phone number.
        email:
          type: string
          description: Email address.
        mailing_address:
          $ref: '#/components/schemas/AddressOut'
          description: Mailing address.
    AdditionalContact:
      type: object
      description: Another person or company involved in the claim, as you sent it.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/ContactType'
        first_name:
          type: string
          description: First name.
        last_name:
          type: string
          description: Last name.
        company_name:
          type: string
          description: Company name.
        phone:
          type: string
          description: Primary phone number.
        secondary_phone:
          type: string
          description: Another phone number.
        email:
          type: string
          description: Email address.
        has_representation_letter:
          type: boolean
          description: Whether a letter of representation is on file for this contact.
    AgentOut:
      type: object
      description: The agent, as you sent it.
      properties:
        name:
          type: string
          description: Agent or agency name.
        phone:
          type: string
          description: Phone number.
        email:
          type: string
          description: Email address.
    MortgageeOut:
      type: object
      description: The mortgage company, as you sent it.
      required:
        - name
      properties:
        name:
          type: string
          description: Mortgage company name.
    BuildingOut:
      type: object
      description: The building details, as you sent them.
      properties:
        occupancy_type:
          type: string
          description: The NFIP occupancy type.
          enum:
            - single_family_home
            - residential_unit
            - residential_manufactured_home
            - two_to_four_family_building
            - residential_condo_building
            - other_residential_building
            - non_residential_building
            - non_residential_unit
            - non_residential_manufactured_home
        building_type:
          type: string
          description: The kind of building.
          enum:
            - main_dwelling
            - detached_guest_house
            - apartment_unit
            - entire_apartment_building
            - cooperative_unit
            - entire_cooperative_building
            - residential_condo_unit_residential
            - residential_condo_unit_non_residential
            - entire_residential_condo_building
            - other_dwelling_type
            - agricultural_building
            - commercial_building
            - government_owned_building
            - house_of_worship_building
            - recreation_building
            - detached_garage
            - storage_or_tools_shed
            - other_non_residential_type
            - manufactured_home
            - travel_trailer
        foundation_type:
          type: string
          description: The foundation type.
          enum:
            - slab_on_grade
            - basement
            - crawlspace
            - elevated_no_enclosure
            - elevated_with_enclosure_open
            - elevated_with_enclosure_walls
        number_of_floors:
          type: integer
          description: Number of floors.
        firm_status:
          type: string
          description: >
            The building's FIRM status. `pre_firm`: built or substantially
            improved on or before

            31 December 1974, or before the community's initial Flood Insurance
            Rate Map (FIRM)

            took effect, whichever is later. `post_firm`: built or substantially
            improved after

            that.
          enum:
            - pre_firm
            - post_firm
        firm_date:
          type: string
          format: date
          description: >-
            The effective date of the community's initial Flood Insurance Rate
            Map (FIRM).
        construction_date:
          type: string
          format: date
          description: The date the building was built.
        flood_zone:
          $ref: '#/components/schemas/FloodZone'
          description: The building's flood zone.
        community_number:
          type: string
          description: The NFIP community number.
        map_panel_number:
          type: string
          description: The flood map panel number.
        construction_type:
          type: string
          description: How the building is built.
          enum:
            - framed
            - masonry
            - other
        number_of_units:
          type: integer
          description: Number of units.
        first_floor_height_feet:
          type: integer
          description: The first floor height, whole feet.
        first_floor_height_inches:
          type: integer
          description: The inches part of the first floor height.
        flood_opening_count:
          type: integer
          description: Number of flood openings.
    CoveragesOut:
      type: object
      description: Coverage limits and deductibles, as you sent them.
      properties:
        building:
          $ref: '#/components/schemas/CoverageAmountsOut'
          description: Building property coverage (NFIP Coverage A).
        contents:
          $ref: '#/components/schemas/CoverageAmountsOut'
          description: Personal property coverage (NFIP Coverage B).
        other:
          $ref: '#/components/schemas/CoverageAmountsOut'
          description: >-
            Coverage for anything not covered under the building or contents
            coverage, as you sent it.
        special_limits_cap:
          type: number
          description: The cap on special limits items, in US dollars.
    EstimateOut:
      type: object
      description: The estimate figures, as you sent them.
      properties:
        contents_tax_rate:
          type: number
          description: The tax rate for contents, as a fraction. `0.07` means 7%.
    Problem:
      type: object
      description: >
        An RFC 9457 problem details object. Match on `code`, which is stable;
        `title` and

        `detail` are for people and may change. Quote `request_id` when
        contacting support.
      required:
        - type
        - title
        - status
        - detail
        - code
        - request_id
      properties:
        type:
          type: string
          format: uri
          description: A link to this error's documentation.
        title:
          type: string
          description: A short summary of the error.
        status:
          type: integer
          description: The HTTP status code.
        detail:
          type: string
          description: What went wrong in this request.
        code:
          type: string
          description: >
            The stable error code. `malformed_request` (400); `invalid_key`
            (401);

            `insufficient_scope`, `not_in_plan` (403); `not_found` (404);
            `duplicate_claim`,

            `claim_already_accepted`, `already_member`, `invitation_pending`
            (409);

            `payload_too_large` (413); `validation_failed`,
            `idempotency_key_reused`,

            `unknown_osaid`, `adjuster_not_in_firm`, `adjuster_not_accepting`,

            `environment_mismatch` (422); `rate_limited` (429); `internal_error`
            (500). New codes

            may be added.
          enum:
            - malformed_request
            - invalid_key
            - insufficient_scope
            - not_in_plan
            - not_found
            - duplicate_claim
            - claim_already_accepted
            - already_member
            - invitation_pending
            - payload_too_large
            - validation_failed
            - idempotency_key_reused
            - unknown_osaid
            - adjuster_not_in_firm
            - adjuster_not_accepting
            - environment_mismatch
            - rate_limited
            - internal_error
        request_id:
          type: string
          description: The id of this request. Quote it when contacting support.
        errors:
          type: array
          description: For `validation_failed`, each invalid field, parameter or header.
          items:
            type: object
            description: >-
              One problem. Exactly one of `pointer`, `parameter` or `header`
              says where.
            required:
              - detail
            properties:
              pointer:
                type: string
                description: >-
                  JSON Pointer to a body field, for example `/loss/date`. Empty
                  for the whole body.
              parameter:
                type: string
                description: The name of a query or path parameter, for example `limit`.
              header:
                type: string
                description: The name of a request header, for example `Idempotency-Key`.
              detail:
                type: string
                description: What is wrong with it.
        existing_claim_id:
          type: string
          format: uuid
          description: >-
            For `duplicate_claim`, the id of the claim that already exists.
            Always a claim your key can read.
        existing_claim_url:
          type: string
          format: uri
          description: >-
            For `duplicate_claim`, the API link to the claim that already
            exists. Always a claim your key can read.
    AssignmentStatus:
      type: string
      description: >
        Where the latest offer stands. `pending_acceptance`: the adjuster hasn't
        answered yet.

        `accepted`: the adjuster accepted the claim. `rejected`: the adjuster
        rejected it; you

        can offer it to another adjuster. `unassigned`: the claim isn't
        currently offered to

        anyone; you can offer it to an adjuster.
      enum:
        - pending_acceptance
        - accepted
        - rejected
        - unassigned
      examples:
        - pending_acceptance
    AddressOut:
      type: object
      description: A US postal address.
      required:
        - street
        - city
        - state
        - zip
      properties:
        street:
          type: string
          description: Street address.
        city:
          type: string
          description: City.
        state:
          $ref: '#/components/schemas/State'
        zip:
          type: string
          description: ZIP code.
    State:
      type: string
      description: >
        Two-letter USPS code: the 50 states, `DC`, and the US territories `AS`
        (American Samoa),

        `GU` (Guam), `MP` (Northern Mariana Islands), `PR` (Puerto Rico) and
        `VI` (US Virgin

        Islands).
      enum:
        - AL
        - AK
        - AZ
        - AR
        - CA
        - CO
        - CT
        - DE
        - DC
        - FL
        - GA
        - HI
        - ID
        - IL
        - IN
        - IA
        - KS
        - KY
        - LA
        - ME
        - MD
        - MA
        - MI
        - MN
        - MS
        - MO
        - MT
        - NE
        - NV
        - NH
        - NJ
        - NM
        - NY
        - NC
        - ND
        - OH
        - OK
        - OR
        - PA
        - RI
        - SC
        - SD
        - TN
        - TX
        - UT
        - VT
        - VA
        - WA
        - WV
        - WI
        - WY
        - AS
        - GU
        - MP
        - PR
        - VI
      examples:
        - FL
    ContactType:
      type: string
      description: >
        The contact's relationship to the claim. `additional_policyholder`,
        `law_firm`,

        `power_of_attorney`, `principal`, `relative`, `translator` or `other`.
      enum:
        - additional_policyholder
        - law_firm
        - power_of_attorney
        - principal
        - relative
        - translator
        - other
    FloodZone:
      type: string
      description: >
        A flood zone from the Flood Insurance Rate Map, written as FEMA writes
        it: `A`, `AE`,

        `A1` to `A30`, `A99`, `AH`, `AO`, `AR`, `V`, `VE`, `V1` to `V30`, `B`,
        `C`, `D` and `X`.
      enum:
        - A
        - AE
        - A1
        - A2
        - A3
        - A4
        - A5
        - A6
        - A7
        - A8
        - A9
        - A10
        - A11
        - A12
        - A13
        - A14
        - A15
        - A16
        - A17
        - A18
        - A19
        - A20
        - A21
        - A22
        - A23
        - A24
        - A25
        - A26
        - A27
        - A28
        - A29
        - A30
        - A99
        - AH
        - AO
        - AR
        - V
        - VE
        - V1
        - V2
        - V3
        - V4
        - V5
        - V6
        - V7
        - V8
        - V9
        - V10
        - V11
        - V12
        - V13
        - V14
        - V15
        - V16
        - V17
        - V18
        - V19
        - V20
        - V21
        - V22
        - V23
        - V24
        - V25
        - V26
        - V27
        - V28
        - V29
        - V30
        - B
        - C
        - D
        - X
      examples:
        - AE
        - X
    CoverageAmountsOut:
      type: object
      description: A coverage limit and its deductible.
      properties:
        limit:
          type: number
          description: The coverage limit, in US dollars.
        deductible:
          type: number
          description: The deductible, in US dollars.
  responses:
    Unauthorized:
      description: >
        The key is missing, malformed, unknown, revoked or expired
        (`invalid_key`).
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            invalid_key:
              summary: invalid_key
              value:
                type: https://docs.osaconnection.com/errors#invalid_key
                title: Invalid API key
                status: 401
                detail: The API key is missing, malformed, revoked or expired.
                code: invalid_key
                request_id: 7f3e9a1c2b4d6e8f0a1b3c5d7e9f1a2b
    Forbidden:
      description: >
        The key is valid but can't do this. `insufficient_scope`: the key's
        purpose doesn't

        include the permission this operation needs. `not_in_plan`: your firm's
        plan doesn't

        include it.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            insufficient_scope:
              summary: insufficient_scope
              value:
                type: https://docs.osaconnection.com/errors#insufficient_scope
                title: Insufficient scope
                status: 403
                detail: This key doesn't have the claims:write permission.
                code: insufficient_scope
                request_id: 0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e
            not_in_plan:
              summary: not_in_plan
              value:
                type: https://docs.osaconnection.com/errors#not_in_plan
                title: Not in plan
                status: 403
                detail: Your firm's plan doesn't include adjuster invitations.
                code: not_in_plan
                request_id: 1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f
    NotFound:
      description: >
        Nothing with this id exists in your firm, or your key can't see it
        (`not_found`).

        Another firm's claim, and a real claim requested with a test key, both
        return this.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            not_found:
              summary: not_found
              value:
                type: https://docs.osaconnection.com/errors#not_found
                title: Not found
                status: 404
                detail: No claim with this id exists in your firm.
                code: not_found
                request_id: 2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a
    ValidationFailed:
      description: >
        The request is invalid (`validation_failed`): a missing, unknown or
        invalid body field,

        query parameter, path parameter or header. `errors` lists each problem:
        `pointer` for a

        body field, `parameter` for a query or path parameter, `header` for a
        header.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            validation_failed:
              summary: validation_failed
              value:
                type: https://docs.osaconnection.com/errors#validation_failed
                title: Validation failed
                status: 422
                detail: The request has 1 invalid field.
                code: validation_failed
                request_id: 8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a
                errors:
                  - parameter: limit
                    detail: must be <= 200
    RateLimited:
      description: >
        Too many requests for this key (`rate_limited`). Wait for the number of
        seconds in

        `Retry-After`, then retry.
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            rate_limited:
              summary: rate_limited
              value:
                type: https://docs.osaconnection.com/errors#rate_limited
                title: Rate limited
                status: 429
                detail: This key has exceeded 300 requests per minute.
                code: rate_limited
                request_id: 9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f
    InternalError:
      description: >
        Something failed on OSA's side (`internal_error`). Retry with
        exponential backoff; for

        `POST` requests, reuse the same `Idempotency-Key`. If it persists,
        contact OSA with the

        `request_id`.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            internal_error:
              summary: internal_error
              value:
                type: https://docs.osaconnection.com/errors#internal_error
                title: Internal error
                status: 500
                detail: Something went wrong on our side. Retry later.
                code: internal_error
                request_id: 2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: osa_live_… or osa_test_…
      description: >
        Send your API key as a bearer token: `Authorization: Bearer osa_live_…`.

        Keys are opaque; each belongs to exactly one firm and one purpose. Keys
        starting with

        `osa_test_` reach only test claims and test accounts. The scopes listed
        on each

        operation are the permissions the key needs; `GET /v1/me` shows the ones
        your key has.

````

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