@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const health = await nova.analytics.webhookHealth({ timeRange: "24h" });curl -X GET "https://embed.nova.dweet.com/v1/analytics/webhook-health?timeRange=24h" \
-H "Authorization: Bearer sk_test_..."{
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"summary": {
"deliveryRate": 123,
"totalDeliveries": 123
},
"failureBreakdown": [
{
"endpointUrl": "<string>",
"endpointName": "<string>",
"failureCount": 123,
"lastError": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Analytics
Get Webhook Health
Webhook delivery stats and failure breakdown by endpoint
GET
/
v1
/
analytics
/
webhook-health
@nova-sdk/api
import { Nova } from "@nova-sdk/api";
const nova = new Nova({
apiKey: "sk_test_...",
tenantId: "acme-corp",
});
const health = await nova.analytics.webhookHealth({ timeRange: "24h" });curl -X GET "https://embed.nova.dweet.com/v1/analytics/webhook-health?timeRange=24h" \
-H "Authorization: Bearer sk_test_..."{
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"summary": {
"deliveryRate": 123,
"totalDeliveries": 123
},
"failureBreakdown": [
{
"endpointUrl": "<string>",
"endpointName": "<string>",
"failureCount": 123,
"lastError": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"code": "UNAUTHORIZED",
"status": 123,
"message": "<string>",
"retryable": true,
"traceId": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Returns webhook delivery health: an overall delivery rate plus a per-endpoint failure breakdown. Useful for diagnosing delivery issues to specific webhook URLs.
This endpoint requires only a valid API key.
X-Tenant-Id isn’t required.
Query parameters
| Parameter | Required | Values | Description |
|---|---|---|---|
timeRange | Yes | 1h, 24h, 7d, 30d, 90d | Lookback window for the data |
Example response
{
"period": {
"start": "2026-03-07T00:00:00.000Z",
"end": "2026-03-08T00:00:00.000Z"
},
"summary": {
"deliveryRate": 0.98,
"totalDeliveries": 1420
},
"failureBreakdown": [
{
"endpointUrl": "https://api.example.com/webhooks/nova",
"endpointName": "Production",
"failureCount": 3,
"lastError": "Connection refused"
}
]
}
Response fields
| Field | Type | Description |
|---|---|---|
period.start | string | ISO 8601 start of the period |
period.end | string | ISO 8601 end of the period |
summary.deliveryRate | number | Fraction of webhooks delivered successfully (0 to 1) |
summary.totalDeliveries | integer | Total webhook delivery attempts |
failureBreakdown[].endpointUrl | string | The webhook endpoint URL |
failureBreakdown[].endpointName | string | null | Display name for the endpoint (if configured) |
failureBreakdown[].failureCount | integer | Number of failed deliveries to this endpoint |
failureBreakdown[].lastError | string | null | Most recent error message |
If
failureBreakdown is empty, all webhook deliveries in the period succeeded.Responses are cached for 60 seconds (
Cache-Control: private, max-age=60). This endpoint is rate-limited under the analytics bucket (20 req/s).Authorizations
Use Authorization: Bearer sk_test_* or Authorization: Bearer sk_live_*.
Query Parameters
Time range for the analytics query Time range for analytics queries.
Available options:
1h, 24h, 7d, 30d, 90d Was this page helpful?