Skip to main content
Webhooks let your platform receive HTTP callbacks when events occur in Lemma. Instead of polling our API, you register a URL and we send a POST request to it whenever a relevant event fires. To configure a webhook endpoint, contact the Lemma team with the URL you’d like to receive events at. We’ll share a signing secret for that endpoint at the same time. We’re planning to build a self-serve UI in the near future to manage endpoint URLs directly from the dashboard.

Events

permissions.updated

Fired whenever an entity’s permissions for your platform change. Use this to know when an entity connects with you and when they revoke access. The payload contains the entity ID and the complete current set of permissions your API key holds for that entity. Each permission is an object with a resource_group, an operation, and a resource_id. The grant allows access to the whole resource group when resource_id is null. When resource_id is present, the grant is scoped to exactly that resource. It is not a delta: every event carries the full list, so you can replace any cached permissions wholesale. An empty permissions array means access has been fully revoked.
Every permission is one of the resource_group / operation pairs below. When a permission can have a resource_id, that ID narrows the grant to a single resource in the group. For example, to only allow you to read transactions for a specific bank account. Some resource groups will never have resource_id as shown in the table below.

Verifying webhooks

Lemma signs every webhook using the Standard Webhooks specification. Each request carries three headers:
  • webhook-id — unique message identifier
  • webhook-timestamp — Unix timestamp (in seconds) of when we sent it
  • webhook-signature — the signature over the payload
Always verify the signature with the signing secret we shared for your endpoint before trusting a payload. The official standardwebhooks TypeScript library handles this for you:
verify throws if the signature is invalid or the timestamp is outside the allowed tolerance.