> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maple.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# Send feedback

> Tells Maple about a bug, a missing capability, wrong docs, or an error you could not act on.

POST`https://api.maple.inc/v1/feedback`API key

Tells Maple about a bug, a missing capability, wrong docs, or an error you could not act on. Cite the `request_ids` involved so we can see what you sent. Maple copies its request history for ids it recognizes and keeps any other id as given, so a report is never refused over an id. Any credential may send feedback; no scope is required. Each app may send 20 per environment per hour; beyond that the API answers 429 with `Retry-After`. Maple reads feedback every week. Nothing changes automatically when you send it, and you get no reply through the API. This contract will not break: fields and `kind` values may be added, never removed, renamed, or made required.

## Authorization

Send your API key as `Authorization: Bearer <key>`: `mpk_test_…` against the sandbox (`https://api.staging.maple.inc/v1`), `mpk_live_…` against production. See [Authentication](https://docs.maple.inc/developer-api/concepts/authentication.md). The samples read the key from `MAPLE_KEY` and the base URL from `MAPLE_BASE`, as set up in the [Quickstart](https://docs.maple.inc/developer-api/quickstart.md).

## Request body

`application/json`, required.

- `kind` string required

  `bug`: the API did something wrong. `missing_capability`: you needed something the API cannot do. `docs_wrong`: the docs or reference disagree with the API. `unclear_error`: an error did not tell you what to change. `other`: anything else. One of `bug`, `missing_capability`, `docs_wrong`, `unclear_error`, `other`.

- `summary` string required

  One line, at most 200 characters. Up to 200 characters.

- `attempted` string or null

  What you were trying to do, as a goal (for example, “seat a walk-in party of four”). Leave it out when the feedback is not about a task.

- `expected` string or null

  What you expected the API to do.

- `observed` string or null

  What the API did instead.

- `endpoint` string or null

  The method and path this is about, for example `POST /v1/waitlist_entries`.

- `request_ids` string\[] or null

  Up to ten ids of the requests this is about, usually the `x-request-id` response header. Maple copies what its request history holds for ids this app made in this environment in the last seven days; any other id is kept as you sent it.

## Responses

### 200 OK

- `object` string required

  Always `feedback`.

- `id` string required

- `livemode` boolean required

- `created` number required

- `kind` string required

  One of `bug`, `missing_capability`, `docs_wrong`, `unclear_error`, `other`.

- `summary` string required

- `request_ids` string\[] required

- `status` string required

  Always `received`.

### Errors

- `400` Bad request DeveloperApiBadRequest

- `401` Unauthorized DeveloperApiUnauthorized

- `429` Too many requests DeveloperApiRateLimited

Every error body names the error in `_tag`, explains it in `message`, and says where to report it in `feedback`. See [Errors](https://docs.maple.inc/developer-api/concepts/errors.md).

A `429` also sends `Retry-After`: Seconds to wait before retrying; also returned as retry\_after in the body.

Send feedback

```sh
curl "$MAPLE_BASE/feedback" \
  -H "Authorization: Bearer $MAPLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"bug","summary":"string"}'
```

```python
import os
import requests


r = requests.post(
    f"{os.environ['MAPLE_BASE']}/feedback",
    headers={"Authorization": f"Bearer {os.environ['MAPLE_KEY']}"},
    json={
        "kind": "bug",
        "summary": "string",
    },
    timeout=30,
)
r.raise_for_status()
print(r.json())
```

```js
const res = await fetch(`${process.env.MAPLE_BASE}/feedback`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MAPLE_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "kind": "bug",
    "summary": "string"
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());
```

```json
{
  "object": "feedback",
  "id": "string",
  "livemode": true,
  "created": 1.5,
  "kind": "bug",
  "summary": "string",
  "request_ids": [
    "string"
  ],
  "status": "received"
}
```

```json
{
  "_tag": "DeveloperApiBadRequest",
  "code": "string",
  "message": "string",
  "feedback": "string"
}
```
