Observability Export API
Manage OpenTelemetry export configurations to send webhook delivery traces and metrics to external observability platforms.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /api/observability | List export configs |
| POST | /api/observability | Create export config |
| GET | /api/observability/{id} | Get export config |
| PATCH | /api/observability/{id} | Update export config |
| DELETE | /api/observability/{id} | Delete export config |
| POST | /api/observability/{id}/test | Test endpoint connectivity |
| GET | /api/observability/status | Export health summary |
Export Config Object
{
"id": "55fc3362-5e1c-451a-9802-bf7528c0d31d",
"organizationId": "23dcbb0a-119b-4a84-8ebc-bea5183407a0",
"name": "Grafana Cloud",
"provider": "grafana",
"endpoint": "https://otlp-gateway-prod-us-west-0.grafana.net/otlp/",
"protocol": "http/json",
"authHeaders": {
"Authorization": "Basi****ials"
},
"exportTypes": {
"traces": true,
"metrics": true,
"logs": false
},
"samplingRate": 1.0,
"resourceFilter": null,
"isActive": true,
"lastExportAt": "2026-03-15T12:00:00Z",
"lastError": null,
"consecutiveErrors": 0,
"createdAt": "2026-03-15T10:00:00Z",
"updatedAt": "2026-03-15T12:00:00Z"
}Auth header values are always masked in responses. Only header key names are visible.
Providers
Valid provider values: grafana, newrelic, honeycomb, axiom, otlp
Create Export Config
curl -X POST "https://api.hookbase.app/api/observability" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Production Grafana",
"provider": "grafana",
"endpoint": "https://otlp-gateway-prod-us-west-0.grafana.net/otlp/",
"authHeaders": {
"Authorization": "Basic base64credentials"
},
"exportTypes": {
"traces": true,
"metrics": true,
"logs": false
},
"samplingRate": 1.0,
"resourceFilter": []
}'Parameters
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name (1-100 chars) |
provider | string | Yes | Provider identifier |
endpoint | string | Yes | OTLP endpoint URL |
protocol | string | No | http/json (default) or http/protobuf |
authHeaders | object | No | Key-value pairs sent as HTTP headers |
exportTypes | object | No | Which telemetry types to export |
samplingRate | number | No | 0.01 to 1.0 (default: 1.0) |
resourceFilter | string[] | No | Source/route IDs to filter (Business only) |
Plan Limits
| Plan | Max Configs | Traces | Metrics | Logs | Resource Filter |
|---|---|---|---|---|---|
| Pro | 2 | Yes | Yes | No | No |
| Business | 10 | Yes | Yes | Yes | Yes |
Update Export Config
curl -X PATCH "https://api.hookbase.app/api/observability/{id}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"samplingRate": 0.5,
"isActive": true
}'All fields from create are optional. Additionally accepts isActive (boolean) to enable/disable.
Test Connection
curl -X POST "https://api.hookbase.app/api/observability/{id}/test" \
-H "Authorization: Bearer {token}"Sends a test span to the configured endpoint and returns success or the error message. Resets consecutive errors on success.
Response
{
"success": true,
"message": "Test span sent successfully",
"status": 200
}Health Status
curl "https://api.hookbase.app/api/observability/status" \
-H "Authorization: Bearer {token}"Response
{
"total": 3,
"active": 2,
"healthy": 1,
"erroring": 1,
"disabled": 1,
"configs": [
{
"id": "...",
"name": "Grafana Cloud",
"provider": "grafana",
"isActive": true,
"lastExportAt": "2026-03-15T12:00:00Z",
"lastError": null,
"consecutiveErrors": 0,
"status": "healthy"
}
]
}Status values: healthy, erroring, disabled, auto_disabled
Auto-Disable Behavior
After 10 consecutive export failures, the config is automatically set to isActive: false. The status changes to auto_disabled. Fix the endpoint issue and re-enable via PATCH with {"isActive": true}.