CoderHelm Docs
APIDeliveries

Get delivery analytics

GET
/api/deliveries/analytics

How the team's deliveries went over a period, against the period before: webhooks CoderHelm received (GitHub, Jira, alerts), events it relayed, and what it sent (webhook endpoints, Slack, Teams, email). Per hour for 24h, per day otherwise: volume, success rate, latency percentiles, retries and how many of them went fine, failures by reason in plain words, the event types that failed most, and each webhook endpoint's success rate, latency, failure streak and whether it is turned off. Counts are kept 120 days; each delivery's own record 14.

Authorization

api_key deliveries
headerAuthorizationBearer <token>

A team API key, made by an admin under Settings, API keys. Send it as Authorization: Bearer chk_....

Scope: deliveries

Query Parameters

period?string

24h (by hour), 7d or 30d (by day). Default 7d. Each is compared with the period before it, as long.

source?string

Only one source: github, relay, webhook, alerts, jira, slack, teams, email, broker, knowledge.

status?string

all (default), ok (handled or ignored), handled, ignored or failed. Retrying deliveries count once they finish.

endpoint?string

Only one outbound webhook endpoint (its id).

Response Body

The overview.

application/json
  1. response

The Deliveries overview for one period.

Example
{  "backfill": {    "complete": true  },  "endpoints": [    {      "deleted": false,      "deliveries": 214,      "description": "Incident bot",      "disabled_reason": "",      "enabled": true,      "failed": 12,      "failing_since": null,      "id": "ep_01JBENDPT4K2M8N3P5Q7R9S1T3",      "last_failure_at": "2026-10-26T09:14:02Z",      "last_failure_message": "Your webhook endpoint answered with a server error (5xx).",      "last_failure_reason": "webhook_server_error",      "last_success_at": "2026-10-26T15:02:40Z",      "ok": 202,      "p50_ms": 320,      "p95_ms": 2900,      "streak": 0,      "success_rate": 0.9439,      "url": "https://hooks.example.com/coderhelm"    }  ],  "events": [    {      "event": "run.failed",      "failed": 9,      "source": "webhook"    }  ],  "from": "2026-10-20T00:00:00Z",  "granularity": "day",  "kept_days": 120,  "period": "7d",  "previous": {    "deliveries": 1120,    "failed": 28,    "handled": 1040,    "ignored": 52,    "p50_ms": 170,    "p95_ms": 1100,    "p99_ms": 4100,    "retried": 30,    "retried_ok": 26,    "retries": 44,    "success_rate": 0.975  },  "previous_from": "2026-10-13T00:00:00Z",  "previous_to": "2026-10-20T00:00:00Z",  "reasons": [    {      "code": "webhook_server_error",      "count": 12,      "fix": "Check your endpoint's logs for this event id. CoderHelm retries for about a day.",      "message": "Your webhook endpoint answered with a server error (5xx).",      "previous_count": 3,      "sources": [        "webhook"      ]    }  ],  "records_kept_days": 14,  "seen_sources": [    "github",    "webhook",    "slack",    "email"  ],  "series": [    {      "deliveries": 190,      "end": "2026-10-27T00:00:00Z",      "failed": 4,      "ok": 186,      "p95_ms": 1100,      "previous_deliveries": 171,      "start": "2026-10-26T00:00:00Z",      "success_rate": 0.9789    }  ],  "sources": [    {      "deliveries": 912,      "direction": "inbound",      "failed": 7,      "ok": 905,      "p95_ms": 640,      "previous_deliveries": 870,      "previous_success_rate": 0.9897,      "source": "github",      "success_rate": 0.9923    }  ],  "summary": {    "deliveries": 1284,    "failed": 33,    "handled": 1190,    "ignored": 61,    "p50_ms": 180,    "p95_ms": 1240,    "p99_ms": 4800,    "retried": 41,    "retried_ok": 37,    "retries": 58,    "success_rate": 0.9743  },  "to": "2026-10-27T00:00:00Z"}
backfill*

Whether the records from before rollups existed are all counted yet.

endpoints*array<>

The team's outbound webhook endpoints, and any that had deliveries in the period since. Empty when another source is chosen.

