Event Payload
All webhook events share a common base structure:string
required
The event type:
credential, identity, otp.failed, or test.string
required
API version the payload is formatted for, given as
YYYY-MM-DD.string
required
Identifier of the request this event belongs to.
string
required
DID of your organization, the issuer.
string
Your internal identifier for the request, if you set one.
object
required
The subject the event concerns.
eventType, each event adds its own fields. Pick the event you are handling:
Versioning
By default, each delivery is formatted for the API version its request was created under: theAPI-Version header sent on POST /request, or else the version pinned to the API key. You can optionally pin an endpoint to a fixed version in the Humanos Dashboard; a pinned endpoint receives every event in that version’s format.
Every webhook payload includes an api_version field so you always know which format it uses.
For more details on how versioning works across the API and webhooks, see API Versioning.
Configuration
To configure webhooks, organization administrators can open Webhooks in the Humanos Dashboard. Each endpoint has the following settings:- Endpoint URL is an HTTPS endpoint where webhook events are delivered, for example
https://your.domain.com/webhook. Each endpoint gets its own secrets and salt, shown once when you create or rotate them, plus optional Basic Auth and an optional API version pin. - Webhook Signature Secret is used for validating that the webhooks were sent by Humanos.
- Webhook Encryption Secret is used for decrypting the payloads, ensuring security in transit.
- Webhook Encryption Salt is used together with the Webhook Encryption Secret to derive the final encryption key. The salt adds uniqueness and protects against dictionary or pre-computed attacks, ensuring stronger security for each payload.
- Receive the request → Your endpoint will be called with an encrypted payload.
- Verify authenticity → Check the x-signature header using your Webhook Signature Secret.
- Decrypt the payload → Use the Webhook Encryption Secret and Webhook Encryption Salt to decrypt the message and read the event data.
- Process the event → Store it in your system, update statuses, or trigger business logic.
- Respond quickly → Return a
2xxstatus, such as 200 OK, within 30 seconds. Humanos retries failed deliveries automatically, up to 9 attempts over about 17 hours;401,403and410responses are treated as permanent and not retried.