POST /api/public/v1/feedback

Label an event. Veriloop will move the weight of every signal that actually fired on that event, proportional to how much each one contributed.

Endpoint

http
POST https://YOUR-APP.lovable.app/api/public/v1/feedback
Authorization: Bearer vl_live_…
Content-Type: application/json

Request body

FieldTypeDescription
eventIduuidThe eventId returned by /evaluate.
labelenumOne of TRUE_THREAT, FALSE_POSITIVE, SAFE.

What each label does

LabelEffect on weightsEffect on user profile
TRUE_THREATIncreases weight of every contributing signal, proportional to its intensity.Increments threat_count; trust prior drops.
FALSE_POSITIVEDecays only the contributing signals — not all signals.No change.
SAFEMild decay for contributing signals.Increments safe_count; trust grows.

Examples

bash
curl -X POST https://YOUR-APP.lovable.app/api/public/v1/feedback \
  -H "Authorization: Bearer vl_live_…" \
  -H "Content-Type: application/json" \
  -d '{"eventId":"f3a1…","label":"TRUE_THREAT"}'
javascript
await fetch(
  "https://YOUR-APP.lovable.app/api/public/v1/feedback",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer vl_live_…",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ eventId, label: "FALSE_POSITIVE" }),
  },
);

Response

json
{ "ok": true, "signalsUpdated": ["new_device", "geo_jump"] }

Every five feedback events in a workspace, the model version increments. The next call to /evaluate will return the new version in its response.