---
title: "Feedback API"
description: "Send product feedback with screenshots and other images so our team can see what you mean."
canonical_url: https://lyricwinter.com/docs/api/feedback
markdown_url: https://lyricwinter.com/docs/api/feedback.md
last_updated: 2026-10-08
status: beta
---
# LyricWinter API reference: Feedback

> Send product feedback with screenshots and other images so our team can see what you mean.

The LyricWinter API is in beta. Base URL: `https://lyricwinter.com/api/v1`. Authenticate every request with `Authorization: Bearer lw_...`. Successful responses are wrapped as `{ "data": ..., "request_id": "req_..." }`. Machine-readable contract: https://lyricwinter.com/api/v1/openapi.json.

## Endpoints

- [Send feedback and images](https://lyricwinter.com/docs/api/feedback#submit-feedback): `POST /feedback`

### Send feedback and images

`POST /feedback`

Scope: `feedback:write` · Operation ID: `submitFeedback`

Send feedback text as JSON, or use multipart/form-data to attach up to five PNG, JPEG, or WebP images by repeating the images field. Each image can be up to 5 MiB, with 15 MiB total and 32 megapixels per image. Screenshots can include circles or other annotations. Images are stored privately with your feedback. Sign in to use your account email, or supply replyEmail so our team can reply.

#### Request body (application/json, required)

- `replyEmail` (string, email, max 254 chars; optional): Required when authentication does not provide an account email. Trimmed and stored privately; never added to Discord notifications. Authenticated account email takes precedence.
- `message` (string, 1–2000 chars; required): Feedback text. The service trims whitespace before storage and Discord forwarding.
- `type` (string, default "general", one of `bug`, `feature`, `general`, `improvement`; optional)
- `source` (string, 2–64 chars, pattern ^[a-z][a-z0-9_]*$, default "global"; optional): Stable identifier for the originating product surface and client.

#### Response 201

Feedback was stored. Discord forwarding is best-effort and not reflected in this response.

Fields inside `data`:

- `success` (true; required)
- `message` (string; required)
- `id` (string; required): Inserted feedback row id.

Errors: `400`, `401`, `429`, `500`, `503` return the standard error envelope.

#### Example request

```bash
curl -X POST "https://lyricwinter.com/api/v1/feedback" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "message": "string"
}'
```

