Example payloads
Every webhook body includes the event identity and an env field carrying "sandbox" or "production". The shape of data varies by event type.
{
"id": "evt_01HZX9P7K5T2RMS2GZ9C3V8N4Q",
"type": "envelope.completed",
"occurred_at": "2026-05-03T17:42:11Z",
"env": "sandbox",
"data": {
"envelope": {
"id": "env_01HZX9P7K5T2RMS2GZ9C3V8N4Q",
"title": "Master Services Agreement",
"status": "completed",
"completed_at": "2026-05-03T17:42:10Z",
"signed_document_url": "https://api.permissio.us/v1/envelopes/env_01HZX9.../documents/signed"
}
}
}
Coming soon
The signed_document_url field is present in the payload, but fetching it currently returns HTTP 409 (not_signed_yet) — PDF download via the API is not yet implemented. Download completed envelopes from the Permissio app in the meantime.
{
"id": "evt_01HZX9...",
"type": "envelope.signed",
"occurred_at": "2026-05-03T17:30:55Z",
"env": "sandbox",
"data": {
"envelope_id": "env_01HZX9...",
"signer": {
"id": "sgn_01HZX9...",
"name": "Avery Lin",
"email": "avery@example.com",
"status": "signed",
"signed_at": "2026-05-03T17:30:54Z"
}
}
}
The signer.signed and signer.completed events use the same body shape as envelope.signed.