Fired by two sources with two body shapes. A HITL confirmation approved on the approval page sends ConfirmationWebhookPayload (confirmation_id, the stored message — see encrypted for what it is — and the signed proof of the decision). A verification request created with action_type: "confirmation" that completes sends WebhookPayload (request_id, action_context, proofs) to its callback_url. Tell them apart by confirmation_id vs request_id.

postWebhookconfirmation.approved

Payload

OR

Example payload

{
  "confirmation_id": "507f1f77bcf86cd799439011",
  "hitl_id": "507f1f77bcf86cd799439011",
  "message": "{\"v\":1,\"alg\":\"RSA-OAEP-256+AES-256-GCM\",\"ek\":\"...\",\"iv\":\"...\",\"ct\":\"...\",\"tag\":\"...\",\"kid\":\"...\"}",
  "response": {
    "action": "approve",
    "channel": "telegram"
  }
}

Response

Webhook received

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.