---
title: "File feedback, a feature request, or a breakage report"
method: POST
path: "/api/agent/feedback"
tags: ["feedback"]
---

# File feedback, a feature request, or a breakage report

`POST /api/agent/feedback`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/agent/feedback`
- Auth: one of:
  - none
  - HTTP bearer

Anonymous-OK (per-IP rate limited, 10/hr). An optional agt_ Bearer (`feedback:submit`) attributes the ticket to your account; a bad token is treated as anonymous rather than refused (low-friction channel).

## Request body

- FeedbackSubmitRequest
  - `kind` 'broken_url' | 'schema_mismatch' | 'stale_doc' | 'endpoint_404' | 'bug_report' | 'other' | 'knowledge_gap' | 'feature_request' | 'praise' | 'complaint' | 'question' | 'suggestion', required
  - `message` string, required
  - `url` string
  - `expected` string
  - `got` string
  - `priority` 'low' | 'normal' | 'high'
  - `category` string
  - `agent_id` string
  - `contact` string

## Response `200`

Ticket accepted.

- FeedbackSubmitResponse
  - `ok` boolean, required
  - `ticket_id` string, required: Quote this when following up.
  - `received_at` string, date-time
  - `authenticated` boolean: True iff a valid Bearer attributed the submission.
  - `message` string
  - `warnings` string[]

## Other responses

- `400`: Empty body, invalid JSON, invalid kind, or validation failure.
- `429`: Per-IP hourly rate limit exceeded.
- `500`: KV write failed.

---

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