Skip to main content
POST
/
v2
/
watch
/
feedback
Send feedbacks
curl --request POST \
  --url https://api.prelude.dev/v2/watch/feedback \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "feedbacks": [
    {
      "target": {
        "value": "<string>"
      },
      "metadata": {
        "correlation_id": "<string>"
      }
    }
  ]
}
'
{
  "status": "success",
  "request_id": "<string>"
}
Optional. Use this endpoint only when you run phone verification on your own stack (not Prelude Verify) and want Prelude to track attempt and success rates for abuse detection. Each feedback mirrors a step in that funnel:
  • verification.started — verification began (challenge issued or started). Maps to an “attempt” in the anti-fraud counter model, and—when linked to an earlier predict—to auth-start counters (IP, prefix, JA4, carrier, and related signals).
  • verification.completed — verification succeeded. Maps to a successful “check” for conversion-style rules.
You do not need Feedback if:
  • You only use Events and/or Predict, or
  • Verification already goes through Prelude Verify (Verify feeds those counters for that traffic).
A Predict call does not replace Feedback — Predict scores once; Feedback records what actually happened in your verification flow. To warm the Watch antispam pool when verification starts, use Predict before Feedback on the same target:
  1. Predict at signup (same target as the later feedback).
  2. verification.started feedback when the user begins verification, with the same metadata.correlation_id you sent on predict (if you use correlation IDs).
  3. verification.completed when verification succeeds (same target and correlation_id when applicable).
POST /v2/watch/predict     →  stores prediction + signals (scoring only)
POST /v2/watch/feedback    →  verification.started  →  attempt + auth counters (when predict linked)
POST /v2/watch/feedback    →  verification.completed →  check-success counters
If no matching prediction is found, verification.started still updates the attempt-rate counter from the phone number and country, but auth-level counters (IP concentration, JA4, device, carrier, and similar) are not updated. Always call Predict first when you rely on those signals.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
feedbacks
object[]
required

A list of feedbacks to send. A maximum of 100 feedbacks can be sent in a single request.

Maximum array length: 100

Response

OK

status
enum<string>
required

The status of the feedbacks sending.

Available options:
success
Example:

"success"

request_id
string
required

A string that identifies this specific request. Report it back to us to help us diagnose your issues.

Example:

"3d19215e-2991-4a05-a41a-527314e6ff6a"