> ## 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.

# Claim details

> The optional details you can send with a claim, where the adjuster sees them, and the two rules that compare one field with another.

A claim needs only a few fields: your `external_id`, the claim number, the adjuster, the date of loss, the policy number, the carrier's name, the loss location and the policyholder (a first and last name or a company name, and a phone number or an email address). Everything on this page is **optional**. Send what your claims system knows, and the adjuster starts with it already filled in instead of typing it.

The [API reference](/api-reference/claims/send-a-claim-to-an-adjuster) lists every field of a claim. This page explains the building, flood map, date, coverage and estimate details, and the two combinations the API refuses. Carrier details have [their own page](/carrier-details).

## Where the adjuster sees them

In the OSA app, an accepted claim has a **Back Office** screen that holds the claim's details. Each field on this page fills in the Back Office field named in the tables below. The adjuster can still change any of them in the app.

## Building and flood map details

These go inside `building` and appear under **Building/Rating Information** in Back Office.

| Field | What to send | Shown in the app as |
| - | - | - |
| `building.firm_status` | `pre_firm` or `post_firm`. See [FIRM status](#firm-status) | Flood Firm Status |
| `building.firm_date` | A date, `YYYY-MM-DD`: the effective date of the community's initial Flood Insurance Rate Map (FIRM) | Firm Date |
| `building.construction_date` | A date, `YYYY-MM-DD`: the date the building was built | Date of Construction |
| `building.flood_zone` | One of the [flood zones](#flood-zones) | Flood Zone |
| `building.community_number` | Text, up to 20 characters: the National Flood Insurance Program (NFIP) community number from the flood map | Community Map |
| `building.map_panel_number` | Text, up to 20 characters: the flood map panel number | Map Panel |
| `building.construction_type` | `framed`, `masonry` or `other` | Construction Type |
| `building.number_of_units` | A whole number from 1 to 100,000: the number of units in the building | Number of Units |
| `building.first_floor_height_feet` | A whole number from 0 to 1,000: the first floor height, whole feet | First Floor Height |
| `building.first_floor_height_inches` | A whole number from 0 to 11: the inches part of the first floor height | First Floor Height |
| `building.flood_opening_count` | A whole number from 0 to 100,000: the number of flood openings in the building | Number of Flood Openings |

A first floor 1 foot 6 inches high is sent as `"first_floor_height_feet": 1, "first_floor_height_inches": 6`.

`building` also takes `occupancy_type` and `building_type`. Only certain pairs of those two are accepted: see [Occupancy and building type](/occupancy-and-building-type).

### FIRM status

FIRM stands for Flood Insurance Rate Map. `building.firm_status` says whether the building dates from before or after its community's first map:

* `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.

### Flood zones

`building.flood_zone` accepts these 72 values. They are written as FEMA writes them on the Flood Insurance Rate Map, in capital letters, and must be sent exactly as listed.

| Zones | Values |
| - | - |
| A zones | `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 zones | `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` |
| Other zones | `B`, `C`, `D`, `X` |

More zones may be added later. Any other value is refused with `422 validation_failed`, so if the zone on your record isn't in the list, leave `flood_zone` out.

## Dates of contact and inspection

These two sit at the top level of the claim, beside `reported_date`, and appear under **Claim Information** in Back Office. Send them when they have already happened, for example on a claim that is being reassigned.

| Field | What to send | Shown in the app as |
| - | - | - |
| `contact_date` | A date, `YYYY-MM-DD`: the date the policyholder was contacted about the claim | Date of Contact |
| `inspection_date` | A date, `YYYY-MM-DD`: the date of the inspection | Date of Inspection |

`inspection_date` fills in the date only. It does not create an appointment in the app.

Like the date of loss, these are calendar dates and are never converted between time zones.

## Coverage and estimate figures

| Field | What to send | Shown in the app as |
| - | - | - |
| `coverages.special_limits_cap` | An amount in US dollars and cents, 0 or more (`2500` or `2500.50`): the cap on special limits items | Special Limits Cap, under **Coverages** |
| `estimate.contents_tax_rate` | A fraction from 0 to 1: the tax rate for contents. `0.07` means 7% | Contents Tax Rate, under **Estimate Parameters** |

* When you don't send `coverages.special_limits_cap`, the app uses the NFIP standard of \$2,500.
* `estimate` is an object of its own at the top level of the claim. Send the tax rate as a fraction, not a percentage: 7% is `0.07`, not `7`. A value above 1 is refused with `422 validation_failed`.

## Example

The optional details on this page, as part of a `POST /v1/claims` body:

```json theme={"system"}
{
  "contact_date": "2026-09-29",
  "inspection_date": "2026-10-02",
  "policy": {
    "number": "8705123456",
    "effective_date": "2026-03-15",
    "expiration_date": "2027-03-15"
  },
  "building": {
    "occupancy_type": "single_family_home",
    "building_type": "main_dwelling",
    "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": {
    "special_limits_cap": 2500
  },
  "estimate": {
    "contents_tax_rate": 0.07
  }
}
```

## Rules that compare two fields

Most validation looks at one field at a time. Two rules compare one field with another. A request that breaks either is refused with `422 validation_failed`, and nothing is created.

1. **Occupancy and building type.** `building.building_type` must go with `building.occupancy_type`. The allowed pairs are in [Occupancy and building type](/occupancy-and-building-type).
2. **Policy dates.** `policy.expiration_date` must not be earlier than `policy.effective_date`. The same day for both is accepted. The rule applies only when you send both dates.

A policy that ends before it starts gets this answer:

```json theme={"system"}
{
  "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": "6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a",
  "errors": [
    {
      "pointer": "/policy/expiration_date",
      "detail": "must not be earlier than effective_date"
    }
  ]
}
```

Match on `code` and on the `pointer` in `errors`. The wording of `detail` may change. See [Errors](/errors#validation_failed).

## Reading them back

`GET /v1/claims/{id}` and `GET /v1/claims` return each of these fields as you sent it. Optional fields you didn't send are left out of the response. The adjuster's later edits in the app don't change what the API returns.


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