---
title: "Provide feedback about Account Protect recommendations for a specific event, account, or user."
method: POST
path: "/v1/feedback"
tags: ["feedback"]
---

# Provide feedback about Account Protect recommendations for a specific event, account, or user.

`POST /v1/feedback`

Account Protect accepts feedbacks about its recommendations for a specific event, account, or user.
All submitted feedbacks contribute to refining and improving the detection algorithms for enhanced security performance.

Feedback submission is recommended when:
* You take the decision to block a user on your side
* You take the decision to allow a user on your side after Account Protect recommended to deny it

These decisions can originate from various sources, from a manual decision done by an analyst to an automated system (rule engine, report from other users, rate limit...).

## Request body

- union — Feedback payload to provide to the feedback endpoint
  - object — Base properties for feedback payload sent to Account Protect server
    - `decision` 'allow' | 'challenge' | 'review' | 'deny' | 'delete', required — The decision that should have been taken for the event or account (mandatory).
    - `decisionTime` integer — The timestamp (EPOCH in milliseconds) when the decision was taken.
    - `decisionReason` string — The description of the reasons why a decision has been taken.
    - `origin` 'manualReview' | 'chargebacks' | 'automatedRule' | 'dashboard' | 'datadome' | 'other', required — The system that triggers the decision (mandatory).
    - `originId` string — The id that identifies the decision-maker.
    - `eventId` string, required — The eventId of the event receiving a feedback. It should match the eventId returned by fraud SDK. This field is incompatible with account or userId but one of them is mandatory.
  - object — Base properties for feedback payload sent to Account Protect server
    - `decision` 'allow' | 'challenge' | 'review' | 'deny' | 'delete', required — The decision that should have been taken for the event or account (mandatory).
    - `decisionTime` integer — The timestamp (EPOCH in milliseconds) when the decision was taken.
    - `decisionReason` string — The description of the reasons why a decision has been taken.
    - `origin` 'manualReview' | 'chargebacks' | 'automatedRule' | 'dashboard' | 'datadome' | 'other', required — The system that triggers the decision (mandatory).
    - `originId` string — The id that identifies the decision-maker.
    - `account` string, required — The account of the user receiving a feedback. It should match the field account sent in fraud SDK request. This field is incompatible with eventId or userId but one of them is mandatory.
  - object — Base properties for feedback payload sent to Account Protect server
    - `decision` 'allow' | 'challenge' | 'review' | 'deny' | 'delete', required — The decision that should have been taken for the event or account (mandatory).
    - `decisionTime` integer — The timestamp (EPOCH in milliseconds) when the decision was taken.
    - `decisionReason` string — The description of the reasons why a decision has been taken.
    - `origin` 'manualReview' | 'chargebacks' | 'automatedRule' | 'dashboard' | 'datadome' | 'other', required — The system that triggers the decision (mandatory).
    - `originId` string — The id that identifies the decision-maker.
    - `userId` string, required — The userId of the user receiving a feedback. It should match the field userId sent in fraud SDK request. This field is incompatible with eventId or account but one of them is mandatory.

## Response `201`

The feedback has been taken into account

- object — Contains the feedback's ID associated to the feedback created
  - `feedbackId` string — The feedback's ID, needed for any support request

## Other responses

- `400` — Error response when the request is malformed
- `401` — Error response when the apiKey is missing or blank
- `403` — Error response when the apiKey is not valid
- `415` — Content-Type is not set to application/json
- `500` — Internal server error (thus the feedback has not been taken into account)

---

[API](https://skmtc.net/datadome/apis/protection-api.md) · [All operations](https://skmtc.net/datadome/apis/protection-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/datadome/protection-api/revisions/2576052958eb/schema)
