curl --request GET \
--url https://app.sendmux.ai/api/v1/webhooks \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sendmux.ai/api/v1/webhooks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sendmux.ai/api/v1/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sendmux.ai/api/v1/webhooks"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": true,
"data": [
{
"created_at": "2026-04-23T09:12:00Z",
"enabled": true,
"event_types": [
"message.bounced",
"message.received"
],
"failing": false,
"filters": {
"mailbox_ids": [
"mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx"
]
},
"id": "whk_clxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "Acme inbound forwarder",
"updated_at": "2026-04-23T09:12:00Z",
"url": "https://hooks.acme.com/sendmux"
}
],
"pagination": {
"has_more": true,
"next_cursor": "<string>"
}
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}List webhook subscriptions
Returns a cursor-paginated list of webhook subscriptions configured for the team, ordered by created_at descending. The signing secret is never included. Pass cursor=<next_cursor> from the previous response to fetch the next page.
curl --request GET \
--url https://app.sendmux.ai/api/v1/webhooks \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sendmux.ai/api/v1/webhooks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sendmux.ai/api/v1/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sendmux.ai/api/v1/webhooks"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": true,
"data": [
{
"created_at": "2026-04-23T09:12:00Z",
"enabled": true,
"event_types": [
"message.bounced",
"message.received"
],
"failing": false,
"filters": {
"mailbox_ids": [
"mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx"
]
},
"id": "whk_clxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "Acme inbound forwarder",
"updated_at": "2026-04-23T09:12:00Z",
"url": "https://hooks.acme.com/sendmux"
}
],
"pagination": {
"has_more": true,
"next_cursor": "<string>"
}
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}{
"error": {
"code": "invalid_parameter",
"message": "<string>",
"retryable": false,
"doc_url": "<string>",
"errors": [
{
"code": "invalid_string",
"field": "recipient.email",
"message": "<string>"
}
],
"param": "<string>"
},
"meta": {
"request_id": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"ok": false
}Authorizations
Sendmux API key. Use a root API key for Management API routes, or a mailbox credential for Mailbox API routes. Obtain keys from the dashboard under API Keys.
Query Parameters
Pagination cursor — the next_cursor from the previous response.
Maximum results (default 50, max 100)
1 <= x <= 100Response
Subscription list
true Hide child attributes
Hide child attributes
ISO 8601 creation timestamp
"2026-04-23T09:12:00Z"
When false, no events are delivered to this subscription.
true
Event types this subscription receives.
Event types a webhook may subscribe to. sendmux.test is accepted so you can verify end-to-end delivery via POST /webhooks/{id}/test.
message.delivered, message.bounced, message.complained, message.rejected, message.delivery_delayed, message.received, message.received.spam, sendmux.test ["message.bounced", "message.received"]
True when the 24-hour retry window has been exhausted for this subscription. Reset by updating the subscription (e.g. fixing the URL) and re-enabling.
false
Webhook public ID
"whk_clxxxxxxxxxxxxxxxxxxxxxxxxx"
Optional human-friendly label used in dashboard list/detail pages. May be null for subscriptions created without a name.
"Acme inbound forwarder"
ISO 8601 last-modified timestamp
"2026-04-23T09:12:00Z"
HTTPS endpoint that receives signed event POSTs.
"https://hooks.acme.com/sendmux"
Was this page helpful?