/api/public/v1/feedbackfeedback.submit
Report a bug, friction, unclear docs, an improvement idea or a question to the Browlix team as a ticket; once per distinct issue, never secrets — same issue from you within 24 h joins the open ticket.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
command_idbody | string (uuid) | Yes | Client-generated UUID for this command. Send the same id (and body) again to get the stored receipt instead of a second change; a different body under the same id is CONFLICT. |
categorybody | "bug" | "friction" | "feature_request" | "docs" | "question" | "praise" | Yes | bug · friction (worked but awkward or slow) · feature_request · docs · question · praise |
summarybody | string | Yes | One line, like an issue title (min length 1, max length 160) |
descriptionbody | string | Yes | What you tried and what happened; redacted evidence only, never secrets or full transcripts (min length 1, max length 6000) |
severitybody | "low" | "medium" | "high" | "critical" | No | Your own estimate |
related_operationbody | string | No | API operation id involved, e.g. sessions.start (max length 120) |
related_toolbody | string | No | MCP tool name involved, e.g. sessions_start (max length 120) |
related_request_idbody | string (uuid) | No | correlation_id of the request involved (kept only if it belongs to this workspace) |
related_command_idbody | string (uuid) | No | command_id of the write involved (kept only if it belongs to this workspace) |
related_correlation_idbody | string (uuid) | No | Another correlation_id involved |
expectedbody | string | No | (max length 1000) |
actualbody | string | No | (max length 1000) |
stepsbody | array<string> | No | Steps to reproduce (max 10 items) |
docs_urlbody | string (uri) | No | Docs page this is about (max length 500) |
ratingbody | integer | No | How the experience felt, 1–5 (min 1, max 5) |
clientbody | object | No | Your client (self-declared), e.g. Cursor 1.7 |
modelbody | object | No | Your model (self-declared) |
Examples
curl -X POST "https://browlix.com/api/public/v1/feedback" \
-H "Authorization: Bearer $BROWLIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"command_id":"<uuid>","category":"bug","summary":"<summary>","description":"<description>"}'Response
201 with { data, replayed: false, correlation_id } the first time; 200 with replayed: true when the same command_id and body come again.
| Field | Type | Always present | Description |
|---|---|---|---|
| data | object | Yes | |
| data.id | string (uuid) | Yes | |
| data.ref | string | Yes | Human reference, e.g. FB-12 |
| data.number | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data.status | "new" | "triaged" | "in_progress" | "answered" | "resolved" | "closed" | "duplicate" | "wont_fix" | Yes | |
| data.category | "bug" | "friction" | "feature_request" | "docs" | "question" | "praise" | Yes | |
| data.summary | string | Yes | |
| data.description | string | Yes | Stored after redaction |
| data.severity | "low" | "medium" | "high" | "critical" | null | Yes | |
| data.priority | string | null | Yes | |
| data.reporter | string | Yes | |
| data.interface | string | Yes | |
| data.revision | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data.related | object | Yes | |
| data.client | object | Yes | |
| data.model | object | Yes | |
| data.steps | array<string> | Yes | |
| data.expected | string | null | Yes | |
| data.actual | string | null | Yes | |
| data.docs_url | string | null | Yes | |
| data.rating | integer | null | Yes | |
| data.duplicate_of | string (uuid) | object | null | Yes | |
| data.resolution_note | string | null | Yes | |
| data.dedup_count | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data.submitted_by_key | boolean | Yes | |
| data.redaction_version | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data.created_at | string (date-time) | Yes | |
| data.updated_at | string (date-time) | Yes | |
| data.last_activity_at | string (date-time) | Yes | |
| data.answered_at | string (date-time) | null | Yes | |
| data.closed_at | string (date-time) | null | Yes | |
| data.deduplicated | boolean | Yes | true when this matched an open ticket of yours and was counted on it |
| correlation_id | string (uuid) | Yes | |
| replayed | boolean | No | true when this command_id was already applied and the stored receipt came back |
Errors
| Code | HTTP | Retryable |
|---|---|---|
| UNAUTHENTICATED | 401 | No |
| FORBIDDEN | 403 | No |
| RATE_LIMITED | 429 | Yes |
| VALIDATION_FAILED | 422 | No |
| CONFLICT | 409 | No |
| OUTCOME_UNKNOWN | 202 | Yes |
| DEPENDENCY_UNAVAILABLE | 503 | Yes |
| UNKNOWN | 500 | No |
