---
title: "Submit private API feedback"
method: POST
path: "/v1/feedback"
tags: ["Feedback"]
---

# Submit private API feedback

`POST /v1/feedback`

## Request

- Base URL: `https://api.nano-gpt.com/api`
- URL: `https://api.nano-gpt.com/api/v1/feedback`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Submit a bug, feature request, documentation issue or model-quality report when the user asks, or when a NanoGPT problem is reproducible and blocks the task. Do not submit reports for transient errors, timeouts, rate limits or insufficient balance. The @nanogpt/mcp server exposes this as nanogpt_send_feedback. Requires a valid inference API key and Idempotency-Key. The key's account, or the team that pays for it, must have a balance or an active subscription; other accounts get 403 feedback_requires_funded_account and can use the website. Feedback requests do not incur usage charges. Browser cookies, management credentials, partner tokens and accountless x402 grant no access. All reports are private and are never published to the public feedback board. Support sees each report as submitted through an API key, not as a verified request from the account owner, so it cannot be used to request refunds, balance or account changes. Submission explicitly stores the supplied text; inference no-logging settings do not prevent feedback storage. Never send credentials or full prompts/responses. No logs are fetched or support-access permissions changed. Uncompressed JSON only, at most 16 KiB. Concurrent retries with the same key, Idempotency-Key and normalized fields return the original 201 receipt; changed fields return 409. Deleted or archived reports return 410 rather than being recreated. Quotas include retries: 5 submissions/minute and 20/day per account and per paying account (members of a team share their team's allowance), 60 requests/minute per key, 120/minute per IP, plus a shared daily limit on valid submissions across all accounts (429 feedback_capacity_reached). Aliases: /v1/feedback. Read the current status using GET; receipt acceptance does not promise a fix. Limit automatic retries to three total attempts per failed operation, honoring Retry-After when present and using backoff otherwise; use website support if failures persist.

## Headers

- `Idempotency-Key` string, required

## Request body

- FeedbackInput
  - `type` 'bug' | 'feature_request' | 'documentation' | 'model_quality', required
  - `title` string, required: Trimmed text; control characters except tab and line breaks are rejected.
  - `description` string, required: Trimmed text; control characters except tab and line breaks are rejected.
  - `request_id` string: Optional X-Request-ID captured from inference response headers. Unverified diagnostic context; not proof of ownership or authorization to read logs.
  - `endpoint` string: Relative API route only, with no query string or credentials.
  - `model` string: Trimmed text; control characters except tab and line breaks are rejected.
  - `expected` string: Trimmed text; control characters except tab and line breaks are rejected.
  - `actual` string: Trimmed text; control characters except tab and line breaks are rejected.
  - `steps` string: Trimmed text; control characters except tab and line breaks are rejected.

## Response `201`

Durably stored report, or the original receipt for an identical retry.

- FeedbackReceipt
  - `id` string, uuid, required
  - `object` 'feedback', required
  - `status` 'pending', required
  - `visibility` 'private', required
  - `created_at` string, date-time, required

## Other responses

- `400`: error.code is invalid_request (query parameters), conflicting_credentials (Authorization and x-api-key disagree), invalid_idempotency_key (missing or malformed Idempotency-Key), invalid_json (malformed JSON), or invalid_feedback (invalid or unknown fields). Correct the request before retrying.
- `401`: error.code is missing_api_key (no key), malformed_api_key (invalid key format), or invalid_api_key (invalid, expired, revoked or unsupported credential). Correct credentials before retrying.
- `403`: error.code is feedback_requires_funded_account (no balance, active subscription or paying team behind the key; use https://nano-gpt.com/support or https://nano-gpt.com/feedback), api_key_origin_not_allowed (Origin restriction) or payment_review_required (account access restricted). Resolve the access restriction before retrying.
- `404`: error.code is feedback_not_found. No feedback receipt is accessible with this API key. Stop automatic retries; use website support if needed.
- `409`: error.code is idempotency_conflict. This Idempotency-Key was already used with different normalized fields. Replay the original body, or use a new key only for a new report.
- `410`: error.code is feedback_unavailable. The report was deleted or archived; stop polling or replaying the submission. This is permanent, unlike HTTP 503 with the same code.
- `413`: error.code is request_body_too_large. Request body exceeds 16 KiB; reduce it before retrying.
- `415`: error.code is unsupported_media_type. Send uncompressed application/json.
- `429`: error.code is rate_limit_exceeded (feedback request quota), feedback_capacity_reached (shared daily API feedback limit; use the website or retry after Retry-After) or authentication_rate_limited (repeated invalid credentials). Honor Retry-After; correct invalid credentials before retrying.
- `500`: error.code is internal_error. Authentication failed because of a server error. Retry with bounded backoff; use website support if failures persist.
- `503`: error.code is feedback_unavailable (temporary feedback failure), rate_limit_unavailable (rate-limit service unavailable), or internal_error (temporary authentication failure). Honor Retry-After when present, otherwise use bounded backoff. feedback_unavailable includes Retry-After: 30 and an X-Request-ID incident ID; authentication errors may omit both headers. Unlike HTTP 410, this response is temporary. Retry with the same API key, Idempotency-Key and body so a committed report is not duplicated.

## Changes

- **2026-11-03** `cc8b07d75689`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nano-gpt/apis/nanogpt-api/changes/v1/feedback/post.md)

---

[API](https://skmtc.dev/nano-gpt/apis/nanogpt-api.md) - [All operations](https://skmtc.dev/nano-gpt/apis/nanogpt-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nano-gpt/apis/nanogpt-api/revisions/cc8b07d75689?raw)
