Inbound webhooks
Send data to LettrLabs at POST /v1/webhooks/{guid}, with optional HMAC‑SHA256 signature verification and an optional per‑webhook API key.
Inbound webhooks let your systems (or a third party) push data to LettrLabs. You configure a webhook in the LettrLabs app, which gives you a unique endpoint, and your sender posts events to it.
These are inbound webhooks — data flowing into LettrLabs. LettrLabs does not currently emit outbound event webhooks; that is planned for a future release.
Endpoint
Post your payload to the webhook's unique URL:
POST /v1/webhooks/{guid}{guid} is the identifier of the webhook you created in the app. The full
request goes to:
https://app.lettrlabs.com/api/v1/webhooks/{guid}Security: signature verification and API key
Each webhook can independently require either, both, or neither of two protections, configured per webhook in the app:
Optional HMAC‑SHA256 signature
When signature verification is enabled, the sender computes an HMAC‑SHA256 of the raw request body using the webhook's shared secret and sends it in a standard signature header. The endpoint accepts any of these four headers:
X-Signature-256X-Hub-Signature-256X-SignatureX-Hub-Signature
The signature value is the lowercase hex digest, prefixed with sha256=:
X-Signature-256: sha256=3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1bCompute it over the exact raw bytes of the request body (before any parsing). In Node.js:
import { createHmac } from 'node:crypto';
const signature =
'sha256=' + createHmac('sha256', webhookSecret).update(rawBody).digest('hex');Send the resulting signature in one of the four accepted headers (for example
X-Signature-256). LettrLabs recomputes the digest over the received body and
rejects the request if it does not match.
Optional per‑webhook API key
A webhook can also require an API key. When enabled, include your
X-API-KEY header on the request (see
Authentication & API keys). A webhook may
require the API key, the signature, both, or neither — whatever you configured.
Example
curl -X POST https://app.lettrlabs.com/api/v1/webhooks/your-webhook-guid \
-H "Content-Type: application/json" \
-H "X-Signature-256: sha256=<computed-digest>" \
-H "X-API-KEY: your_api_key_here" \
--data-binary @payload.jsonIf verification is enabled and the signature header is missing or wrong, or a required API key is absent, the request is rejected.