---
title: "Send product feedback"
method: POST
path: "/api/feedback"
tags: ["feedback"]
---

# Send product feedback

`POST /api/feedback`

## Request

- Base URL: `https://telawiki.com`
- URL: `https://telawiki.com/api/feedback`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `tela_session`

The one write a `read`-scoped token may perform — so an agent that hit a rough edge can report it without holding write access. Write-only: there is no way to read feedback back through this API.

## Request body

- object
  - `body` string, required
  - `subject` string: Derived from the first line of `body` when omitted.
  - `kind` 'idea' | 'bug' | 'other'
  - `context` object: Free-form. The server merges in its own source and client fields without overwriting yours.

## Response `201`

Recorded.

- object
  - `feedback` Feedback, required
    - `id` integer, required
    - `created_at` string, required: `YYYY-MM-DD HH:MM:SS` in UTC.
    - `created_by_user_id` integer, nullable
    - `created_by_api_key_id` integer, nullable
    - `subject` string, required
    - `body` string, required
    - `kind` 'idea' | 'bug' | 'other' | 'null', nullable, required
    - `source` 'web' | 'api' | 'mcp', required: Derived from the credential used: `web` for a session, `api` for a token, `mcp` for the MCP tool.
    - `context` object, required

## Other responses

- `400`: Malformed request. `code` is usually `bad_request` or `invalid_json`.
- `401`: `unauthorized` — no valid credential. A malformed bearer token never falls back to the session cookie.
- `500`: `internal` — server error.

---

[API](https://skmtc.dev/telawiki/apis/tela-rest-api.md) · [All operations](https://skmtc.dev/telawiki/apis/tela-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/telawiki/apis/tela-rest-api/revisions/f316f31f6fcb?raw)
