Settings
Every operation in this group: what it accepts, what it returns and the errors it can answer with.
Operations
Mailbox preferences, the signature and tracking of each address, and the brand of the workspace: its images, fonts and sign-in background.
GET/branding
Retrieve the brand
The brand of the workspace, as its Customisations page shows it: a link to each brand image, the primary and secondary fonts, and the background of the sign-in page.
The mark shows in the app's workspace switcher. The logo shows at the top of the sidebar, and it is what brands the web app address, GET /app-host, and, on a paid plan, the emails Nextmail sends for the workspace, which carry it at the top and the foot. Without a logo, the web app address and the emails look like Nextmail. The fonts apply in the web app for everyone in the workspace, the primary font to its text and the secondary font to page headings, and the sign-in background shows on the web app address, either way.
A personal space carries no brand, so its images and fonts read as null and editable is false.
Requires the settings:read scope.
Returns
The brand of the workspace.
Errors
The errors every operation can return400401403404422429500Error catalog
Also available in
- TypeScript
nextmail.branding.get()- Python
branding.get()- Ruby
branding.get- PHP
branding->get- Go
Branding.Get- Java
branding().get- C#
Branding.GetAsync- CLI
nextmail branding get- MCP
getBranding
PATCH/branding
Change the fonts and the sign-in background
Changes the fonts, the sign-in page background or both, and returns the brand in the same shape as GET /branding. A field left out keeps its value, and so does a font left out of fonts. loginBackground replaces the background there was, and null sets the default.
With kind: "image" the sign-in page shows the photo uploaded with PUT /branding/images/login-background, so upload that first: without it the call is refused. Uploading one switches the page to it on its own.
The brand applies to the whole workspace, so a key or app limited to particular addresses or domains cannot change it.
Requires the settings:write scope.
Request body
fontsobjectThe fonts to change. A font left out keeps its value, and null sets the default.
primarystringThe primary font, or null for the default.
Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"secondarystringThe secondary font, or null for the default.
Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"
loginBackgroundobjectThe sign-in page background, replacing the one there was, or null for the default.
Can be nullkindstringRequiredpresetshowspreset,colorfills it withcolor, andimageshows the image uploaded withPUT /branding/images/login-background.imageis refused with 422invalid_parameteruntil that image is uploaded, and once it is removed the background falls back to thepresetorcolorkept with it, or to null.One of"preset""color""image"presetstringOne of the built-in backgrounds. Required when
kindispreset.Can be nullOne of"dusk""mist""sand""night""meadow""dots""brush""trail""ember""canvas""bloom""field""wanderer""gold"colorstringA colour as
#and six hex digits, such as#1f2937, stored lowercased. Required whenkindiscolor.Can be nullPattern^#[0-9a-f]{6}$logostringWhich logo the sign-in page shows:
dark, your logo, orlight, your logo for dark mode (Nextmail's white logo when you have none). Null picks the one that stands out against the background, and it goes back to null whenever the background changes.Can be nullOne of"dark""light"
Returns
The brand as this call left it.
Errors
- 400
malformed_json: the body is not valid JSON.- 403
insufficient_scope: the key lackssettings:write.- 409
branding_unavailable: the workspace is a personal space, which carries no brand.- 422
invalid_parameternaming the field, such asfonts.primaryfor a font that is not on the list,loginBackground.presetwhenkindispresetand no preset is given,loginBackground.kindwhenkindisimageand no sign-in photo is uploaded, orloginBackground.colorfor a colour that is not#and six hex digits.unknown_parameterfor any other field, andcapability_unsupportedwithparam: "domainAllowlist"for a key or app limited to particular addresses or domains.
The errors every operation can return401404429500Error catalog
Also available in
PUT/branding/images/{variant}
Upload a brand image
Uploads one brand image, replacing the one there was, and returns the brand. Send the image itself as the body, not JSON, with its type in Content-Type. Up to 5 MB goes in. variant names the image:
- mark: the square mark. image/svg+xml, image/png, image/jpeg, image/webp, fitted into 512 by 512 pixels and stored as WebP.
- wordmark: the logo. image/svg+xml, image/png, image/jpeg, image/webp, fitted into 1024 by 256 pixels and stored as WebP.
- wordmark-dark: the logo for dark mode, shown in place of the logo when the app is dark. image/svg+xml, image/png, image/jpeg, image/webp, fitted into 1024 by 256 pixels and stored as WebP.
- login-background: the photo behind the sign-in page of the web app address. image/png, image/jpeg, image/webp, image/gif, fitted into 2560 by 1600 pixels and stored as WebP. Uploading it also switches the sign-in page to it.
An SVG is turned into a picture, and an animated image keeps its first frame.
The brand applies to the whole workspace, so a key or app limited to particular addresses or domains cannot change it.
Requires the settings:write scope.
Path parameters
variantstringRequiredWhich image:
mark, the square icon,wordmark, the logo,wordmark-dark, the logo for dark mode, orlogin-background, the photo behind the sign-in page.One of"mark""wordmark""wordmark-dark""login-background"
Request body
Content typeimage/webp, image/png, image/jpeg, image/gif, image/svg+xml
Returns
The brand, with the new image.
Errors
- 403
insufficient_scope: the key lackssettings:write.- 409
branding_unavailable: the workspace is a personal space, which carries no brand.- 422
invalid_imagewhen the body is not an image of a type that variant accepts, is too large or cannot be read.invalid_parameteronvariantfor a name that is not one of the four, andcapability_unsupportedwithparam: "domainAllowlist"for a key or app limited to particular addresses or domains.- 502
image_not_stored: the image was read but could not be stored. Try again.- 503
image_busy: the image service is saturated. Try again shortly.
The errors every operation can return400401404429500Error catalog
Also available in
DELETE/branding/images/{variant}
Remove a brand image
Removes one brand image, deletes the stored file and returns the brand, so the default shows in its place. Removing the sign-in photo while the sign-in page shows it switches the page back to the preset or colour chosen before it, or to the default. Removing an image that is not set changes nothing, so a repeated call is safe.
The brand applies to the whole workspace, so a key or app limited to particular addresses or domains cannot change it.
Requires the settings:write scope.
Path parameters
variantstringRequiredWhich image:
mark, the square icon,wordmark, the logo,wordmark-dark, the logo for dark mode, orlogin-background, the photo behind the sign-in page.One of"mark""wordmark""wordmark-dark""login-background"
Returns
The brand, without that image.
Errors
- 403
insufficient_scope: the key lackssettings:write.- 409
branding_unavailable: the workspace is a personal space, which carries no brand.- 422
invalid_parameteronvariantfor a name that is not one of the four, andcapability_unsupportedwithparam: "domainAllowlist"for a key or app limited to particular addresses or domains.
The errors every operation can return400401404429500Error catalog
Also available in
GET/settings
Read mailbox settings
Every field with defaults filled in, so reading a setting never requires knowing which release introduced it.
Without address this is your account and the workspace. The account fields are the caller's own: for an API key the workspace owner's, for a connected app the person who connected it. The privacy fields and workspaceName are the workspace's. signature, openEmailSignature, trackOpens and trackClicks belong to each address and read as the built-in defaults here: no signature, the Nextmail footer on, and open and link tracking off.
With address, the fields as they apply to that scope. For one address the four per-address fields resolve the way a send from it does: the address's own values, then its domain's catch-all when the catch-all caught that address rather than it being one you created, then the built-in defaults, and a plus address with no settings of its own reads its base address's. externalImages, trustedSenders and the blocklist resolve from the workspace, then the domain, then the catch-all, then the base of a plus address, then the address itself, and the last of them that sets a field wins. *@domain reads a catch-all the same way, and @domain reads the workspace's privacy with the domain's own on top. Every other field reads the same whatever the scope.
overrides holds what the scope sets itself, and everything not in it is inherited. address in the response is the scope the call named, lowercased, or null.
Requires the settings:read scope.
Query parameters
addressstringThe scope to read or change: one address such as
hello@example.com,*@example.comfor the catch-all of that domain, or@example.comfor the whole domain. An address or a catch-all keeps its ownsignature,openEmailSignature,trackOpens,trackClicks,externalImages,trustedSendersand blocklist, and a domain its ownexternalImages,trustedSendersand blocklist. On a read any address resolves the way mail to and from it does. On a write it has to be an address in this workspace, a catch-all on a verified domain here with its catch-all on, or a domain in this workspace. A key narrowed to particular addresses or domains may name only an address it holds, and a catch-all or a domain only when it holds that domain whole, or it is 422capability_unsupported.Up to 320 characters
Returns
Settings.
Errors
- 422
invalid_parameteronaddresswhen it is not one address,*@domainor@domain, orcapability_unsupportedwhen a narrowed key names an address or a domain it does not hold.
The errors every operation can return400401403404429500Error catalog
Also available in
- TypeScript
nextmail.settings.get()- Python
settings.get()- Ruby
settings.get- PHP
settings->get- Go
Settings.Get- Java
settings().get- C#
Settings.GetAsync- CLI
nextmail settings get- MCP
getSettings
PATCH/settings
Change mailbox settings
A partial update: a field you omit keeps its value, and a list replaces the old one.
Without address, this changes your account and the workspace. The account fields (time zone and formats, theme, sounds, notifications and the rest) are saved on the caller's account: for an API key the workspace owner's, for a connected app the person who connected it. workspaceName renames the workspace. The privacy fields (externalImages, trustedSenders, blockedSenders, blockedDomains, blockedWords, useDefaultBlockedWords, semanticSearch, replySuggestions, knowledgeLearning) and the marketing footer fields (marketingSenderName, marketingPostalAddress) are saved on the workspace, and null removes the workspace's own value so the default applies again. A key narrowed to particular addresses or domains may change none of those workspace fields or the name, and gets 422 capability_unsupported. signature, openEmailSignature, trackOpens and trackClicks are refused without address with 422 address_required naming the field, because they are set on each address, and nothing is written. semanticSearch: false turns search by meaning off for the whole workspace: its mail stops going to the embedding model, what was stored for it is deleted at once, and semantic on GET /threads runs a text search until it is turned back on, when the mail is read for meaning again over the next minutes. replySuggestions: false stops suggested replies for the whole workspace: no thread goes to a model for them any more, what was stored is deleted at once, and GET /threads/{id}/reply-suggestions answers none until it is turned back on.
With address, the body gives that scope a choice of its own. One address or a catch-all (*@domain) takes signature, openEmailSignature, trackOpens, trackClicks, externalImages, trustedSenders, blockedSenders, blockedDomains, blockedWords and useDefaultBlockedWords, and a whole domain (@domain) the last six only. null removes the scope's own value, so it inherits again from the scope above it. Any other field is 422 not_per_address naming it, semanticSearch, replySuggestions, knowledgeLearning and the marketing footer fields included, since they belong to the whole workspace. The scope has to be an address in this workspace, a catch-all on a verified domain here with its catch-all on, or a domain in this workspace, or it is 422 invalid_parameter on address. The response is what GET /settings?address= returns for it. A catch-all's values apply to the addresses its domain catches, and a new address created on that domain starts with a copy of them and changes on its own from then on.
Returns the SAVED state, so the signature you get back is the sanitised one that will actually be sent rather than what you asked for.
Requires the settings:write scope.
Query parameters
addressstringThe scope to read or change: one address such as
hello@example.com,*@example.comfor the catch-all of that domain, or@example.comfor the whole domain. An address or a catch-all keeps its ownsignature,openEmailSignature,trackOpens,trackClicks,externalImages,trustedSendersand blocklist, and a domain its ownexternalImages,trustedSendersand blocklist. On a read any address resolves the way mail to and from it does. On a write it has to be an address in this workspace, a catch-all on a verified domain here with its catch-all on, or a domain in this workspace. A key narrowed to particular addresses or domains may name only an address it holds, and a catch-all or a domain only when it holds that domain whole, or it is 422capability_unsupported.Up to 320 characters
Request body
timezonestringIANA time zone such as
Europe/Berlin. Saved on the account.timeFormatstring12hor24h, how the app writes times. Saved on the account.One of"12h""24h"dateFormatstringdmy,mdyorymd, the order the app writes dates in. Saved on the account.One of"dmy""mdy""ymd"weekStartstringmondayorsunday, the first day of the week in the calendar and date pickers. Saved on the account.One of"monday""sunday"workspaceNamestringRenames this workspace, 1 to 64 characters once trimmed. A personal space has no name of its own, so it is 422
invalid_parameterthere. Not withaddress.externalImagesbooleanLoads pictures in mail automatically. Off means senders cannot tell you read it. On by default. Without
addressit is the workspace's choice, and with an address, a catch-all or@domainthat scope's own.nullremoves the value the scope sets itself, so it inherits again.Can be nullsemanticSearchbooleanSearch by meaning for the whole workspace. On by default.
falsestops its mail going to the embedding model, deletes what was stored and makessemanticrun a text search, andnullturns it back on. Not withaddress.Can be nullreplySuggestionsbooleanSuggested replies for the whole workspace. On by default.
falsestops threads going to a model for them and deletes the suggestions that were stored, andnullturns them back on. Not withaddress.Can be nullknowledgeLearningbooleanKnowledge base suggestions for the whole workspace. On by default: the AI reads the replies sent in a conversation and the questions nothing answered, and suggests notes from them, and it checks closely related items for conflicts.
falsestops all three, andnullturns them back on. Suggestions already made stay until they are accepted or dismissed. Not withaddress.Can be nulltrustedSendersstring[]Senders whose pictures always load while
externalImagesis off. Replaces the whole list. Withoutaddressit is the workspace's list, and with an address, a catch-all or@domainthat scope's own.nullremoves the scope's own list, so it inherits again.Can be nullcolorThemestringlight,darkorsystem, the app's theme. Saved on the account.One of"light""dark""system"openEmailSignaturebooleanAdds the Nextmail footer to mail from the address named by
addresswhile it has no signature. On by default.nullremoves the address's own value. Only with an address or a catch-all.Can be nullsignaturestringHTML of the default signature of the address named by
address, the one new mail from it carries, at most 150,000 characters before and after sanitising. Sanitised on write. An address keeps a list of signatures, whichGET /signaturesreturns, and this field is the one that is the default for new mail. Writing it rewrites that signature, or adds one calledSignatureand makes it the default when the address has none. An empty string ornullleaves new mail from the address with no signature, and replies too when they used the same one, and deletes nothing. Only with an address or a catch-all.Can be nullUp to 150000 charactersdefaultEmailAliasstringThe address the composer starts from when you write new mail in the app. Saved on the account.
undoSendEnabledbooleanHolds each send from the app for 30 seconds so it can be cancelled. Off by default. Saved on the account.
trackOpensbooleanOpen tracking on mail from the address named by
address, for a send that does not settracking.opens. Off by default.nullremoves the address's own value. Only with an address or a catch-all.Can be nulltrackClicksbooleanLink tracking on mail from the address named by
address, for a send that does not settracking.clicks. Off by default.nullremoves the address's own value. Only with an address or a catch-all.Can be nullimageCompressionstringlow,mediumororiginal, how far pictures attached in the app are compressed before they are sent. Saved on the account.One of"low""medium""original"attachmentDeliverystringHow files go out on a send that does not set
attachmentDeliveryitself:mimeattaches them to the message,linksends download links, andautolinks large files only, which needs a files address. Saved on the account.One of"mime""link""auto"autoReadbooleanMarks mail read when you open it in the app. Saved on the account.
aiWrittenLabelbooleanShows the AI-written label on mail whose words look generated. Mail is scored either way and the sender is never told. Saved on the account.
animationsbooleanMotion in the app. Off makes everything appear at once. Saved on the account.
desktopNewMailbooleanA desktop notification when a message reaches the inbox while the app is open in a browser that allows them. Saved on the account.
desktopOnlyWhenHiddenbooleanDesktop notifications only while the tab is hidden, so they stay quiet while you watch the inbox. Saved on the account.
phoneNewMailbooleanA push to your phones when a message reaches the inbox. Saved on the account.
phoneRepliesbooleanA push to your phones when someone answers your mail. Saved on the account.
phoneScheduledSendbooleanA push to your phones when a scheduled message goes out. Saved on the account.
phoneFollowUpsbooleanA push to your phones when a message you asked to be reminded about has had no reply by then. Saved on the account.
inboxTabsbooleanShows the inbox as tabs: Primary, Promotions, Updates, Social and Forums. Mail is sorted either way, and turning this on sorts the last 1,000 inbox threads of the open workspace. Saved on the account.
primaryOnlyAlertsbooleanWith inbox tabs on, pushes, sounds and desktop notifications fire only for mail sorted into Primary. Saved on the account.
phoneSendFailuresbooleanA push to your phones when a message fails to send. Saved on the account.
phonePreviewsbooleanShows what a message says in its push. Off sends pushes without the content. Saved on the account.
phoneSoundbooleanPlays a sound with each push. Off makes them silent. Saved on the account.
phoneMutedWorkspacesstring[]Workspace ids whose mail sends no push to your phones. Replaces the whole list.
PUT /account/notifications/push/{workspaceId}changes one workspace at a time. Saved on the account.Up to 200 itemssoundNewMailbooleanChimes when mail arrives while the app is open. Saved on the account.
soundAiDonebooleanChimes when the assistant finishes a reply. Saved on the account.
soundSentbooleanChimes when your message goes out. Saved on the account.
blockedSendersstring[]Senders whose mail is refused on arrival, plus-tags included. Mail already delivered stays. Replaces the whole list. Without
addressit is the workspace's list, and with an address, a catch-all or@domainthat scope's own.nullremoves the scope's own list, so it inherits again.Can be nullblockedDomainsstring[]Domains whose mail is refused on arrival, subdomains included. Replaces the whole list. Without
addressit is the workspace's list, and with an address, a catch-all or@domainthat scope's own.nullremoves the scope's own list, so it inherits again.Can be nullblockedWordsstring[]Words that open matching mail behind a warning. Nothing is deleted. Replaces the whole list. Without
addressit is the workspace's list, and with an address, a catch-all or@domainthat scope's own.nullremoves the scope's own list, so it inherits again.Can be nulluseDefaultBlockedWordsbooleanAdds the built-in list of English profanities and slurs to
blockedWords. Off by default. Withoutaddressit is the workspace's choice, and with an address, a catch-all or@domainthat scope's own.nullremoves the scope's own value, so it inherits again.Can be nulltranslateLanguagestringThe language Translate offers first, a language code such as
de. Empty means English. Saved on the account.translateRepliesbooleanOpens replies on threads you translated already translated into your language. Saved on the account.
showAvatarToContactsbooleanShows your profile photo to Nextmail users on your address. Saved on the account.
lookupContactPhotosbooleanFetches missing photos of the people you email from Gravatar and company logos. Saved on the account.
marketingSenderNamestringWho the footer of broadcasts and automation emails names as the sender, one line of at most 120 characters, shown above
marketingPostalAddress. Empty, the default, uses the workspace name.nullempties it. Not withaddress.Can be nullUp to 120 charactersPattern^[^\u0000-\u001F\u007F]*$marketingPostalAddressstringThe postal address the footer of broadcasts and automation emails shows, at most 500 characters on one line or several, which many countries require of marketing email. The footer is the one Nextmail adds to a message that does not place
{{unsubscribeUrl}}itself, written in English. Empty, the default, shows no address.nullempties it. Not withaddress.Can be nullUp to 500 charactersPattern^[^\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]*$
Returns
The saved settings.
Errors
- 422
Rejected:
address_required(a per-address field sent withoutaddress),not_per_address(a field the scopeaddressnames does not keep),signature_too_long,blocklist_entry_too_broad,invalid_parameter(includingnullfor a field that cannot be cleared, andworkspaceNameon a personal space), orcapability_unsupportedwhen a narrowed key names an address or a domain it does not hold, or changes a workspace field.
The errors every operation can return400401403404429500Error catalog
Also available in
GET/out-of-office
Read out of office replies
Every out of office reply saved in the workspace, by address. With address the list holds exactly one row, the reply of that address, which reads enabled: false with empty text when none was ever saved. active says whether the reply is going out right now: it is on, the start has passed and the end has not.
Requires the settings:read scope.
Query parameters
addressstringOne address, such as
hello@example.com, or*@example.comfor the catch-all of a domain. A key or an app limited to particular addresses or domains reaches only the addresses it holds, and a catch-all only when it holds the domain whole.Up to 320 characters
Returns
The replies, by address.
Errors
The errors every operation can return400401403404422429500Error catalog
Also available in
PUT/out-of-office
Set an out of office reply
Saves the out of office reply of one address, or of a catch-all with *@example.com, replacing whatever was saved. While it is active, each person who writes to the address gets the message once for the whole away period, as a reply in the same thread. Mail that would not alert anyone gets no reply: spam, mail a rule filed away, newsletters and other bulk mail, automatic mail, bounces, blocked senders and the workspace's own addresses. With contactsOnly, only people in the contacts, or people the workspace has written to, are answered.
Leave startsAt out to start now, or to keep the start of a reply that is already on, and endsAt out or null to keep it on until it is switched off. An address with a reply of its own is never answered by the catch-all. Replies count toward the monthly sends, carry no tracking, and still go out on muted threads.
Requires the settings:write scope.
Query parameters
addressstringRequiredOne address, such as
hello@example.com, or*@example.comfor the catch-all of a domain. A key or an app limited to particular addresses or domains reaches only the addresses it holds, and a catch-all only when it holds the domain whole.Up to 320 characters
Request body
enabledbooleanWhether the reply is switched on. Left out, true.
falsekeeps the text and pauses the reply.DefaulttruestartsAtstringWhen the reply starts. Left out or null, now, or the start it already has while the reply is on.
Can be nullFormatdate-timeendsAtstringWhen it stops, later than
startsAt. Left out or null, it stays on until it is switched off.Can be nullFormatdate-timesubjectstringThe subject of the reply, at most 255 characters. Left out or empty, the reply answers with
Re:and the subject received.Up to 255 charactersDefault""messagestringRequiredThe reply, as plain text, 1 to 10,000 characters once trimmed. Line breaks are kept.
1 to 10000 characterscontactsOnlybooleanAnswer only contacts and people the workspace has written to. Left out, false.
Defaultfalse
Returns
Saved, read back as it is stored.
Errors
- 422
invalid_parameter:addressis missing, is not an address of the workspace or names a whole domain, the message is empty, orendsAtis not afterstartsAtor is already in the past.capability_unsupported: the key or app does not hold that address.
The errors every operation can return400401403404429500Error catalog
Also available in
DELETE/out-of-office
Remove an out of office reply
Removes the saved reply of one address or catch-all, so nothing is answered from it any more. Removing a reply that was never saved changes nothing. To pause a reply and keep its text, save it with enabled: false instead.
Requires the settings:write scope.
Query parameters
addressstringRequiredOne address, such as
hello@example.com, or*@example.comfor the catch-all of a domain. A key or an app limited to particular addresses or domains reaches only the addresses it holds, and a catch-all only when it holds the domain whole.Up to 320 characters
Returns
Removed.
Errors
The errors every operation can return400401403404422429500Error catalog
Also available in
GET/signatures
List signatures
Every signature in the workspace, by address and then oldest first, or the signatures of one address with address. An address keeps a list of named signatures, as the Signature tab of an address shows it. At most one is the default for new mail (isDefault) and at most one the default for replies and forwards (isReplyDefault), and they can be the same one. A key or an app limited to particular addresses or domains reaches only the signatures of the addresses it holds, and those of a catch-all only when it holds the domain whole.
Requires the settings:read scope.
Query parameters
addressstringOne address, such as
hello@example.com, or*@example.comfor the catch-all of a domain. Left out, the list holds every address.Up to 320 characterslimitintegerRows per page, 1 to 100.
At least 1At most 100Default25cursorstringThe previous page's
nextCursor, passed back as it came. It is opaque: it holds where the last row sat in this list's order, so a row deleted or edited between pages never breaks the walk, and the next page starts at the first row that sorts after it. A value this list did not hand out is a 400invalid_cursor.
Returns
A page of signatures.
Errors
- 422
invalid_parameter:addressis not an address or names a whole domain.capability_unsupported: the key or app does not hold that address.
The errors every operation can return400401403404429500Error catalog
Also available in
- TypeScript
nextmail.signatures.list()nextmail.signatures.listAll()nextmail.signatures.iterate()- Python
signatures.list()signatures.list_all()signatures.iterate()- Ruby
signatures.listsignatures.list_allsignatures.iterate- PHP
signatures->listsignatures->listAllsignatures->iterate- Go
Signatures.ListSignatures.ListAllSignatures.Iterate- Java
signatures().listsignatures().listAllsignatures().iterate- C#
Signatures.ListAsyncSignatures.ListAllAsyncSignatures.IterateAsync- CLI
nextmail signatures list- MCP
listSignatures
POST/signatures
Create a signature
Adds a signature to one address, or to a catch-all with *@example.com. The HTML is sanitised on write, as outgoing mail is. The first signature of an address becomes its default for new mail and for replies unless isDefault or isReplyDefault says otherwise, and a later one becomes a default only when asked. Making one the default takes that place from the signature that held it. An address holds at most 50 signatures.
Requires the settings:write scope.
Request body
addressstringRequiredThe address the signature is for, such as hello@example.com, or *@example.com for the catch-all of a domain.
3 to 320 charactersnamestringRequiredWhat the signature is called. Unique on its address, whatever the case.
1 to 80 charactershtmlstringRequiredThe signature as HTML. It is sanitised on write and has to keep some text or an image.
1 to 150000 charactersisDefaultbooleantrue makes it the signature of new mail from the address. false takes that away when it held it.
isReplyDefaultbooleantrue makes it the signature of replies and forwards from the address. false takes that away when it held it.
Returns
The signature, read back as it is stored.
Errors
- 409
signature_name_taken: the address already has a signature with that name.- 422
invalid_parameter: a field is missing or malformed,addressis not an address of the workspace or names a whole domain, or the signature is empty once it is cleaned up.signature_too_long: it is too long before or after cleaning.signature_limit_reached: the address is full.capability_unsupported: the key or app does not hold that address.
The errors every operation can return400401403404429500Error catalog
Also available in
GET/signatures/{id}
Read a signature
One signature by its id. A key or an app limited to particular addresses or domains reaches only the signatures of the addresses it holds, and those of a catch-all only when it holds the domain whole.
Requires the settings:read scope.
Path parameters
idstringRequiredThe signature, as
GET /signaturesreturns it.
Returns
The signature.
Errors
The errors every operation can return400401403404422429500Error catalog
Also available in
PATCH/signatures/{id}
Update a signature
Renames a signature, rewrites its HTML, or changes what it is the default for. Send only what changes. isDefault: true makes it the default for new mail in place of the one that was, and isDefault: false leaves new mail from the address with no signature when this one was the default. isReplyDefault does the same for replies and forwards. A message that is already scheduled picks up the new HTML when it goes out.
Requires the settings:write scope.
Path parameters
idstringRequiredThe signature, as
GET /signaturesreturns it.
Request body
namestringWhat the signature is called. Unique on its address, whatever the case.
1 to 80 charactershtmlstringThe signature as HTML. It is sanitised on write and has to keep some text or an image.
1 to 150000 charactersisDefaultbooleantrue makes it the signature of new mail from the address. false takes that away when it held it.
isReplyDefaultbooleantrue makes it the signature of replies and forwards from the address. false takes that away when it held it.
Returns
The signature after the change.
Errors
- 409
signature_name_taken: the address already has a signature with that name.- 422
invalid_parameter: nothing to change was sent, a field is malformed, or the signature is empty once it is cleaned up.signature_too_long: it is too long before or after cleaning.capability_unsupported: the key or app does not hold the address the signature belongs to.
The errors every operation can return400401403404429500Error catalog
Also available in
DELETE/signatures/{id}
Delete a signature
Deletes a signature for good. When it was a default, that default is left empty, so mail it would have signed goes out with no signature until another one is chosen. A scheduled message that named it with signatureId carries the default of its address instead.
Requires the settings:write scope.
Path parameters
idstringRequiredThe signature, as
GET /signaturesreturns it.
Returns
Deleted.
Errors
The errors every operation can return400401403404422429500Error catalog
Also available in
POST/signatures/{id}/copy
Copy a signature to other addresses
Puts a copy of a signature on up to 500 other addresses or catch-alls, as Copy to other addresses does in the app. An address that already has a signature with the same name gets its HTML replaced, so copying again after an edit brings every copy up to date, and any other address gets a new signature. A copy becomes a default where isDefault or isReplyDefault says so, and on an address that had no signature at all. The address the signature is already on is skipped. Each copy is its own signature from then on.
Requires the settings:write scope.
Path parameters
idstringRequiredThe signature, as
GET /signaturesreturns it.
Request body
addressesstring[]RequiredThe addresses to copy it to. Each is one address or *@example.com for a catch-all.
1 to 500 itemsisDefaultbooleantrue makes it the signature of new mail from the address. false takes that away when it held it.
isReplyDefaultbooleantrue makes it the signature of replies and forwards from the address. false takes that away when it held it.
Returns
The copies, one for each address.
Errors
- 422
invalid_parameter:addressesis empty or too long, or one of them is not an address of the workspace or names a whole domain.signature_limit_reached: one of the addresses is full, and the addresses before it already have their copy.capability_unsupported: the key or app does not hold one of the addresses.
The errors every operation can return400401403404429500Error catalog
Also available in
Objects
Brandingobject
The brand of the workspace: its images, its fonts and the background of its sign-in page. The logo is what brands the web app address, GET /app-host, and, on a paid plan, the emails Nextmail sends for the workspace; without one both look like Nextmail. The fonts apply in the web app for everyone in the workspace, the primary font to its text and the secondary font to page headings, and the sign-in background shows on the web app address, whether or not a logo is set. A personal space carries no brand, so every image and font is null there.
objectstring- One of
"branding" editablebooleanWhether this key may change the brand: false in a personal space, without
settings:write, or for a key limited to particular addresses or domains.imagesobjectA link to each brand image, or null when it is not set.
markstringThe square mark, or null.
Can be nullwordmarkstringThe logo, or null.
Can be nullwordmarkDarkstringThe logo for dark mode, or null. Without it the logo shows in dark mode too.
Can be nullloginBackgroundstringThe photo behind the sign-in page, or null.
Can be null
fontsobjectThe two fonts of the brand, each a font id from the supported list or null for the default.
primarystringThe primary font, or null for the default.
Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"secondarystringThe secondary font, or null for the default.
Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"
loginBackgroundobjectWhat the sign-in page of the web app address shows behind the form, or null for the default.
kindpicks one of three: apreset, acoloror the uploadedimage. The value for the other kinds may be kept, so switching back restores it.Can be nullkindstringRequiredpresetshowspreset,colorfills it withcolor, andimageshows the image uploaded withPUT /branding/images/login-background.imageis refused with 422invalid_parameteruntil that image is uploaded, and once it is removed the background falls back to thepresetorcolorkept with it, or to null.One of"preset""color""image"presetstringOne of the built-in backgrounds. Required when
kindispreset.Can be nullOne of"dusk""mist""sand""night""meadow""dots""brush""trail""ember""canvas""bloom""field""wanderer""gold"colorstringA colour as
#and six hex digits, such as#1f2937, stored lowercased. Required whenkindiscolor.Can be nullPattern^#[0-9a-f]{6}$logostringWhich logo the sign-in page shows:
dark, your logo, orlight, your logo for dark mode (Nextmail's white logo when you have none). Null picks the one that stands out against the background, and it goes back to null whenever the background changes.Can be nullOne of"dark""light"
DeletedOutOfOfficeobject
objectstringRequired- One of
"out_of_office" addressstringRequireddeletedbooleanRequired- One of
true
DeletedSignatureobject
objectstringRequired- One of
"signature" idstringRequiredaddressstringRequiredThe address the signature belonged to.
deletedbooleanRequired- One of
true
OutOfOfficeobject
objectstringRequired- One of
"out_of_office" addressstringRequiredThe address the reply is for, or
*@example.comfor a catch-all.enabledbooleanRequiredWhether the reply is switched on.
activebooleanRequiredWhether mail arriving now is answered: it is on,
startsAthas passed andendsAthas not.startsAtstringRequiredWhen the reply starts. Null when none was ever saved.
Can be nullFormatdate-timeendsAtstringRequiredWhen it stops. Null keeps it on until it is switched off.
Can be nullFormatdate-timesubjectstringRequiredThe subject of the reply. Empty answers with
Re:and the subject received.Up to 255 charactersmessagestringRequiredThe reply, as plain text. Line breaks are kept.
Up to 10000 characterscontactsOnlybooleanRequiredAnswer only contacts and people the workspace has written to.
updatedAtstringRequiredThe last save. Null when none was ever saved.
Can be nullFormatdate-time
OutOfOfficeListobject
objectstring- One of
"list" dataOutOfOffice[]
Settingsobject
objectstringRequired- One of
"settings" addressstringRequiredThe scope the call named, lowercased: an address,
*@domainfor a catch-all or@domainfor a whole domain. Null when the call named none.Can be nulltimezonestringRequiredtimeFormatstringRequired- One of
"12h""24h"Default"24h" dateFormatstringRequired- One of
"dmy""mdy""ymd"Default"dmy" weekStartstringRequired- One of
"monday""sunday"Default"monday" workspaceNamestringexternalImagesbooleanRequired- Default
true semanticSearchbooleanRequired- Default
true replySuggestionsbooleanRequired- Default
true knowledgeLearningbooleanRequired- Default
true trustedSendersstring[]colorThemestringRequired- One of
"light""dark""system"Default"system" openEmailSignaturebooleanRequired- Default
true signaturestringRequired- Up to 150000 characters
defaultEmailAliasstringundoSendEnabledbooleanRequired- Default
false trackOpensbooleanRequired- Default
false trackClicksbooleanRequired- Default
false imageCompressionstringRequired- One of
"low""medium""original"Default"medium" attachmentDeliverystringRequired- One of
"mime""link""auto"Default"auto" autoReadbooleanRequired- Default
true aiWrittenLabelbooleanRequired- Default
true animationsbooleanRequired- Default
true desktopNewMailbooleanRequired- Default
true desktopOnlyWhenHiddenbooleanRequired- Default
false phoneNewMailbooleanRequired- Default
true phoneRepliesbooleanRequired- Default
true phoneScheduledSendbooleanRequired- Default
false phoneFollowUpsbooleanRequired- Default
true inboxTabsbooleanRequired- Default
false primaryOnlyAlertsbooleanRequired- Default
true phoneSendFailuresbooleanRequired- Default
true phonePreviewsbooleanRequired- Default
true phoneSoundbooleanRequired- Default
true phoneMutedWorkspacesstring[]Required- Up to 200 itemsDefault
[] soundNewMailbooleanRequired- Default
true soundAiDonebooleanRequired- Default
true soundSentbooleanRequired- Default
true blockedSendersstring[]Required- Default
[] blockedDomainsstring[]Required- Default
[] blockedWordsstring[]Required- Default
[] useDefaultBlockedWordsbooleanRequired- Default
false translateLanguagestringRequired- Default
"" translateRepliesbooleanRequired- Default
true showAvatarToContactsbooleanRequired- Default
true lookupContactPhotosbooleanRequired- Default
true marketingSenderNamestringRequired- Up to 120 charactersDefault
""Pattern^[^\u0000-\u001F\u007F]*$ marketingPostalAddressstringRequired- Up to 500 charactersDefault
""Pattern^[^\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]*$ overridesobjectRequiredWhat the scope sets itself, the fields a PATCH to the same scope can send
nullfor. Withoutaddressit is the workspace's own privacy fields, with an address or a catch-all its own signature, footer, tracking,externalImages,trustedSendersand blocklist, and with@domainits ownexternalImages,trustedSendersand blocklist. A field that is not here is inherited.signaturestring- Up to 150000 characters
openEmailSignaturebooleantrackOpensbooleantrackClicksbooleanexternalImagesbooleantrustedSendersstring[]blockedSendersstring[]blockedDomainsstring[]blockedWordsstring[]useDefaultBlockedWordsbooleansemanticSearchbooleanreplySuggestionsbooleanknowledgeLearningbooleanmarketingSenderNamestring- Up to 120 charactersPattern
^[^\u0000-\u001F\u007F]*$ marketingPostalAddressstring- Up to 500 charactersPattern
^[^\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]*$
Signatureobject
objectstringRequired- One of
"signature" idstringRequiredThe id, which starts with
sig_.addressstringRequiredThe address the signature belongs to, or
*@example.comfor a catch-all.namestringRequiredWhat the signature is called in the app. Unique on its address, whatever the case.
Up to 80 charactershtmlstringRequiredThe signature as sanitised HTML, the way it is added under a message.
Up to 150000 charactersisDefaultbooleanRequiredWhether new mail from the address carries this signature unless the send says otherwise.
isReplyDefaultbooleanRequiredWhether replies and forwards from the address carry this signature unless the send says otherwise.
createdAtstringRequiredWhen the signature was created.
Formatdate-timeupdatedAtstringRequiredWhen its name or HTML last changed.
Formatdate-time
SignatureCopyListobject
objectstring- One of
"list" dataSignature[]
SignatureListobject
objectstring- One of
"list" dataSignature[]hasMorebooleanTrue when another page follows. Pass
nextCursorback ascursorto read it.nextCursorstringAn opaque cursor for the next page, or null on the last page. Pass it back unchanged.
Can be null
Google Workspace