import { createClient } from "@mailsai/sdk";
const client = createClient(); // reads MAILS_API_KEY
const result = await client.webhooks.update(
"whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
{
active: false,
},
);
console.log(result);from mailsai import create_client
client = create_client() # reads MAILS_API_KEY
result = client.update_webhook(
"whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
active=False,
)
print(result)curl -X PATCH 'https://api.mails.ai/v1/webhooks/whe_01JZX8K3M9Q4P7VN2YB6RTDC0E' \
-H "Authorization: Bearer $MAILS_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "active": false }'mails webhooks update whe_01JABC --active false{
"name": "mails_webhooks_update",
"arguments": {
"webhook_id": "whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
"active": false
}
}{
"id": "whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
"url": "https://example.com",
"event_types": ["<event_types>"],
"description": "<description>",
"active": false,
"secret_rotated_at": "2026-10-04T12:00:00.000Z",
"previous_secret_expires_at": "2026-10-04T12:00:00.000Z",
"created_at": "<created_at>"
}200 The updated endpoint.
400 Invalid request — malformed JSON or a field failed
validation. Also feature_not_enabled when this
server has a feature switched off (custom domains
before they are available).
401 Missing or invalid API key.
403 The API key lacks the required scope
(insufficient_scope), or the token belongs to an
app connected by sign-in and this operation is
closed to connected apps
(connected_app_not_allowed).
404 Resource not found in this workspace, or the agent
a send names is archived (agent_archived).
422 Unprocessable — agent paused, recipient suppressed,
a recipient at test.mails.ai other than
reply@test.mails.ai (unknown_test_address), or
abuse guard.
500 Internal server error.Update a webhook endpoint
import { createClient } from "@mailsai/sdk";
const client = createClient(); // reads MAILS_API_KEY
const result = await client.webhooks.update(
"whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
{
active: false,
},
);
console.log(result);from mailsai import create_client
client = create_client() # reads MAILS_API_KEY
result = client.update_webhook(
"whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
active=False,
)
print(result)curl -X PATCH 'https://api.mails.ai/v1/webhooks/whe_01JZX8K3M9Q4P7VN2YB6RTDC0E' \
-H "Authorization: Bearer $MAILS_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "active": false }'mails webhooks update whe_01JABC --active false{
"name": "mails_webhooks_update",
"arguments": {
"webhook_id": "whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
"active": false
}
}{
"id": "whe_01JZX8K3M9Q4P7VN2YB6RTDC0E",
"url": "https://example.com",
"event_types": ["<event_types>"],
"description": "<description>",
"active": false,
"secret_rotated_at": "2026-10-04T12:00:00.000Z",
"previous_secret_expires_at": "2026-10-04T12:00:00.000Z",
"created_at": "<created_at>"
}200 The updated endpoint.
400 Invalid request — malformed JSON or a field failed
validation. Also feature_not_enabled when this
server has a feature switched off (custom domains
before they are available).
401 Missing or invalid API key.
403 The API key lacks the required scope
(insufficient_scope), or the token belongs to an
app connected by sign-in and this operation is
closed to connected apps
(connected_app_not_allowed).
404 Resource not found in this workspace, or the agent
a send names is archived (agent_archived).
422 Unprocessable — agent paused, recipient suppressed,
a recipient at test.mails.ai other than
reply@test.mails.ai (unknown_test_address), or
abuse guard.
500 Internal server error.Path Parameters
Webhook endpoint id (whe_…).
Body Parameters
A new https:// URL for the endpoint, checked as on create. The signing secret stays the same, and retries still due go to the new URL; left out, the URL is unchanged.
Events to deliver, at least one. "*" is every event except thread.created, thread.updated, thread.deleted and message.delayed, sent only to an endpoint that names them.
Replaces the endpoint's note, up to 255 characters; left out, it is unchanged. null is refused: clear it with an empty string, which is returned as it is.
false pauses the endpoint: nothing is delivered to it, events raised meanwhile are not sent when it resumes, and a retry that comes due is dead-lettered. true resumes it; left out, it is unchanged.
An empty event_types list is refused with 422 invalid_param_value, as on create. An app connected by sign-in may change everything except url (403 connected_app_not_allowed).
Response
Webhook endpoint id (whe_…).
The URL events are POSTed to.
The event types this endpoint receives. * is every type except thread.created, thread.updated, thread.deleted and message.delayed, which reach an endpoint only when it lists them by name.
Your note about the endpoint, or null when it has none.
false while the endpoint is paused: nothing is delivered to it until PATCH /v1/webhooks/{id} sets it back to true.
When the signing secret was last rotated.
While set, deliveries are signed with both the new and the previous secret; null once the previous one stops signing.
When the endpoint was created (ISO 8601, UTC).
Was this page helpful?