---
title: Report a wrong answer
description: Flag a wrong or unclear DPP scope or regulatory answer for review — include the rule IDs from the answer envelope for fast routing.
canonical: "https://www.tracepass.eu/docs/report-answer"
locale: en
source: "https://www.tracepass.eu/docs/report-answer"
---

# Report a wrong answer

> Flag a wrong or unclear DPP scope or regulatory answer for review — include the rule IDs from the answer envelope for fast routing.

```http
POST /api/v1/scope/reports
```

Submits a correction report to a review queue. Use `ruleIds` from the `ruleIds` field of the scope-check or regulatory-assistant response envelope to route the report to the right rule owner quickly. The `what` field is a plain-language description of what is wrong or unclear — be specific: include the product type, the facts you used, and what the answer said that was wrong.

Does not consume a scope answer (reports are never refused at the daily cap — a cap that would block a correction is bad design). Returns 201 with the report `id` on success. Auth: an API key or OAuth with `regulatory:read` or `passports:read`.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <token>` — either a `tp_` API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list. |
| `what` | body | string | yes | Plain-language description of what is wrong or unclear. Be specific: include the product type, the facts used, and what the answer said that was incorrect. |
| `ruleIds` | body | string\[\] | no | Rule IDs from the `ruleIds` array in the response envelope that the report concerns. Including them routes the report to the right rule owner and speeds up review. |
| `channel` | body | string | no | The channel the original answer came from — `app`, `api`, `mcp`, `assistant`, `public`. Helps attribute the report to the right tool. |

## Examples

```bash
curl -sS https://app.tracepass.eu/api/v1/scope/reports \
  -X POST \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "what": "The answer said toy safety applies from 2030-08-01 but I believe the date for products already on the market is different.",
    "ruleIds": ["32025R2509#duty.dpp_toys@1"],
    "channel": "assistant"
  }'
```

```typescript
const res = await fetch("https://app.tracepass.eu/api/v1/scope/reports", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    what: "The answer said toy safety applies from 2030-08-01 but I believe the date for products already on the market is different.",
    ruleIds: ["32025R2509#duty.dpp_toys@1"],
    channel: "assistant",
  }),
});
const { id } = await res.json(); // report ID
```

```python
import os, requests
resp = requests.post(
    "https://app.tracepass.eu/api/v1/scope/reports",
    headers={
        "Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "what": "The answer said toy safety applies from 2030-08-01 but I believe the date for products already on the market is different.",
        "ruleIds": ["32025R2509#duty.dpp_toys@1"],
        "channel": "assistant",
    },
)
data = resp.json()  # {"id": "..."}
```

## Responses

### 201 — Report created

```json
{ "id": "6acbdcfd8683429825453952" }
```

### 400 — Invalid input

```json
{ "error": "invalid_input", "field": "what", "message": "Invalid input: expected string, received undefined" }
```

### 401 — Unauthorized

```json
{ "error": "Invalid or revoked API key" }
```

## Related

- [POST Check DPP scope](https://www.tracepass.eu/docs/check-scope.md)
- [GET Required fields](https://www.tracepass.eu/docs/get-required-fields.md)
