> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent webhooks

> Hand an agent work from any app with a single HTTPS request.

Every agent can have its own webhook URL. Anything that can send an HTTPS `POST` — Zapier, n8n, GitHub Actions, an alerting rule, a cron job, Claude Code, or your own code — can use it to give the agent a task. Each call shows up in the agent's conversation, just like a message from you.

> [!NOTE]
>
> Webhooks are included on every paid plan.

## Get a webhook URL

**1. Open the agent's webhook**

In your project's **Agents** list, find the agent and select **Add to other tools**, next to **Add to Slack**. Once the webhook is set up, it reads **Other tools**.

**2. Generate the URL**

Choose **Generate webhook URL**. Copy the URL — it's the only credential, so treat it like a password.

**3. Call it**

Send a `POST` with whatever the agent should work on. The dialog shows a ready-to-copy `curl` example.

```bash theme={null}
curl -X POST "<your webhook URL>" \
  -H "Content-Type: application/json" \
  -d '{"alert": "Checkout error rate above 5%", "service": "payments"}'
```

## What you send

The body is yours: JSON, plain text, or form data, up to 256 KB. There's no required format — the agent reads it as the message.

## What you get back

By default the request waits for the agent's reply:

| Status | Body | Meaning |
| - | - | - |
| `200` | `{"ok": true, "event_id": "…", "reply": "…"}` | The agent finished; `reply` is its answer. |
| `202` | `{"ok": true, "event_id": "…", "status": "processing"}` | Still working after about 55 seconds, or waiting on your approval. The result appears in the conversation. |
| `402` | error | Your plan doesn't include webhooks, or you're out of credits. |
| `404` | error | The URL is wrong, was rotated, or is disabled. |
| `429` | error | More than 10 calls a minute to this webhook. Retry after the `Retry-After` header. |

To stream the reply as it's written, add `Accept: text/event-stream` (or `?stream=1` to the URL). Hanging up early doesn't stop the agent — it finishes the task and the result stays in the conversation.

## Good to know

* One URL per agent. Calls run as you, with the same connected apps and approvals as your own messages.
* **Rotate** issues a new URL and stops the old one immediately. **Disable** stops calls until you enable it again.
* Each call uses credits the same way a message from you does.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.