Sign inStart your trial

Approval Gateway · Free tool

Add a human approval step to any workflow

A hosted human-approval step for any automation: one API call out, a signed decision back.

  1. One call in. POST a title and a callback URL.
  2. A human decides. A clean mobile page. Approve or reject in one tap.
  3. Your workflow hears back. Signed decision to your callback. Expires cleanly after 7 days.
01. Get your key

Free API key, delivered by email

  • 100 approvals a month, free
  • No credit card
  • Key in your inbox in ~30 seconds

No spam, just your key. It arrives by email and is never shown in the browser; requesting again with the same email rotates your existing key.

02. Set it up

Pick your platform

  1. Create a Zap that starts with Webhooks by Zapier → Catch Hook and copy its hook URL. This is where the decision will arrive.
  2. In your main Zap, add an action step: Webhooks by Zapier → Custom Request, filled in with:
    Method POST
    URL https://rills.ai/api/tools/approval-gateway/approvals
    Headers Authorization: Bearer apg_YOUR_KEY
    Content-Type: application/json

    Replace apg_YOUR_KEY with the key from your email.

  3. Paste this into Data, swap in your catch hook URL from step 1, and change the title and message to match your workflow:
    {
      "title": "Refund $420 to Acme Corp",
      "message": "Order #1042 - customer reports a duplicate charge.",
      "callback_url": "https://hooks.zapier.com/hooks/catch/your-catch-hook",
      "metadata": { "order_id": "1042" }
    }
  4. Add a step that sends approval_url (from the Custom Request's response) to whoever decides: Slack, email, SMS. They'll see a simple approve / reject page.
  5. When they decide, your catch hook Zap runs with the decision:
    {
      "id": "Vt2jW9qX...",
      "status": "approved",
      "decided_at": "2026-06-12T15:04:05.000Z",
      "comment": "Verified the duplicate charge - go ahead.",
      "metadata": { "order_id": "1042" }
    }

On a plan without premium webhooks? Skip the catch hook and check the status with a GET request to https://rills.ai/api/tools/approval-gateway/approvals/<id> instead (same Authorization header).

Full walkthrough with screenshots: adding a human approval step in Zapier.

03. Still deciding

Frequently asked questions

What does the Approval Gateway cost?

Nothing. Every key includes 100 approvals per month, delivered by email. Human approvals are free in Rills itself too; it's a core part of how we price.

How does my workflow find out about the decision?

When the approver decides (or the request expires after 7 days), we POST a JSON payload to your callback_url with the status, comment, and your echoed metadata. Every callback is signed with HMAC-SHA256 so you can verify it came from us. Tools without a webhook trigger can poll the status endpoint instead.

What happens if nobody approves?

Approvals stay open for 7 days. After that we mark them expired and fire your callback with status "expired", so your workflow can take a fallback path instead of hanging forever.

Is the approval link secure?

The link contains an unguessable 128-bit-plus random token, the same capability-URL model Zapier and n8n use for resume URLs. Anyone with the link can decide, so treat it like the approval itself: send it to the right person. Titles and messages render as plain text, never as HTML or links.

Can approvers get push notifications instead of a web page?

That's the full Rills product: the same approvals land in a mobile approval queue with push notifications, swipe-to-approve, audit history, and confidence gates that learn which approvals can run themselves. The gateway is the miniature version.

Want approvals that learn?

The gateway asks a human every time, forever. Rills workflows learn from your approvals and graduate to running themselves.

14-DAY TRIAL · NO CREDIT CARD · APPROVALS ARE FREE