events*array<>

The event types that failed most (up to 10).

from*string

The period: from (inclusive) to (exclusive), RFC 3339.

Example"2026-10-20T00:00:00Z"
granularity*string

hour or day.

Example"day"
kept_days*integer

Days the counts are kept.

Formatint64
Example120
period*string

24h, 7d or 30d.

Example"7d"
previous*

Headline numbers for one period.

previous_from*string

The period before, as long as this one.

Example"2026-10-13T00:00:00Z"
previous_to*string

The end of the period before, exclusive.

Example"2026-10-20T00:00:00Z"
reasons*array<>

Failures by reason, most first.

records_kept_days*integer

Days each delivery's record is kept (what a drill-in can list).

Formatint64
Example14
seen_sources*array<string>

Every source with deliveries in either period, for the filter.

Example
[  "github",  "webhook",  "slack",  "email"]
series*array<>

One point per hour (24h) or day, oldest first.

sources*array<>

By source and direction, most deliveries first.

summary*

Headline numbers for one period.

to*string

The end of the period, exclusive.

Example"2026-10-27T00:00:00Z"
curl -X GET 'https://api.coderhelm.com/api/deliveries/analytics?period=7d&source=webhook&status=failed&endpoint=ep_01JBENDPT4K2M8N3P5Q7R9S1T3' \  -H "Authorization: Bearer $CODERHELM_API_KEY"
{  "backfill": {    "complete": true  },  "endpoints": [    {      "deleted": false,      "deliveries": 214,      "description": "Incident bot",      "disabled_reason": "",      "enabled": true,      "failed": 12,      "failing_since": null,      "id": "ep_01JBENDPT4K2M8N3P5Q7R9S1T3",      "last_failure_at": "2026-10-26T09:14:02Z",      "last_failure_message": "Your webhook endpoint answered with a server error (5xx).",      "last_failure_reason": "webhook_server_error",      "last_success_at": "2026-10-26T15:02:40Z",      "ok": 202,      "p50_ms": 320,      "p95_ms": 2900,      "streak": 0,      "success_rate": 0.9439,      "url": "https://hooks.example.com/coderhelm"    }  ],  "events": [    {      "event": "run.failed",      "failed": 9,      "source": "webhook"    }  ],  "from": "2026-10-20T00:00:00Z",  "granularity": "day",  "kept_days": 120,  "period": "7d",  "previous": {    "deliveries": 1120,    "failed": 28,    "handled": 1040,    "ignored": 52,    "p50_ms": 170,    "p95_ms": 1100,    "p99_ms": 4100,    "retried": 30,    "retried_ok": 26,    "retries": 44,    "success_rate": 0.975  },  "previous_from": "2026-10-13T00:00:00Z",  "previous_to": "2026-10-20T00:00:00Z",  "reasons": [    {      "code": "webhook_server_error",      "count": 12,      "fix": "Check your endpoint's logs for this event id. CoderHelm retries for about a day.",      "message": "Your webhook endpoint answered with a server error (5xx).",      "previous_count": 3,      "sources": [        "webhook"      ]    }  ],  "records_kept_days": 14,  "seen_sources": [    "github",    "webhook",    "slack",    "email"  ],  "series": [    {      "deliveries": 190,      "end": "2026-10-27T00:00:00Z",      "failed": 4,      "ok": 186,      "p95_ms": 1100,      "previous_deliveries": 171,      "start": "2026-10-26T00:00:00Z",      "success_rate": 0.9789    }  ],  "sources": [    {      "deliveries": 912,      "direction": "inbound",      "failed": 7,      "ok": 905,      "p95_ms": 640,      "previous_deliveries": 870,      "previous_success_rate": 0.9897,      "source": "github",      "success_rate": 0.9923    }  ],  "summary": {    "deliveries": 1284,    "failed": 33,    "handled": 1190,    "ignored": 61,    "p50_ms": 180,    "p95_ms": 1240,    "p99_ms": 4800,    "retried": 41,    "retried_ok": 37,    "retries": 58,    "success_rate": 0.9743  },  "to": "2026-10-27T00:00:00Z"}
Edit on GitHub