Skip to the documentation
API

Subscriptions

Every operation in this group: what it accepts, what it returns and the errors it can answer with.

Operations

Newsletters and mailing lists the mailbox receives, found from the List-Unsubscribe header of the mail they send, as the Subscriptions page of the app shows them. Unsubscribe from one sender or a whole domain, or move what they sent and keep moving what they send.

GET/subscriptions

List subscriptions

Scopesthreads:readReads

One row per sender and address it writes to, with how much mail it sent, how much of it is unread and how much arrived in the last 30 days. A key or an app limited to particular addresses lists only the subscriptions delivered to them.

Requires the threads:read scope.

Query parameters

statusstring

active lists what still arrives, unsubscribed what you left.

One of"active""unsubscribed"Default"active"
qstring

Searches the sender name and address.

Up to 200 characters
sortstring

recent puts the newest mail first, most the senders with the most mail, unread those with the most unread, name sorts by sender.

One of"recent""most""unread""name"Default"recent"
limitinteger

Rows per page.

At least 1At most 200Default50
offsetinteger

How many rows to skip, for the next page.

At least 0Default0
addressstring

Only the subscriptions delivered to this address. One the key does not reach lists nothing.

3 to 320 characters

Returns

A page of subscriptions.

Errors

The errors every operation can return400401403404422500Error catalog

Also available in

SDK
subscriptions.list()
CLI
openemail subscriptions list
MCP
listSubscriptions

GET/subscriptions/domains

List subscriptions by domain

Scopesthreads:readReads

The same subscriptions, one row per sender domain with the counts of its senders added up, so a company that writes from several addresses is one row.

Requires the threads:read scope.

Query parameters

statusstring

active lists what still arrives, unsubscribed what you left.

One of"active""unsubscribed"Default"active"
qstring

Searches the sender name and address.

Up to 200 characters
sortstring

recent puts the newest mail first, most the senders with the most mail, unread those with the most unread, name sorts by sender.

One of"recent""most""unread""name"Default"recent"
limitinteger

Rows per page.

At least 1At most 200Default50
offsetinteger

How many rows to skip, for the next page.

At least 0Default0
addressstring

Only the subscriptions delivered to this address. One the key does not reach lists nothing.

3 to 320 characters

Returns

A page of sender domains.

Errors

The errors every operation can return400401403404422500Error catalog

Also available in

SDK
subscriptions.listDomains()
CLI
openemail subscriptions list-domains
MCP
listSubscriptionDomains

POST/subscriptions/domains/{domain}/unsubscribe

Unsubscribe from a whole domain

Scopesthreads:writeSends mail

Unsubscribes from every sender on the domain that can be unsubscribed without a person opening a page, with one-click or by email. skipped counts the senders that only offer a page, and failed the ones that did not accept it. Unsubscribing works the way the sender asks for it: a one-click request to its unsubscribe address when it offers one, an unsubscribe email from the address the mail arrived at when it gives a mailto, and otherwise the sender's own unsubscribe page in url, which a person has to open. method says which.

Requires the threads:write scope.

Path parameters

domainstringRequired

The sender domain, as GET /subscriptions/domains returns it.

Request body

binboolean

Also move every conversation from the senders to the Bin.

Defaultfalse
addressstring

Only the subscriptions delivered to this address.

3 to 320 characters

Returns

What happened to each sender, counted.

Errors

The errors every operation can return400401403404422500Error catalog

Also available in

SDK
subscriptions.unsubscribeDomain()
CLI
openemail subscriptions unsubscribe-domain
MCP
unsubscribeSubscriptionDomain

POST/subscriptions/{id}/unsubscribe

Unsubscribe from a sender

Scopesthreads:writeSends mail

Unsubscribing works the way the sender asks for it: a one-click request to its unsubscribe address when it offers one, an unsubscribe email from the address the mail arrived at when it gives a mailto, and otherwise the sender's own unsubscribe page in url, which a person has to open. method says which. With bin, every conversation from the sender also moves to the Bin.

Requires the threads:write scope.

Path parameters

idstringRequired

The subscription, as GET /subscriptions returns it.

Request body

binboolean

Also move every conversation from the sender to the Bin.

Defaultfalse

Returns

How it was unsubscribed.

Errors

422

unsubscribe_unsupported: the sender gives no way to unsubscribe.

502

unsubscribe_refused: the sender did not accept the one-click request and gives no address to write to.

The errors every operation can return400401403404500Error catalog

