---
title: "Submit feedback"
method: POST
path: "/api/feedback"
tags: ["businesses"]
---

# Submit feedback

`POST /api/feedback`

## Request

- Base URL: `https://api.mymarky.ai`
- URL: `https://api.mymarky.ai/api/feedback`
- Auth: HTTP bearer

Submit a bug report, feature request, or general feedback.

Works from agents, scripts, or any API consumer. Feedback is stored
and routed to the support team.

Send an `Idempotency-Key` header to make a retry safe (a resend with the same
key returns the original submission instead of filing a duplicate).

Errors:
    401 authentication_required: API key or token is missing, invalid, or revoked.
    403 permission_denied: Your plan does not include API access.
    422 IDEMPOTENCY_KEY_CONFLICT: The Idempotency-Key was reused with a different body.
    429 rate_limit_exceeded: You sent too many requests this minute.

## Headers

- `Idempotency-Key` string, nullable: Optional. Send a unique value (e.g. a UUID) to make this create request safe to retry. A repeat with the same key returns the original response instead of creating a duplicate. Cached for 24h, scoped to your org. Reusing a key with a different body returns 422.
- `Marky-Version` '2026-04-08' | '2026-07-17' | '2026-08-02' | '2026-08-04' | '2026-08-06'

## Request body

- FeedbackRequest
  - `type` 'bug' | 'feature' | 'feedback', required: Feedback type
  - `message` string, required: Feedback message
  - `context` FeedbackContext: Optional context attached to a feedback submission. The common fields are documented so an API consumer knows what to send, but `extra="allow"` keeps it open: a caller can attach any additional keys (their own debug fields) without us rejecting the request. The whole object is stored as-is on the feedback row.
    - `page_url` string, nullable: URL the user was on when they sent feedback.
    - `error_details` string, nullable: Any error text or stack trace relevant to the report.
    - `environment` string, nullable: Where this came from (e.g. 'production', 'n8n', a script name).

## Response `201`

Successful Response

- FeedbackResponse
  - `id` string, required: Feedback record ID
  - `status` string: Feedback status

## Other responses

- `400`: Bad request — the input was malformed or otherwise invalid.
- `401`: Authentication failed — the API key is missing or invalid.
- `422`: Validation error — one or more fields failed validation.
- `429`: Rate limited — retry after the window resets (see Retry-After).
- `500`: Server error — something failed on our side; retry or quote X-Request-Id.

---

[API](https://skmtc.dev/mymarky/apis/marky-public-api.md) · [All operations](https://skmtc.dev/mymarky/apis/marky-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mymarky/apis/marky-public-api/revisions/25aeacae455c?raw)
