---
title: "POST /v2/users/{user_id}/reports"
method: POST
path: "/v2/users/{user_id}/reports"
tags: ["Social Safety"]
---

# POST /v2/users/{user_id}/reports

`POST /v2/users/{user_id}/reports`

## Request

- Base URL: `https://api.arbital.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.arbital.xyz/v2/users/{user_id}/reports`
- Auth: HTTP bearer

Idempotently records a private report for the authenticated reporter, canonical target, reported user, and reason tuple. The server verifies target ownership and chat access, captures immutable canonical evidence, and never accepts client-submitted evidence text.

## Path parameters

- `user_id` string, uuid, required

## Request body

- union: Closed report-target union. Supplying only reason reports the profile identified by the path. Content is always resolved canonically by the server.
  - object
    - `reason` 'spam' | 'harassment' | 'impersonation' | 'other', required
  - object
    - `post_id` string, uuid, required
    - `reason` 'spam' | 'harassment' | 'impersonation' | 'other', required
  - object
    - `comment_id` string, uuid, required
    - `reason` 'spam' | 'harassment' | 'impersonation' | 'other', required
  - object
    - `chat_id` string, uuid, required
    - `message_id` string, uuid, required
    - `reason` 'spam' | 'harassment' | 'impersonation' | 'other', required
  - object: Exact native reply and trade UUID. The path user must be its native author. Current trade and ancestry visibility are required even for repeated reports. Immutable native evidence only.
    - `reason` 'spam' | 'harassment' | 'impersonation' | 'other', required
    - `trade_event_id` string, uuid, required
    - `reply_id` string, uuid, required

## Response `200`

Private report acknowledgement

- ReportView
  - `reason` 'spam' | 'harassment' | 'impersonation' | 'other', required
  - `report_id` string, uuid, required
  - `reported_user_id` string, uuid, required

## Other responses

- `400`: Stable machine-readable private social problem
- `401`: Stable machine-readable private social problem
- `404`: Stable machine-readable private social problem
- `408`: Stable machine-readable private social problem
- `409`: Stable machine-readable private social problem
- `413`: Stable machine-readable private social problem
- `429`: Per-principal or anonymous-peer social request budget exhausted
- `503`: Stable machine-readable private social problem

---

[API](https://skmtc.dev/arbital/apis/arbital-api.md) - [All operations](https://skmtc.dev/arbital/apis/arbital-api/llms.txt) - [OpenAPI document](https://skmtc.dev/arbital/apis/arbital-api/revisions/bb0185edf43a?raw)
