---
title: "File a damage / loss / near-miss incident"
method: POST
path: "/api/headsets/report-damage"
tags: ["headsets", "browser-session"]
---

# File a damage / loss / near-miss incident

`POST /api/headsets/report-damage`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/headsets/report-damage`
- Auth: API key in cookie `__session`

Clerk-session only (NOT reachable with an agt_ bearer), ic-member+. Writes the incident record; the Telegram fan-out to ops is done out-of-band by a node-side timer, so a 200 here means RECORDED, not 'someone has seen it'.

## Request body

- HeadsetDamageRequest
  - `type` 'lens' | 'shell' | 'controller' | 'battery' | 'hygiene' | 'loss' | 'near-miss' | 'other', required
  - `reporter_role` 'ops-staff' | 'borrower' | 'member', required
  - `unit` string: The unit involved, if known.
  - `lend_id` string: The lend it happened under, if known.
  - `borrower` string
  - `description` string
  - `photo` string: Data URL or blob reference. Oversized attachments are a 413.
  - `reporter_name` string
  - `reporter_contact` string

## Response `200`

Incident recorded.

- HeadsetDamageResponse
  - `ok` boolean, required
  - `incident_id` string: Quote this to ops when following up.

## Other responses

- `400`: Invalid JSON, unknown `type`, or unknown `reporter_role`.
- `401`: Not signed in.
- `403`: ic-member tier required.
- `413`: Attached photo too large.
- `503`: Incident store unavailable.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
