# Submit feedback

> For the complete documentation index, see [llms.txt](/llms.txt)

> Create a feedback entry for a project. This is the endpoint the

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Submit feedback"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/api/v1/feedback/"}
  context={"endpoint"}
>
  
</MethodEndpoint>

Create a feedback entry for a project. This is the endpoint the
feedback widget calls when a visitor submits the form; you can call it
directly to submit feedback from your own UI.

No API key is required by default, but the `url` field must belong to
one of the domains configured for the project. Requests from other
origins are rejected with `403 Forbidden`.

Projects can enable the require a submit key option. Submissions to
such a project must carry an API key with the `feedback:submit` scope
covering the project: requests without a key get `401 Unauthorized`,
and requests with a key that lacks the scope get `403 Forbidden`.
This suits internal sites and backend integrations where everyone who
can see the page may know the key, but outsiders cannot submit. The
project configuration's `require_submit_key` field tells you whether
a project has this enabled.

If the project has reCAPTCHA enabled, a valid `recaptchaToken` is
required.

Every accepted submission returns `201`, on every plan. Feedback is
never dropped or hidden because of the plan: what a plan changes is
how the entry is delivered, not whether it is stored and readable.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
>
  <Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails>
  
</ParamsDetails>

<RequestSchema
  {...require("./create-feedback.RequestSchema.json")}
>
  
</RequestSchema>

<StatusCodes
  {...require("./create-feedback.StatusCodes.json")}
>
  
</StatusCodes>