Also available in

SDK
subscriptions.unsubscribe()
CLI
openemail subscriptions unsubscribe
MCP
unsubscribeSubscription

POST/subscriptions/{id}/move

Move what a sender sent

Scopesthreads:writeChanges data

Moves every conversation from the sender to the archive, the Bin or a label. With future, the default, a rule keeps doing it to new mail from the sender to that address, which also needs rules:write. future: false drops a rule made that way before.

Requires the threads:write scope.

Path parameters

idstringRequired

The subscription, as GET /subscriptions returns it.

Request body

destinationstringRequired

archive, bin or label.

One of"archive""bin""label"
labelIdstring

The label to file under when destination is label.

Can be null1 to 200 characters
futureboolean

Also keep doing it to new mail from the sender, with a rule. Needs rules:write.

Defaulttrue
ruleNamestring

A name for that rule.

Can be nullUp to 100 characters

Returns

How many conversations moved, and the rule.

Errors

The errors every operation can return400401403404422500Error catalog

Also available in

SDK
subscriptions.move()
CLI
openemail subscriptions move
MCP
moveSubscription

POST/threads/{id}/unsubscribe

Unsubscribe from the sender of a thread

Scopesthreads:writeSends mail

The Unsubscribe button of the reading pane: finds the subscription behind the newest message of the thread that carries a List-Unsubscribe header and unsubscribes from it. Unsubscribing works the way the sender asks for it: a one-click request to its unsubscribe address when it offers one, an unsubscribe email from the address the mail arrived at when it gives a mailto, and otherwise the sender's own unsubscribe page in url, which a person has to open. method says which.

Requires the threads:write scope.

Path parameters

idstringRequired

The thread, as GET /threads returns it.

Returns

How it was unsubscribed.

Errors

422

unsubscribe_unsupported: the sender gives no way to unsubscribe.

502

unsubscribe_refused: the sender did not accept the one-click request and gives no address to write to.

The errors every operation can return400401403404500Error catalog

Also available in

SDK
threads.unsubscribe()
CLI
openemail threads unsubscribe
MCP
unsubscribeThread

Objects

DomainUnsubscribeResultobject

objectstring
One of"domain_unsubscribe"
domainstring
unsubscribedinteger
skippedinteger

Senders that only offer a page.

failedinteger
binnedinteger

Subscriptionobject

objectstring
One of"subscription"
idstring
senderEmailstring
senderNamestring
Can be null
recipientstring

The address the mail arrives at.

statusstring
One of"active""unsubscribed"
methodstring

How the sender lets you unsubscribe, or null when it gives no way.

Can be nullOne of"one-click""email""link"
linkUrlstring

Its unsubscribe page, when it has one.

Can be null
unreadinteger
recentinteger

Mail in the last 30 days.

totalinteger
sinceUnsubscribedinteger

Mail that still arrived after you unsubscribed.

lastSeenAtstring
Formatdate-time
unsubscribedAtstring
Can be nullFormatdate-time
unsubscribedWithstring
Can be nullOne of"one-click""email""link"
futureobject

The rule that keeps moving its new mail, when there is one.

Can be null
ruleIdstring
destinationstring
One of"archive""bin""label"
labelIdstring
Can be null

SubscriptionDomainobject

objectstring
One of"subscription_domain"
domainstring
namestring
sampleEmailstring

One sender address on the domain.

sendersinteger
unsubscribableinteger

Senders that can be unsubscribed without a person opening a page.

unreadinteger
recentinteger
totalinteger
sinceUnsubscribedinteger
lastSeenAtstring
Formatdate-time

SubscriptionDomainListobject

objectstring
One of"list"
totalinteger
countsobject
activeinteger
unsubscribedinteger
hasMoreboolean

SubscriptionListobject

objectstring
One of"list"
totalinteger

Rows that match, across every page.

countsobject
activeinteger
unsubscribedinteger
hasMoreboolean

SubscriptionMoveResultobject

objectstring
One of"subscription_move"
subscriptionIdstring
movedinteger

Conversations moved.

ruleIdstring

The rule that keeps moving new mail.

Can be null

UnsubscribeResultobject

objectstring
One of"unsubscribe"
subscriptionIdstring
threadIdstring

Present when it was asked for through a thread.

methodstring
One of"one-click""email""link"
urlstring

The page to open when method is link, since that one needs a person.

Can be null
binnedinteger

Conversations moved to the Bin.