curl --request PATCH \
--url https://app.sendmux.ai/api/v1/providers/{public_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://app.sendmux.ai/api/v1/providers/{public_id}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://app.sendmux.ai/api/v1/providers/{public_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.sendmux.ai/api/v1/providers/{public_id}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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": {
"allowed_actions": {
"activate": true,
"deactivate": true,
"delete": true,
"test": true,
"update": true
},
"created_at": "2026-05-25T02:18:00Z",
"from_email": "<string>",
"from_name": "<string>",
"has_refresh_token": true,
"has_smtp_password": true,
"id": "dprov_clxxxxxxxxxxxxxxxxxxxxxxxxx",
"is_active": true,
"is_editable": true,
"is_shared": true,
"last_tested_at": "<string>",
"last_used_at": "<string>",
"name": "Transactional SMTP",
"oauth_email": "<string>",
"percentage": 100,
"quotas": {
"per_day": {
"max": 60,
"min": 60
},
"per_hour": {
"max": 60,
"min": 60
},
"per_minute": {
"max": 60,
"min": 60
},
"per_second": {
"max": 60,
"min": 60
}
},
"reply_to_email": "<string>",
"reply_to_name": "<string>",
"smtp_host": "<string>",
"smtp_port": 123,
"smtp_protocol": "<string>",
"smtp_username": "<string>",
"status": "active",
"status_reason": "<string>",
"tracking_domain": "<string>",
"type": "smtp",
"updated_at": "2026-05-25T02:18:00Z"
}
}{
"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
}{
"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
}{
"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
}Update a sending account
Updates a custom sending account. The shared Amazon SES account cannot be edited here; use activate/deactivate and the limit-request endpoint for the allowed shared-account actions.
curl --request PATCH \
--url https://app.sendmux.ai/api/v1/providers/{public_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://app.sendmux.ai/api/v1/providers/{public_id}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://app.sendmux.ai/api/v1/providers/{public_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.sendmux.ai/api/v1/providers/{public_id}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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": {
"allowed_actions": {
"activate": true,
"deactivate": true,
"delete": true,
"test": true,
"update": true
},
"created_at": "2026-05-25T02:18:00Z",
"from_email": "<string>",
"from_name": "<string>",
"has_refresh_token": true,
"has_smtp_password": true,
"id": "dprov_clxxxxxxxxxxxxxxxxxxxxxxxxx",
"is_active": true,
"is_editable": true,
"is_shared": true,
"last_tested_at": "<string>",
"last_used_at": "<string>",
"name": "Transactional SMTP",
"oauth_email": "<string>",
"percentage": 100,
"quotas": {
"per_day": {
"max": 60,
"min": 60
},
"per_hour": {
"max": 60,
"min": 60
},
"per_minute": {
"max": 60,
"min": 60
},
"per_second": {
"max": 60,
"min": 60
}
},
"reply_to_email": "<string>",
"reply_to_name": "<string>",
"smtp_host": "<string>",
"smtp_port": 123,
"smtp_protocol": "<string>",
"smtp_username": "<string>",
"status": "active",
"status_reason": "<string>",
"tracking_domain": "<string>",
"type": "smtp",
"updated_at": "2026-05-25T02:18:00Z"
}
}{
"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
}{
"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
}{
"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.
Headers
Weak ETag from a prior GET. Reject with 409 conflict when the server's current ETag differs.
Path Parameters
Sending account public ID
"dprov_clxxxxxxxxxxxxxxxxxxxxxxxxx"
Body
255"sender@example.com"
255"Acme"
1 - 255"Transactional SMTP"
0 <= x <= 100100
Hide child attributes
Hide child attributes
Quota value. Use a number for a fixed cap, a min/max range, or null to clear on PATCH.
x > 0Quota value. Use a number for a fixed cap, a min/max range, or null to clear on PATCH.
x > 0Quota value. Use a number for a fixed cap, a min/max range, or null to clear on PATCH.
x > 0Quota value. Use a number for a fixed cap, a min/max range, or null to clear on PATCH.
x > 0255"support@example.com"
255"Support"
1 - 255"smtp.example.com"
1 - 500"new-smtp-password"
1 <= x <= 65535587
tls, ssl, none, starttls "starttls"
1 - 255"api-user"
255"click.example.com"
Response
Updated sending account
true Hide child attributes
Hide child attributes
ISO 8601 creation timestamp
"2026-05-25T02:18:00Z"
Default From email address.
Default From display name.
Whether an OAuth account has an active connection token.
Whether a custom SMTP password is stored.
Sending account public ID
"dprov_clxxxxxxxxxxxxxxxxxxxxxxxxx"
Whether this account is enabled for sending.
False when the account is platform-managed.
True for the team's shared Amazon SES account.
Last connection test timestamp.
Last send timestamp.
Display name
"Transactional SMTP"
Connected account email for OAuth accounts.
Routing weight percentage.
100
Hide child attributes
Hide child attributes
Default Reply-To email address.
Default Reply-To display name.
SMTP host for custom SMTP accounts.
SMTP port for custom SMTP accounts.
SMTP security mode.
SMTP username for custom SMTP accounts.
Current sending account status.
active, inactive, error, pending "active"
Public-safe reason for the current status.
Custom tracking hostname.
Sending account type. amazon_ses is the shared managed account.
smtp, gmail_api, outlook_api, amazon_ses "smtp"
ISO 8601 last update timestamp
"2026-05-25T02:18:00Z"
Was this page helpful?