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/jsonRequest body
| Field | Type | Description |
|---|---|---|
| eventId | uuid | The eventId returned by /evaluate. |
| label | enum | One of TRUE_THREAT, FALSE_POSITIVE, SAFE. |
What each label does
| Label | Effect on weights | Effect on user profile |
|---|---|---|
| TRUE_THREAT | Increases weight of every contributing signal, proportional to its intensity. | Increments threat_count; trust prior drops. |
| FALSE_POSITIVE | Decays only the contributing signals — not all signals. | No change. |
| SAFE | Mild 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.