Send every OpenDunes request to any HTTPS endpoint, as OTLP JSON.
The webhook destination sends every OpenDunes request to an HTTPS endpoint of yours — for log aggregation, alerting, internal billing, or a tool not listed here.
| Setting | Required | Description |
|---|---|---|
url | Yes | Your endpoint. HTTPS, on the public internet |
method | No | POST (the default) or PUT |
headers | No | Headers sent with every delivery |
The request carries no signature. To know a delivery is yours, put a secret in headers and check it on your side.
curl https://opendunes.com/v1/observability/destinations \
-H "Authorization: Bearer $OPENDUNES_MANAGEMENT_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Souk Bot hook",
"type": "webhook",
"config": {
"url": "https://soukbot.example/hooks/opendunes",
"headers": { "Authorization": "Bearer my-shared-secret" }
}
}'Header values come back masked on every read.
One request per OpenDunes request, Content-Type: application/json, holding an OTLP ExportTraceServiceRequest with one span — its attributes are listed on the OpenTelemetry Collector page.
{
"resourceSpans": [
{
"resource": {
"attributes": [
{ "key": "service.name", "value": { "stringValue": "opendunes" } }
]
},
"scopeSpans": [
{
"scope": { "name": "opendunes", "version": "1.0.0" },
"spans": [
{
"traceId": "…",
"spanId": "…",
"name": "…",
"kind": 3,
"startTimeUnixNano": "…",
"endTimeUnixNano": "…",
"attributes": [
{ "key": "gen_ai.response.model", "value": { "stringValue": "anthropic/claude-sonnet-5" } }
],
"status": { "code": 1 }
}
]
}
]
}
]
}Answer with a 2xx. Any other status, a redirect, or no answer within 15 seconds counts as a failure; the delivery is tried again after 10 seconds, a minute and five minutes, then dropped.
Back to Broadcast overview.