> ## Documentation Index
> Fetch the complete documentation index at: https://agentmail.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://agentmail.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://agentmail.manicule.dev/api/mcp.
> Every agent surface: https://agentmail.manicule.dev/.well-known/llms-manifest.json

# Update Webhook (/api-reference/update-webhook-3)

<!-- agent-signals: reading_time_min: 4 · est_tokens: 2547 · updated: 2026-09-29 -->
Related: [Sign Up](/api-reference/sign-up.md), [Attach Human](/api-reference/attach-human.md), [Verify](/api-reference/verify.md), [List Inboxes](/api-reference/list-inboxes.md), [Create Inbox](/api-reference/create-inbox.md), [Search Inboxes](/api-reference/search-inboxes.md)

# Update Webhook

`PATCH /v0/pods/{pod_id}/webhooks/{webhook_id}`

> **CLI:**
> ```bash
> agentmail pods webhooks update --pod-id <pod_id> --webhook-id <webhook_id> --add-inbox-ids <inbox_id>
> ```

Base URL: `https://api.agentmail.to`

Base URL: `https://x402.api.agentmail.to`

Base URL: `https://mpp.api.agentmail.to`

Base URL: `https://api.agentmail.eu`

## OpenAPI

```json
{
  "servers": [
    {
      "url": "https://api.agentmail.to",
      "description": "prod"
    },
    {
      "url": "https://x402.api.agentmail.to",
      "description": "prod-x402"
    },
    {
      "url": "https://mpp.api.agentmail.to",
      "description": "prod-mpp"
    },
    {
      "url": "https://api.agentmail.eu",
      "description": "eu-prod"
    }
  ],
  "security": [
    {
      "Bearer": []
    }
  ],
  "securitySchemes": {
    "Bearer": {
      "type": "http",
      "scheme": "bearer"
    }
  },
  "parameters": [
    {
      "name": "pod_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string",
        "description": "ID of pod.",
        "title": "PodId"
      }
    },
    {
      "name": "webhook_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string",
        "description": "ID of webhook.",
        "title": "WebhookId"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "properties": {
            "event_types": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "message.received",
                  "message.received.spam",
                  "message.received.blocked",
                  "message.received.unauthenticated",
                  "message.sent",
                  "message.delivered",
                  "message.bounced",
                  "message.complained",
                  "message.rejected",
                  "message.opened",
                  "domain.verified"
                ],
                "title": "EventType"
              },
              "description": "Event types for which to send events.",
              "title": "EventTypes"
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to true to re-enable a webhook that was disabled after repeated failed deliveries, or false\nto disable it. Events that occurred while the webhook was disabled are not redelivered.\nRe-enabling a webhook subscribed to `message.received.spam`, `message.received.blocked`, or\n`message.received.unauthenticated` (or to every event type, with no filter) requires the\nmatching label permissions on the API key."
            },
            "add_inbox_ids": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Inboxes for which to send events. Maximum 10 per webhook.",
              "title": "InboxIds"
            },
            "remove_inbox_ids": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Inboxes for which to send events. Maximum 10 per webhook.",
              "title": "InboxIds"
            }
          },
          "description": "Update a pod-scoped webhook. You can adjust which inboxes within the pod it listens to, replace\nits `event_types`, and set `enabled`, but not change the pod scope itself.",
          "title": "UpdatePodWebhookRequest"
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Response with status 200",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "webhook_id": {
                "type": "string",
                "description": "ID of webhook.",
                "title": "WebhookId"
              },
              "url": {
                "type": "string",
                "description": "URL of webhook endpoint.",
                "title": "Url"
              },
              "event_types": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "message.received",
                    "message.received.spam",
                    "message.received.blocked",
                    "message.received.unauthenticated",
                    "message.sent",
                    "message.delivered",
                    "message.bounced",
                    "message.complained",
                    "message.rejected",
                    "message.opened",
                    "domain.verified"
                  ],
                  "title": "EventType"
                },
                "description": "Event types for which to send events.",
                "title": "EventTypes"
              },
              "pod_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Pods for which to send events. Maximum 10 per webhook.",
                "title": "PodIds"
              },
              "inbox_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Inboxes for which to send events. Maximum 10 per webhook.",
                "title": "InboxIds"
              },
              "pod_id": {
                "type": "string",
                "description": "ID of the pod the webhook belongs to: the pod it was created in, or the pod of the inbox it\nbelongs to. Absent for an organization webhook and on some inbox webhooks. This is not the\nlist of pods it receives events for; see `pod_ids`."
              },
              "inbox_id": {
                "type": "string",
                "description": "ID of the inbox the webhook belongs to, if it was created for an inbox. This is not the list\nof inboxes it receives events for; see `inbox_ids`."
              },
              "secret": {
                "type": "string",
                "description": "Secret for webhook signature verification."
              },
              "enabled": {
                "type": "boolean",
                "description": "Webhook is enabled."
              },
              "updated_at": {
                "type": "string",
                "format": "date-time",
                "description": "Time at which webhook was last updated."
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "description": "Time at which webhook was created."
              },
              "client_id": {
                "type": "string",
                "description": "Client ID of webhook.",
                "title": "ClientId"
              }
            },
            "required": [
              "webhook_id",
              "url",
              "secret",
              "enabled",
              "updated_at",
              "created_at"
            ],
            "title": "Webhook"
          }
        }
      }
    },
    "400": {
      "description": "Error response with status 400",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of error.",
                "title": "ErrorName"
              },
              "code": {
                "type": "string",
                "description": "Stable, machine-readable error code in snake_case (for example, not_found or missing_permission). Branch on this rather than the message text.",
                "title": "ErrorCode"
              },
              "message": {
                "type": "string",
                "description": "Error message.",
                "title": "ErrorMessage"
              },
              "errors": {
                "description": "Validation errors. Each entry has a path and a message identifying the invalid field."
              },
              "fix": {
                "type": "string",
                "description": "The concrete next action that resolves the error.",
                "title": "ErrorFix"
              },
              "docs": {
                "type": "string",
                "description": "Link to the error reference entry for this code.",
                "title": "ErrorDocs"
              }
            },
            "required": [
              "name",
              "errors"
            ],
            "title": "ValidationErrorResponse"
          }
        }
      }
    },
    "404": {
      "description": "Error response with status 404",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of error.",
                "title": "ErrorName"
              },
              "code": {
                "type": "string",
                "description": "Stable, machine-readable error code in snake_case (for example, not_found or missing_permission). Branch on this rather than the message text.",
                "title": "ErrorCode"
              },
              "message": {
                "type": "string",
                "description": "Error message.",
                "title": "ErrorMessage"
              },
              "fix": {
                "type": "string",
                "description": "The concrete next action that resolves the error.",
                "title": "ErrorFix"
              },
              "docs": {
                "type": "string",
                "description": "Link to the error reference entry for this code.",
                "title": "ErrorDocs"
              }
            },
            "required": [
              "name",
              "message"
            ],
            "title": "ErrorResponse"
          }
        }
      }
    }
  }
}
```
