Developers
Webhooks
Which events exist, how a delivery is signed, and the log of every delivery made to your endpoints.
Webhook delivery is off. No events are sent, and GET /v1/webhook-deliveries returns 503 webhooks_unavailable.
Event types
2 event typesjob.succeededjob.failed
Interrupted and cancelled jobs send no event.
How deliveries are signed
- Each delivery is signed in a
Helm-Signatureheader, an HS256 JWS. Split it on,and verify each part: during a secret rotation it carries two. Usejwt.verify(sig, secret, {algorithms: ["HS256"]}). - Claims:
iss(helm-express),aud(endpoint id),sub(event id, stable across retries),jti(attempt id),iat,exp,urlandbh, the hex SHA-256 of the raw body. Hash the bytes before parsing. datais the stored result in its raw form (p_yes,breakdowns), not theMeasurementshape. Show its disclosure wherever you show the result.- Order is not guaranteed: sort on
createdand dedupe onid. Redirects are not followed.
The delivery log
2 operationsMethodPathScopeWhat it does
GET/v1/webhook-deliveriesreadWhat was delivered to your endpoints, newest first. listWebhookDeliveries
POST/v1/webhook-deliveries /{id} /replayspendSend one settled delivery again, keeping its event id. replayWebhookDelivery
Next
- QuickstartA key, a first call to Helm’s general model, then a model of your own: forecasts and outcomes.
- API referenceEvery route of the Helm Decision API, with its method, path, scope and what it does.
- MCP connectorRead-only tools over JSON-RPC 2.0, for agents and model clients.
- Use your own modelHave Helm ask your own server for a model’s answers, then seal, score and calibrate them.
- LimitsRate, concurrency and the daily allowance, and the answer each limit gives.