curl --request PATCH \
--url https://app.sendmux.ai/api/v1/mailbox/messages/{message_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"flagged": true,
"keywords": {
"$answered": true,
"agent_triaged": true,
"needs_reply": false
},
"seen": true
}
'import requests
url = "https://app.sendmux.ai/api/v1/mailbox/messages/{message_id}"
payload = {
"flagged": True,
"keywords": {
"$answered": True,
"agent_triaged": True,
"needs_reply": False
},
"seen": True
}
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({
flagged: true,
keywords: {$answered: true, agent_triaged: true, needs_reply: false},
seen: true
})
};
fetch('https://app.sendmux.ai/api/v1/mailbox/messages/{message_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/mailbox/messages/{message_id}"
payload := strings.NewReader("{\n \"flagged\": true,\n \"keywords\": {\n \"$answered\": true,\n \"agent_triaged\": true,\n \"needs_reply\": false\n },\n \"seen\": true\n}")
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": {
"bcc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"cc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"flags": {
"answered": true,
"draft": true,
"flagged": true,
"seen": true
},
"folder_ids": [
"<string>"
],
"from": {
"email": "agent@example.com",
"name": "Support"
},
"has_attachments": true,
"id": "<string>",
"keywords": [
"$seen",
"$flagged",
"agent_triaged"
],
"preview": "<string>",
"received_at": "<string>",
"sent_at": "<string>",
"size_bytes": 123,
"subject": "<string>",
"thread_id": "<string>",
"to": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"html_body": "<string>",
"text_body": "<string>",
"attachments": [
{
"content_id": "<string>",
"content_type": "application/pdf",
"disposition": "attachment",
"filename": "invoice.pdf",
"id": "<string>",
"size_bytes": 12345,
"download_url": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=..."
}
]
}
}{
"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 mailbox message flags
Updates mutable message flags and keywords unconditionally unless If-Match is supplied. Send If-Match with a prior ETag to reject stale edits.
curl --request PATCH \
--url https://app.sendmux.ai/api/v1/mailbox/messages/{message_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"flagged": true,
"keywords": {
"$answered": true,
"agent_triaged": true,
"needs_reply": false
},
"seen": true
}
'import requests
url = "https://app.sendmux.ai/api/v1/mailbox/messages/{message_id}"
payload = {
"flagged": True,
"keywords": {
"$answered": True,
"agent_triaged": True,
"needs_reply": False
},
"seen": True
}
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({
flagged: true,
keywords: {$answered: true, agent_triaged: true, needs_reply: false},
seen: true
})
};
fetch('https://app.sendmux.ai/api/v1/mailbox/messages/{message_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/mailbox/messages/{message_id}"
payload := strings.NewReader("{\n \"flagged\": true,\n \"keywords\": {\n \"$answered\": true,\n \"agent_triaged\": true,\n \"needs_reply\": false\n },\n \"seen\": true\n}")
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": {
"bcc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"cc": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"flags": {
"answered": true,
"draft": true,
"flagged": true,
"seen": true
},
"folder_ids": [
"<string>"
],
"from": {
"email": "agent@example.com",
"name": "Support"
},
"has_attachments": true,
"id": "<string>",
"keywords": [
"$seen",
"$flagged",
"agent_triaged"
],
"preview": "<string>",
"received_at": "<string>",
"sent_at": "<string>",
"size_bytes": 123,
"subject": "<string>",
"thread_id": "<string>",
"to": [
{
"email": "agent@example.com",
"name": "Support"
}
],
"html_body": "<string>",
"text_body": "<string>",
"attachments": [
{
"content_id": "<string>",
"content_type": "application/pdf",
"disposition": "attachment",
"filename": "invoice.pdf",
"id": "<string>",
"size_bytes": 12345,
"download_url": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=..."
}
]
}
}{
"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
Path Parameters
Query Parameters
Mailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
Body
Map of message keyword names to booleans. true sets the keyword; false clears it. Keyword names are normalised to lowercase. Lifecycle keywords such as $draft are read-only.
Hide child attributes
Hide child attributes
{ "$answered": true, "agent_triaged": true, "needs_reply": false }
Response
Updated message
true Hide child attributes
Hide child attributes
Message ID
Active message keywords, including system flags and custom labels.
["$seen", "$flagged", "agent_triaged"]
Attachment metadata for this message. Each item includes a short-lived download_url; if it expires, fetch message metadata again.
Hide child attributes
Hide child attributes
Content ID for inline attachments, when present.
"application/pdf"
"attachment"
"invoice.pdf"
Attachment blob ID.
12345
Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.
"https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=..."
Was this page helpful?