How it works
-
Create a key with
requires_approval: true. -
When that key triggers a spend action (e.g. send a campaign), the Gateway does not dispatch.
It returns a job in
pending_approval: -
An
approval.requestedwebhook fires (if subscribed). A human reviews and resolves it: -
On approve, the deferred action is released (the real pipeline dispatches) and the job moves to
queued→succeeded. On deny, the job becomescancelledwithAPPROVAL_DENIED.
Resolving an approval requires the
agent:admin scope. Build dashboards or chat ops around the
approval.requested event so approvals are one click.