---
title: "Record that you walked another member through the SOP"
method: POST
path: "/api/headsets/sop-complete"
tags: ["headsets"]
---

# Record that you walked another member through the SOP

`POST /api/headsets/sop-complete`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/headsets/sop-complete`
- Auth: one of:
  - API key in cookie `__session`
  - HTTP bearer

Clerk session, or agt_ token with `headsets:lend` (live tier re-checked). The CALLER must already be attested. Records the runthrough for `subject_user_id`; it is deliberately a separate event from the sign-off (POST /api/headsets/attest) so the audit trail keeps both timestamps. You cannot name yourself as the subject.

## Request body

- HeadsetSopCompleteRequest
  - `subject_user_id` string, required: Clerk user id of the member you walked through the SOP. May not be yourself.

## Response `200`

SOP runthrough recorded.

- HeadsetAttestationResponse
  - `ok` boolean, required
  - `record` HeadsetAttestationRecord, required: The stored attestation for one member — who signed them off, when, and any notes.
    - `subject_user_id` string
    - `subject_name` string
    - `by_user_id` string
    - `by_name` string
    - `notes` string
    - `attested` boolean
    - `attested_at` string, date-time
    - `sop_completed_at` string, date-time

## Other responses

- `400`: Invalid JSON, missing subject_user_id, or the subject is the caller.
- `401`: No auth.
- `403`: The caller is not attested.

---

[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)
