Skip to main content
Errors use RFC 9457 problem details with the content type application/problem+json:
New codes may be added. Treat an unknown code by its HTTP status.

Error codes

malformed_request

The body isn’t valid JSON, or couldn’t be read. Check that you send Content-Type: application/json and a complete JSON document.

invalid_key

Check the Authorization: Bearer … header and that the key hasn’t been revoked. If it was rotated, use the new key.

insufficient_scope

The key works but wasn’t issued for this operation. GET /v1/me lists its permissions. Use a key issued for this purpose, or ask OSA to change it.

not_in_plan

Your firm’s plan doesn’t include this capability. Contact OSA about your plan.

not_found

The id doesn’t exist in your firm. Another firm’s claim, and a real claim requested with a test key, also return this. For DELETE /v1/adjusters/invitations/{osa_id}, it means there is no pending invitation for that OSAID.

duplicate_claim

In the key’s environment, your firm already has a claim with this external_id, or an open claim sent through the API with this claim_number. Test and live claims are checked separately and never collide. existing_claim_id and existing_claim_url always point to a claim your key can read: use it instead of creating a new claim.

claim_already_accepted

The adjuster accepted the claim, so it can’t be offered to someone else. Reassigning accepted claims isn’t supported yet.

already_member

The adjuster has already accepted an invitation to your firm. There is nothing to invite or withdraw.

invitation_pending

You already invited this adjuster and they haven’t answered. Ask them to open the OSA app, or withdraw the invitation and send a new one.

payload_too_large

Request bodies are limited to 1 MB. Files never go through the API.

validation_failed

The request doesn’t match the API reference: a missing or unknown body field, an unknown query parameter, a wrong type or format, leading or trailing spaces in external_id or claim_number, or a missing Idempotency-Key header. errors lists each problem. It also covers the two rules that compare one field with another when you send a claim:
  • a building.building_type that doesn’t go with building.occupancy_type, or that isn’t a residential type when no occupancy type is sent. The pointer is /building/building_type. See Occupancy and building type.
  • a policy.expiration_date earlier than policy.effective_date. The pointer is /policy/expiration_date. See Claim details.

idempotency_key_reused

This Idempotency-Key was already used, within the last 24 hours, for a different request (a different method, path or body). Generate a new key for each new operation, and reuse a key only to retry exactly the same request.

unknown_osaid

No OSA user has this OSAID. Check it with the adjuster: an OSAID exists once they have signed in to the OSA app, and they can read it there. With a test key, every OSAID that isn’t one of your firm’s test accounts gets this code.

adjuster_not_in_firm

The adjuster hasn’t joined your firm, or is no longer active in it. Invite them and wait for them to accept. Real adjusters are invisible to test keys, so a test key naming one also gets this code.

adjuster_not_accepting

The adjuster is in your firm but can’t take claims right now: they don’t have the permission to accept claims, or they have paused assignments. Choose another adjuster. The API has no way to check this in advance; handle it when it happens.

environment_mismatch

Live keys can’t send or offer claims to test accounts, can’t invite test accounts, and can’t offer test claims. Use your test key for test claims and test accounts. See Testing.

rate_limited

Wait for the number of seconds in the Retry-After header, then retry. See Limits.

internal_error

Something failed on OSA’s side. Retry with exponential backoff, reusing the same Idempotency-Key for POST requests; if it persists, contact OSA with the request_id. Other 5xx responses (for example from the network in front of the API) may not have a problem body; treat them the same way.