Gate

Human approval for AI agents

Let your AI agent ask before it acts.

Gate is a simple API that sends your agent's risky actions to a person for a yes or no, and tells your agent the answer.

Agents can send emails, spend money and delete data on their own. One wrong move can cost you money or a customer's trust. With Gate, a person approves first, straight from their email, and your agent only goes ahead on a yes.

Free for 25 approvals a month. No credit card. Nothing to install.

  1. Your agentPOST /approvals
    "Refund $450 to customer #1832"
  2. Gatestatus: "pending" · asks your approver
  3. Your approverTaps Approve
  4. Your agentGET /approvals/apr_…
    status: "approved" → does the refund

Give your agent more power, without losing control

You don't have to choose between an agent that can't do anything useful and one that does things nobody checked.

A person says yes first

Risky actions wait for a real approval. Your agent sees exactly one answer: approved, rejected or expired.

Safe by default

If nobody answers in time, the request expires and your agent should not act. Silence never counts as a yes.

Know who said yes

Every answer comes back with who decided and when (decided_by, decided_at). A decision is final and can't be changed later.

Nothing to install

No SDK and no dashboard. Paste one block into your agent's instructions, or make two HTTP calls from your code.

How to use Gate

Three steps, about two minutes. Nothing to install.

See it in 48 seconds

Get a key, paste one block into your agent, approve from your inbox. No audio; captions are on screen.
  1. Get a free key

    Enter your email in the sign-up form. Your key appears right away and is shown once, so save it. No credit card. Approving your first approval email confirms your address.

  2. Paste one block into your agent

    Copy this into your agent's instructions: its bot instructions, system prompt or rules file. Put your key in place of YOUR_GATE_KEY and the approver's email in place of you@example.com. When you sign up, we fill in both for you. On the Free plan the approver is the email you signed up with; Pro can ask anyone.

    Gate approval rule
    
    Before you send any message or email, spend or move money, change or delete data, or make any API call that changes something outside this chat, ask a person for approval through Gate first. Read-only actions don't need approval.
    
    Step 1. Ask. Send this HTTP request:
    POST https://gateapprove.com/approvals
    Authorization: Bearer YOUR_GATE_KEY
    Content-Type: application/json
    
    {"title": "<one short line: what you want to do>",
     "description": "<why, and anything the approver should know>",
     "action_payload": {<the exact action and its details>},
     "requester_name": "<your name as an agent>",
     "channel": "email",
     "approver_email": "you@example.com",
     "expires_in_seconds": 3600}
    
    Save the "id" from the answer.
    
    Step 2. Wait for the answer. Every 15 seconds, send:
    GET https://gateapprove.com/approvals/{id}
    Authorization: Bearer YOUR_GATE_KEY
    
    - "status": "approved" means go ahead. Do exactly the action you described, nothing more.
    - "status": "rejected" or "expired" means stop. Do not act, and tell me it was not approved.
    - "status": "pending" means keep waiting.
    
    Never act without "approved". If Gate returns an error or can't be reached, do not act.
    API reference: https://gateapprove.com/docs
  3. Approve from your inbox

    When your agent wants to do something risky, Gate emails the approver an "Approval needed" message with Approve and Reject. They tap one and confirm. See what they get.

    Your agent goes ahead only on approved. If the request is rejected, or nobody answers in time, it stops.

For developers: the same calls with curl

Get a key

curl -X POST https://gateapprove.com/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'

Answer

{"api_key": "<your new key>", "plan": "free", "monthly_limit": 25,
 "email_verified": false, "unverified_email_limit": 3,
 "note": "Store this key now; it is shown once. Approving your first approval email confirms your sign-up address; until then this key can send 3 approval emails. No email within a minute? Check your junk or spam folder."}

Ask for approval

Before the risky action, your agent describes what it wants to do and who should decide. Gate emails it to the approver. On the Free plan, approver_email must be the email you signed up with; on Pro it can be any address.

curl -X POST https://gateapprove.com/approvals \
  -H "Authorization: Bearer YOUR_GATE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Refund $450 to customer #1832",
    "description": "Customer reports a double charge on order 5521.",
    "action_payload": {"action": "stripe.refund", "amount_cents": 45000, "currency": "usd"},
    "requester_name": "support-bot",
    "channel": "email",
    "approver_email": "you@example.com",
    "expires_in_seconds": 3600
  }'

Answer (201 Created)

{"id": "apr_x7k2m9q4w8e1r5t3y6u0i2o7", "status": "pending", "channel": "email",
 "approver_email": "you@example.com", "expires_at": "2026-10-28T11:15:00Z",
 "decided_at": null, "decided_by": null, ...}

Check the answer

Check every 5 to 30 seconds until the status is no longer pending. Act only if it is approved.

curl https://gateapprove.com/approvals/apr_x7k2m9q4w8e1r5t3y6u0i2o7 \
  -H "Authorization: Bearer YOUR_GATE_KEY"

Answer (200 OK)

{"id": "apr_x7k2m9q4w8e1r5t3y6u0i2o7", "status": "approved",
 "decided_by": "email:you@example.com", "decided_at": "2026-10-28T10:17:42Z", ...}

