API reference
/ v1/ orgs/ :orgId/ mail/ mailboxesThe mailboxes the caller is a member of, with their aliases and signature. Keys get an empty list.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
labelsstringUp to 100 characters.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
mailboxes: {
mailboxId: string
address: string
domain: string
displayName: string
signature: string
reminderMail: boolean
aliases: string[]
}[]
}
| {
mailboxes: {
mailboxId: string
address: string
domain: string
displayName: string
signature: string
reminderMail: boolean
aliases: string[]
}[]
labels: null | {
mailboxId: string
labels: {
labelId: string
name: string
}[]
}
}/ v1/ orgs/ :orgId/ mail/ preferencesThe caller's Mail preferences in the organization: categories (the inbox's category bar on or off) and push per mailbox (all, primary or off; primary unless changed).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).
Errors
403Mailboxes are only available to members.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/preferences' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
preferences: {
categories: boolean
push: {
[key: string]: "off" | "all" | "primary"
}
}
}/ v1/ orgs/ :orgId/ mail/ preferencesChanges the caller's Mail preferences: categories, and push for any of their mailboxes.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).
Request body
categoriesbooleanpushobjectKeys up to 100 characters. Values: "all" | "primary" | "off".
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/preferences' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"categories": true,
"push": {}
}'Response 200
{
preferences: {
categories: boolean
push: {
[key: string]: "off" | "all" | "primary"
}
}
}/ v1/ orgs/ :orgId/ mail/ threadsAll Mailboxes: one page of a view (inbox, starred, sent, drafts) across every mailbox the caller reads in the organization, newest first; each row names its mailboxId. In the inbox, category narrows it. With q, search results across those mailboxes (outside Spam and Trash, whatever the view), paged the same way. The cursor holds one position per mailbox, so pages merge without gaps or repeats; a page can be short while cursor is set.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
view"inbox" | "starred" | "sent" | "drafts"Default
"inbox".category"primary" | "transactions" | "updates" | "promotions"qstringUp to 200 characters.
cursorstringUp to 20,000 characters.
Errors
403Mailboxes are only available to members.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/threads' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
threads: {
mailboxId: string
orgId?: string
threadId: string
subject: string
snippet: string
participants: string[]
lastAt: number
messageCount: number
unreadCount: number
starred: boolean
labels: string[]
box: "archive" | "trash" | "inbox" | "spam"
hasAttachments: boolean
category: "primary" | "transactions" | "updates" | "promotions"
sender?: string
draftId?: string
snoozedUntil?: number
sendAt?: number
}[]
cursor: null | string
}/ v1/ orgs/ :orgId/ mail/ countsUnread inbox conversations per category across the caller's mailboxes in the organization (counts) and for each (mailboxes), and badge: unread Primary conversations in the mailboxes they get push for, in every organization they belong to (what the Mail app shows on its icon).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).
Errors
403Mailboxes are only available to members.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/counts' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
counts: {
primary: number
transactions: number
updates: number
promotions: number
}
mailboxes: {
[key: string]: {
primary: number
transactions: number
updates: number
promotions: number
}
}
badge: number
complete: boolean
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ settingsSets the mailbox's signature.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
signaturestringUp to 20,000 characters.
reminderMailboolean
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/settings' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"signature": "example",
"reminderMail": true
}'Response 200
{
mailbox: {
mailboxId: string
address: string
domain: string
displayName: string
signature: string
reminderMail: boolean
aliases: string[]
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ limitsThe organization's sending limits: messages per day, message size and recipients per message.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/limits' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
limits: {
sendPerDay: number
maxMessageMb: number
maxRecipients: number
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threadsOne page of conversations in a view (inbox, starred, sent, drafts, archive, all, spam, trash, or label with label), newest first, optionally matching q. In the inbox, category (primary, transactions, updates, promotions) narrows it to one category. Each row has its category and sender. Pass cursor to continue.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Query parameters
view"inbox" | "starred" | "snoozed" | "sent" | "drafts" | "scheduled" | "archive" | "all" | "spam" | "trash" | "label"Default
"inbox".labelany JSONqstringUp to 200 characters.
category"primary" | "transactions" | "updates" | "promotions"cursorstringUp to 2,000 characters.
Errors
400Choose a label.403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
threads: {
mailboxId: string
orgId?: string
threadId: string
subject: string
snippet: string
participants: string[]
lastAt: number
messageCount: number
unreadCount: number
starred: boolean
labels: string[]
box: "archive" | "trash" | "inbox" | "spam"
hasAttachments: boolean
category: "primary" | "transactions" | "updates" | "promotions"
sender?: string
draftId?: string
snoozedUntil?: number
sendAt?: number
}[]
cursor: null | string
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ countsUnread conversations in the mailbox's inbox per category; complete is false when the inbox was too large to count whole.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/counts' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
counts: {
primary: number
transactions: number
updates: number
promotions: number
}
complete: boolean
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ senders/ :address/ categoryMoves a sender's mail to a category: remembered for the mailbox's later mail from them, and applied now to threadId and the sender's other conversations in the inbox. Returns how many moved.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).addressAn email address (URL-encoded): the alias, or the forwarding address; under
marketinga person's email address or mobile number.
Request body
category"primary" | "transactions" | "updates" | "promotions"requiredthreadIdany JSON
Errors
400Enter a valid email address.403Mailboxes are only available to members.404Mailbox not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/senders/{address}/category' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"category": "primary"
}'Response 200
{
moved: number
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ actionsApplies one action to up to 100 conversations: archive, move to inbox, trash, spam, not spam, delete (from trash or spam only), read, unread, star, unstar, label or unlabel.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
threadIdsany JSON[]required1–100 items.
action"archive" | "inbox" | "trash" | "spam" | "not_spam" | "delete" | "read" | "unread" | "star" | "unstar" | "label" | "unlabel" | "snooze" | "unsnooze"requiredlabelIdany JSONuntilinteger
Errors
400Choose a label.400Choose when the conversation comes back.400Move the conversation to trash first.403Mailboxes are only available to members.404Mailbox not found404Label not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/actions' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"threadIds": [
{}
],
"action": "archive"
}'Response 200
{
changed: number
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ :threadIdA conversation and its messages, without bodies.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).
Query parameters
bodiesstring
Errors
403Mailboxes are only available to members.404Mailbox not found404Thread not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
thread: {
mailboxId: string
orgId?: string
threadId: string
subject: string
snippet: string
participants: string[]
lastAt: number
messageCount: number
unreadCount: number
starred: boolean
labels: string[]
box: "archive" | "trash" | "inbox" | "spam"
hasAttachments: boolean
category: "primary" | "transactions" | "updates" | "promotions"
sender?: string
draftId?: string
snoozedUntil?: number
sendAt?: number
}
messages: {
sendAt?: number
messageId: string
threadId: string
kind: "in" | "sent" | "draft"
from: {
name?: string
address: string
}
to: {
name?: string
address: string
}[]
cc: {
name?: string
address: string
}[]
bcc: {
name?: string
address: string
}[]
replyTo: {
name?: string
address: string
}[]
subject: string
snippet: string
at: number
unread: boolean
size: number
rfcMessageId: string
attachments: {
index: number
filename: string
contentType: string
size: number
cid?: string
inline: boolean
}[]
spam: boolean
verdicts?: {
[key: string]: string
}
deliveryStatus?: "failed" | "rejected" | "bounced" | "complained" | "sent" | "delivered" | "sending" | "delayed"
deliveryDetail?: string
meta: {
unsubscribe?: {
http?: string
mailto?: string
oneClick?: boolean
}
signedBy?: string[]
mailedBy?: string
arc?: string
calendar?: string
automated?: boolean
origin?: {
ip: string
country: string
region?: string
city?: string
}
}
}[]
}
| {
bodies: {
[key: string]: {
text: string
html?: string
inline: {
[key: string]: string
}
}
}
thread: {
mailboxId: string
orgId?: string
threadId: string
subject: string
snippet: string
participants: string[]
lastAt: number
messageCount: number
unreadCount: number
starred: boolean
labels: string[]
box: "archive" | "trash" | "inbox" | "spam"
hasAttachments: boolean
category: "primary" | "transactions" | "updates" | "promotions"
sender?: string
draftId?: string
snoozedUntil?: number
sendAt?: number
}
messages: {
sendAt?: number
messageId: string
threadId: string
kind: "in" | "sent" | "draft"
from: {
name?: string
address: string
}
to: {
name?: string
address: string
}[]
cc: {
name?: string
address: string
}[]
bcc: {
name?: string
address: string
}[]
replyTo: {
name?: string
address: string
}[]
subject: string
snippet: string
at: number
unread: boolean
size: number
rfcMessageId: string
attachments: {
index: number
filename: string
contentType: string
size: number
cid?: string
inline: boolean
}[]
spam: boolean
verdicts?: {
[key: string]: string
}
deliveryStatus?: "failed" | "rejected" | "bounced" | "complained" | "sent" | "delivered" | "sending" | "delayed"
deliveryDetail?: string
meta: {
unsubscribe?: {
http?: string
mailto?: string
oneClick?: boolean
}
signedBy?: string[]
mailedBy?: string
arc?: string
calendar?: string
automated?: boolean
origin?: {
ip: string
country: string
region?: string
city?: string
}
}
}[]
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ :threadId/ messages/ :messageId/ bodyA message's text and HTML, with short-lived links for inline images. Reading a received message marks it read.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).messageIdMessage id (
msg_…; Mirage messages aremmg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found404Message not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}/messages/{messageId}/body' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
text: string
html?: string
inline: {
[key: string]: string
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ :threadId/ messages/ :messageId/ attachments/ :indexA short-lived download link for an attachment.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).messageIdMessage id (
msg_…; Mirage messages aremmg_…).indexThe attachment's position in the message, from 0; or a Takeout archive's place in its import's
files.
Errors
403Mailboxes are only available to members.404Mailbox not found404Message not found404Attachment not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}/messages/{messageId}/attachments/{index}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
url: string
filename: string
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ :threadId/ messages/ :messageId/ rawA short-lived link to the original message (.eml).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).messageIdMessage id (
msg_…; Mirage messages aremmg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found404Message not found404No original for this message
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}/messages/{messageId}/raw' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
url: string
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ :threadId/ messages/ :messageId/ unsubscribeLeaves the mailing list a message came from: one-click (RFC 8058) when the sender offers it, else an unsubscribe email from this mailbox; otherwise the link for the reader to open.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).messageIdMessage id (
msg_…; Mirage messages aremmg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found404Message not found404This message has no unsubscribe link.409This mailbox's domain was removed.409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}/messages/{messageId}/unsubscribe' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
done: true
method: string
}
| {
done: false
url: string
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ threads/ :threadId/ messages/ :messageId/ invitationThe meeting a message carries and the event it became in this mailbox's calendars.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- calendar:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).threadIdConversation id (
thr_…), or in Mirage a thread id (mth_…).messageIdMessage id (
msg_…; Mirage messages aremmg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found404Message not found404This message has no invitation.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}/messages/{messageId}/invitation' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
invitation: {
timeZone: string
recurring: boolean
recurrenceId: null | number
organizer: null | {
email: string
name?: string
}
attendees: number
from: null | {
name?: string
email: string
}
event: null | {
calendarId: string
eventId: string
status: "cancelled" | "confirmed" | "tentative"
myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
isOrganizer: boolean
sequence: number
start: number
end: number
allDay: boolean
}
startDate?: string
endDate?: string
method: string
uid: string
summary: string
location: string
start: number
end: number
allDay: boolean
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ uploadsCompose attachments go straight to the bucket; the link only accepts the declared size and type.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
filenamestringrequired1–255 characters. Trimmed.
contentTypestringDefault
"application/octet-stream". Up to 255 characters. Matches^[\w.+-]+\/[\w.+-]+$. Trimmed.sizeintegerrequired≥ 0.
Errors
403Mailboxes are only available to members.404Mailbox not found413Attachments can be at most … MB in total.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/uploads' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"filename": "Example",
"size": 1
}'Response 201
{
uploadId: string
url: string
headers: {
"content-type": string
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ sendSends a message from the mailbox and files it in Sent. The domain must be verified. With replyTo, it's threaded as a reply; with draftId, the draft is removed. The response lists recipients that bounced or complained before.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body (up to 6,144 KB)
toobject[]Default
[]. Up to 500 items.to[].namestringUp to 200 characters. Trimmed.
to[].addressstringrequiredTrimmed. Lowercased.
ccobject[]Default
[]. Up to 500 items.cc[].namestringUp to 200 characters. Trimmed.
cc[].addressstringrequiredTrimmed. Lowercased.
bccobject[]Default
[]. Up to 500 items.bcc[].namestringUp to 200 characters. Trimmed.
bcc[].addressstringrequiredTrimmed. Lowercased.
subjectstringDefault
"". Up to 998 characters.htmlstringUp to 2,000,000 characters.
textstringUp to 2,000,000 characters.
attachments(object | object)[]Default
[]. Up to 50 items.replyToobjectreplyTo.threadIdany JSONrequiredreplyTo.messageIdany JSONrequireddraftIdany JSONsendAtintegerundoSecondsinteger1–30.
Errors
400Add at least one recipient.403Mailboxes are only available to members.404Mailbox not found409This mailbox's domain was removed.409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/send' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"to": [
{
"address": "example"
}
],
"cc": [
{
"address": "example"
}
],
"bcc": [
{
"address": "example"
}
]
}'Response 201
{
suppressed: {
address: string
reason: "bounce" | "complaint"
}[]
messageId: string
threadId: string
duplicate: boolean
box?: undefined
category: "primary" | "transactions" | "updates" | "promotions"
} | {
suppressed: {
address: string
reason: "bounce" | "complaint"
}[]
messageId: string
threadId: string
duplicate: boolean
box: "archive" | "trash" | "inbox" | "spam"
category?: "primary" | "transactions" | "updates" | "promotions"
}Response 202
{
draftId: string
threadId: string
sendAt: number
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ recipients/ checkRecipients that bounced or complained before, so compose can warn.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
addressesstring[]requiredUp to 500 items. Each up to 254 characters.
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/recipients/check' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"addresses": [
"example"
]
}'Response 200
{
suppressed: {
address: string
reason: "bounce" | "complaint"
}[]
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ recipients/ suggestAddress suggestions for compose and guest fields: the organization's people (their own mailboxes, by name), then contacts, then recent correspondents.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Query parameters
qstringDefault
"". Up to 200 characters.
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/recipients/suggest' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
suggestions: {
name?: string
address: string
source: "recent" | "contact" | "directory"
}[]
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ draftsSaves a new draft.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body (up to 6,144 KB)
toobject[]Default
[]. Up to 500 items.to[].namestringUp to 200 characters. Trimmed.
to[].addressstringrequiredTrimmed. Lowercased.
ccobject[]Default
[]. Up to 500 items.cc[].namestringUp to 200 characters. Trimmed.
cc[].addressstringrequiredTrimmed. Lowercased.
bccobject[]Default
[]. Up to 500 items.bcc[].namestringUp to 200 characters. Trimmed.
bcc[].addressstringrequiredTrimmed. Lowercased.
subjectstringDefault
"". Up to 998 characters.htmlstringUp to 2,000,000 characters.
textstringUp to 2,000,000 characters.
attachments(object | object)[]Default
[]. Up to 50 items.replyToobjectreplyTo.threadIdany JSONrequiredreplyTo.messageIdany JSONrequired
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/drafts' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"to": [
{
"address": "example"
}
],
"cc": [
{
"address": "example"
}
],
"bcc": [
{
"address": "example"
}
]
}'Response 201
{
draftId: string
threadId: string
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ drafts/ :draftIdA draft, for editing.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).draftIdDraft id: the draft's message id (
msg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/drafts/{draftId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
draft: {
failed?: string
sendAt?: number
draftId: string
threadId: string
replyTo?: {
threadId: string
messageId: string
}
to: {
name?: string
address: string
}[]
cc: {
name?: string
address: string
}[]
bcc: {
name?: string
address: string
}[]
subject?: string
html?: string
text: string
attachments: {
uploadId: string
filename: string
contentType: string
size: number
cid?: string
inline?: boolean
} | {
threadId: string
messageId: string
index: number
filename: string
contentType: string
size: number
cid?: string
inline?: boolean
}[]
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ drafts/ :draftIdReplaces a draft.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).draftIdDraft id: the draft's message id (
msg_…).
Request body (up to 6,144 KB)
toobject[]Default
[]. Up to 500 items.to[].namestringUp to 200 characters. Trimmed.
to[].addressstringrequiredTrimmed. Lowercased.
ccobject[]Default
[]. Up to 500 items.cc[].namestringUp to 200 characters. Trimmed.
cc[].addressstringrequiredTrimmed. Lowercased.
bccobject[]Default
[]. Up to 500 items.bcc[].namestringUp to 200 characters. Trimmed.
bcc[].addressstringrequiredTrimmed. Lowercased.
subjectstringDefault
"". Up to 998 characters.htmlstringUp to 2,000,000 characters.
textstringUp to 2,000,000 characters.
attachments(object | object)[]Default
[]. Up to 50 items.replyToobjectreplyTo.threadIdany JSONrequiredreplyTo.messageIdany JSONrequired
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/drafts/{draftId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"to": [
{
"address": "example"
}
],
"cc": [
{
"address": "example"
}
],
"bcc": [
{
"address": "example"
}
]
}'Response 200
{
draftId: string
threadId: string
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ drafts/ :draftId/ scheduleTakes a scheduled draft off the schedule (it stays a draft).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).draftIdDraft id: the draft's message id (
msg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/drafts/{draftId}/schedule' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ drafts/ :draftIdDiscards a draft.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).draftIdDraft id: the draft's message id (
msg_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/drafts/{draftId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ filtersInbound filters: conditions on received mail, actions on its conversation.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/filters' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
filters: {
filterId: string
match: {
from?: string
to?: string
subject?: string
words?: string
hasAttachment?: boolean
}
actions: {
labelId?: string
archive?: boolean
read?: boolean
star?: boolean
trash?: boolean
forward?: string
}
enabled: boolean
}[]
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ filtersCreates an inbound filter: conditions on received mail (all must match), actions on its conversation. At most 100 per mailbox.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
matchobjectrequiredmatch.fromstringUp to 200 characters. Trimmed.
match.tostringUp to 200 characters. Trimmed.
match.subjectstringUp to 200 characters. Trimmed.
match.wordsstringUp to 200 characters. Trimmed.
match.hasAttachmentbooleanactionsobjectrequiredactions.labelIdany JSONactions.archivebooleanactions.readbooleanactions.starbooleanactions.trashbooleanactions.forwardstringUp to 254 characters. Trimmed. Lowercased.
enabledboolean
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/filters' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"match": {
"from": "example",
"to": "example",
"subject": "Example"
},
"actions": {
"labelId": {},
"archive": true,
"read": true
}
}'Response 201
{
filter: {
filterId: string
match: {
from?: string
to?: string
subject?: string
words?: string
hasAttachment?: boolean
}
actions: {
labelId?: string
archive?: boolean
read?: boolean
star?: boolean
trash?: boolean
forward?: string
}
enabled: boolean
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ filters/ :filterIdReplaces a filter's conditions and actions, or turns it on or off.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).filterIdFilter id: a mail filter (
flt_…) or a saved issue filter (ifl_…).
Request body
matchobjectrequiredmatch.fromstringUp to 200 characters. Trimmed.
match.tostringUp to 200 characters. Trimmed.
match.subjectstringUp to 200 characters. Trimmed.
match.wordsstringUp to 200 characters. Trimmed.
match.hasAttachmentbooleanactionsobjectrequiredactions.labelIdany JSONactions.archivebooleanactions.readbooleanactions.starbooleanactions.trashbooleanactions.forwardstringUp to 254 characters. Trimmed. Lowercased.
enabledboolean
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/filters/{filterId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"match": {
"from": "example",
"to": "example",
"subject": "Example"
},
"actions": {
"labelId": {},
"archive": true,
"read": true
}
}'Response 200
{
filter: {
filterId: string
match: {
from?: string
to?: string
subject?: string
words?: string
hasAttachment?: boolean
}
actions: {
labelId?: string
archive?: boolean
read?: boolean
star?: boolean
trash?: boolean
forward?: string
}
enabled: boolean
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ filters/ :filterId/ applyRuns a filter over conversations already in the mailbox (a few seconds here, the rest in the background).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).filterIdFilter id: a mail filter (
flt_…) or a saved issue filter (ifl_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/filters/{filterId}/apply' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
conversations: number
scanned: number
background: boolean
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ forwardingForwarding addresses (filter action): added pending, confirmed with the code mailed to them.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/forwarding' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
addresses: {
address: string
status: "pending" | "verified"
verifiedAt?: number
}[]
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ forwardingAdds a forwarding address (or sends a new code to a pending one): the address gets a 6-digit code by email, valid 24 hours. Needs the mailbox's domain to be active; counts toward the daily sending limit.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
addressstringrequiredUp to 254 characters. Trimmed. Lowercased.
Errors
403Mailboxes are only available to members.404Mailbox not found409This mailbox's domain was removed.409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/forwarding' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"address": "example"
}'Response 201
{
address: {
address: string
status: "pending"
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ forwarding/ verifyConfirms a forwarding address with the code it received; filters can then forward to it. Five wrong codes need a new one.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
addressstringrequiredUp to 254 characters. Trimmed. Lowercased.
codestringrequired4–12 characters. Trimmed.
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/forwarding/verify' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"address": "example",
"code": "example"
}'Response 200
{
address: {
address: string
status: "pending" | "verified"
verifiedAt?: number
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ forwarding/ :addressRemoves a forwarding address; filters forwarding to it stop forwarding.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:send
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).addressAn email address (URL-encoded): the alias, or the forwarding address; under
marketinga person's email address or mobile number.
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/forwarding/{address}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ filters/ :filterIdDeletes a filter. Mail already filed stays where it is.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).filterIdFilter id: a mail filter (
flt_…) or a saved issue filter (ifl_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/filters/{filterId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ labelsThe mailbox's labels, by name.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/labels' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
labels: {
labelId: string
name: string
}[]
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ labelsCreates a label. Names are unique in the mailbox, ignoring case.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).
Request body
namestringrequired1–60 characters. Trimmed.
Errors
400A mailbox can have at most 200 labels.403Mailboxes are only available to members.404Mailbox not found409A label with this name exists.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/labels' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example"
}'Response 201
{
label: {
labelId: string
name: string
}
}/ v1/ orgs/ :orgId/ mail/ mailboxes/ :mailboxId/ labels/ :labelIdDeletes a label. Conversations stop showing it.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- mail:read
Path parameters
orgIdOrganization id (
org_…).mailboxIdMailbox id (
mbx_…).labelIdLabel id (
lbl_…).
Errors
403Mailboxes are only available to members.404Mailbox not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/labels/{labelId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ me/ mail/ mailboxesThe caller's mailboxes in every organization where they read mail, each with its orgId and aliases, and those organizations (orgs: orgId, slug, name).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Errors
403Mailboxes are only available to members.
curl 'https://api.cactive.com.au/v1/me/mail/mailboxes' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
mailboxes: {
orgId: string
mailboxId: string
address: string
domain: string
displayName: string
signature: string
reminderMail: boolean
aliases: string[]
}[]
orgs: {
orgId: string
slug: string
name: string
}[]
}/ v1/ me/ mail/ threadsAll Inboxes across organizations: one page of a view (inbox, starred, sent, drafts) across every mailbox the caller reads in every organization, newest first; each row names its mailboxId and orgId, and actions on it go to that organization's mailbox routes. In the inbox, category narrows it; with q, search results across them (outside Spam and Trash). Access is checked on every page: a mailbox the caller loses stops appearing, and one they gain starts below the rows already returned. The cursor holds one position per mailbox and the last row returned.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Query parameters
view"inbox" | "starred" | "sent" | "drafts"Default
"inbox".category"primary" | "transactions" | "updates" | "promotions"qstringUp to 200 characters.
cursorstringUp to 40,000 characters.
Errors
403Mailboxes are only available to members.
curl 'https://api.cactive.com.au/v1/me/mail/threads' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
threads: {
mailboxId: string
orgId?: string
threadId: string
subject: string
snippet: string
participants: string[]
lastAt: number
messageCount: number
unreadCount: number
starred: boolean
labels: string[]
box: "archive" | "trash" | "inbox" | "spam"
hasAttachments: boolean
category: "primary" | "transactions" | "updates" | "promotions"
sender?: string
draftId?: string
snoozedUntil?: number
sendAt?: number
}[]
cursor: null | string
}/ v1/ me/ mail/ countsUnread inbox conversations per category across the caller's mailboxes in every organization (counts) and for each (mailboxes), and badge: unread Primary conversations in the mailboxes they get push for.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Errors
403Mailboxes are only available to members.
curl 'https://api.cactive.com.au/v1/me/mail/counts' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
counts: {
primary: number
transactions: number
updates: number
promotions: number
}
mailboxes: {
[key: string]: {
primary: number
transactions: number
updates: number
promotions: number
}
}
badge: number
complete: boolean
}