{
"id": "<string>",
"api_version": "v1",
"occurred_at": "2023-11-07T05:31:56Z",
"partner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"org_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"org_external_ref": "<string>",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"brand_name": "<string>",
"brand_external_ref": "<string>",
"country": null,
"type": "sentiment.threshold_crossed",
"data": {
"metric": "avg_sentiment",
"run_date": "2023-12-25",
"previous": {
"value": 123,
"date": "2023-12-25",
"mentions": null
},
"current": {
"value": 123,
"date": "2023-12-25",
"mentions": 0
},
"delta": 123
},
"threshold": {
"subscription_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"min_delta": 123,
"sentiment_floor": 123,
"floor_breached": true
}
}sentiment.threshold_crossed
Sent when an own brand’s mean sentiment moves past a subscription’s threshold or falls under its floor.
{
"id": "<string>",
"api_version": "v1",
"occurred_at": "2023-11-07T05:31:56Z",
"partner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"org_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"org_external_ref": "<string>",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"brand_name": "<string>",
"brand_external_ref": "<string>",
"country": null,
"type": "sentiment.threshold_crossed",
"data": {
"metric": "avg_sentiment",
"run_date": "2023-12-25",
"previous": {
"value": 123,
"date": "2023-12-25",
"mentions": null
},
"current": {
"value": 123,
"date": "2023-12-25",
"mentions": 0
},
"delta": 123
},
"threshold": {
"subscription_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"min_delta": 123,
"sentiment_floor": 123,
"floor_breached": true
}
}min_delta, or falls below its sentiment_floor, between two consecutive scan dates that each recorded a mean. See Webhook events for the fields and for how thresholds are judged.Authorizations
A Surfais API key — an organisation key or a partner key. Issued by Surfais; shown once. Rotate by creating a new key, then revoking the old one.
Headers
The envelope's id — dedupe on it; retries repeat it.
Unix seconds when THIS attempt was sent; reject if further than the documented tolerance from your clock.
v1= + hex(HMAC-SHA256(secret, ".")).
Body
evt_ + ULID. Retries carry the same id — dedupe on it.
"v1"RFC 3339 timestamp.
UUID.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$UUID.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Your external_ref on the partner–org link.
UUID.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Your external_ref on the brand.
Reserved: per-market events are a v1.1 deferral; always null in v1.
"sentiment.threshold_crossed"Show child attributes
Show child attributes
The subscription rule that matched, frozen at emission so every retry carries the same block.
Show child attributes
Show child attributes
Response
Accepted. Any 2xx counts; the body is ignored (its first bytes are kept for your delivery log).