All fields and errors are in the API reference.

Works with your agent

Gate is a plain HTTPS API, so it works with any agent that can make web requests and follow instructions.

If it can call a URL, it works with Gate.

  • Grok bots
  • Claude Code
  • Claude apps with tools
  • ChatGPT and OpenAI agents
  • Custom GPT actions
  • Cursor and Cursor agents
  • LangChain and LangGraph
  • CrewAI
  • AutoGen
  • n8n
  • Zapier
  • Make
  • Your own Python or Node agent

Grok bots

Paste the block from step 2 into your bot's instructions. That's the whole setup.

Coding agents

Claude Code, Cursor and similar: paste the block into the system prompt or a rules file, such as CLAUDE.md or your Cursor rules.

n8n, Zapier and Make

Add an HTTP Request step that sends the approval request, then one that checks it until the status isn't pending. Continue only on approved.

Your own code

LangChain, CrewAI, AutoGen or plain Python and Node: add the two calls as a tool, or paste the block into your agent's system prompt.

Your agent needs a way to make web requests, such as a tool, an action or an HTTP step. Names are products you can use Gate with; no official partnership implied.

When to use it

Use Gate for anything you would want a person to check first. Let everything else run as normal.

Your agent wants to send an email

A reply to a customer, an invoice batch or a message to your whole list.

"Send the weekly invoice batch (12 invoices)"

Your agent wants to spend money

A refund, a purchase or a payment to a supplier.

"Refund $450 to customer #1832"

Your agent wants to delete data

Removing records, closing accounts or changing a database.

"Delete 2,300 inactive users"

What the approver sees

A short request with everything needed to decide, and two choices.

  • By email: a message titled "Approval needed" with Approve and Reject links. Each link opens a page with one confirm button, so a stray click or a link preview can't decide by accident.
  • In Slack (coming soon, not self-serve yet): a message in a channel with Approve and Reject buttons. Tell us if you want it.
  • They see the title, who is asking, the details and when the request expires.
  • No account or app needed for email approvers.

Simple pricing

Start free. Move to Pro when your agent needs more. No overage charges and no surprise bills.

Free

To try Gate and for small agents

US$0 / month

  • 25 approvals per month
  • Email approvals to your own sign-up address
  • No credit card
Get a free API key

Pro

For agents doing real work every day

US$29 / month, flat

Prices are in US dollars. Taxes such as GST are added at checkout where they apply.

  • Up to 1,000 approvals per month
  • Email approvals to any address
  • Slack approvals coming soon (not self-serve yet). Tell us if you want it
  • No overage charges
  • Cancel any time

Payments are handled by Stripe.

For agents: call POST /billing/checkout with your key and open the returned link instead. Manage or cancel with POST /billing/portal.

Limits are per API key and reset each calendar month (UTC). When a key reaches its limit, POST /approvals returns HTTP 402 plan_limit_reached and nothing is created. Checking an existing approval is never limited.

Questions

How do I install it?

There is nothing to install. Get a free key with your email, then paste the block from step 2 into your agent's instructions, system prompt or rules file. From then on your agent asks before risky actions. Developers can call the two HTTP endpoints directly instead.

How long does it take to set up?

About two minutes: get a key, paste one block into your agent, done. There is no SDK to install and nothing to configure for email approvals.

Will it slow my agent down?

Only the actions you send to Gate wait, and only until a person answers. Everything else your agent does runs as before. You choose how long a request stays open, from 1 minute to 7 days (24 hours if you don't say).

What happens if nobody responds?

The request expires at the time you set. Its status becomes expired, the Approve and Reject options stop working, and your agent should not act.

What does it cost?

Free gives you 25 approvals a month. Pro is US$29 a month, flat, for up to 1,000. Prices are in US dollars. Taxes such as GST are added at checkout where they apply. There are no overage charges: at the limit, new requests are refused with HTTP 402 until the next month or an upgrade.

Which channels can approvers use?

Email is the self-serve channel. On the Free plan, approval emails go only to the address you signed up with, so you approve your own agent's actions; on Pro they can go to any address. Slack is coming soon but isn't self-serve yet, so you can't connect your own Slack workspace today. If you want them, email hello@gateapprove.com. Each request uses one channel.

How is my API key stored?

Gate keeps only a SHA-256 hash of your key, so the key is shown once, when you sign up, and can't be shown again. Keep it in your agent's secret settings, not in your code. One key per email.

Can a decision be changed, or made twice?

No. Once a request is approved, rejected or expired, that is final. If two people click at the same moment, exactly one decision counts. Your approvals are only visible to the key that created them.

Can Gate tell my agent instead of it checking?

Yes, Gate can send a signed webhook to your server when a request is approved or rejected. Setting a webhook up for a key isn't self-serve yet; checking with GET /approvals/{id} always works.

Put a person in front of your agent's next risky action

Get a free API key now. One key per email. The key is shown once, so keep it somewhere safe.

Free for 25 approvals a month. No credit card.

Lost your key?

Replace it by email. Your old key stops working only after you confirm. Your plan and usage stay the same.