nextmail labels
Every command in this namespace, with its arguments, flags and examples.
Commands
The labels a thread can carry.
Every command here also takes the global flags, such as --json, --profile and --dry-run. See the global flags
openemail labels list
List the workspace's labels, a page at a time
lsUsage
nextmail labels list [flags]
Resolves one page of the workspace's user labels, sorted by name and then by id. Each label carries its colour, threadCount (how many conversations carry it now) and createdAt and updatedAt, which is everything the Labels table in the app shows.
System labels such as INBOX, STARRED and UNREAD are not listed. A thread carries them and threads.update takes them, but they cannot be renamed, recoloured or deleted.
color is null on a label saved with no colour. Otherwise color.backgroundColor is a hex value or a gradient token such as gradient:sunset, and color.textColor is the ink the app draws on it, worked out on the server rather than stored.
Add --all to walk every page: a table on a terminal, one JSON object per line when piped or with --ndjson, and one { items, hasMore, nextCursor } document with --json. --max <n> stops after that many items.
Flags
--limit <n>Page size, from 1 to 100. The server defaults to 25.
Default25--cursor <value>The
nextCursorof the previous page, passed back as it came. Leave it out for the first page.--allFetch every page and stream the items as they arrive.
--max <n>Stop after this many items. Implies
--all.--ndjsonPrint every item as one JSON object per line. Implies
--all
Examples
nextmail labels listnextmail labels list --limit 50nextmail labels list --all --max 100nextmail labels list --all > labels.ndjsonAlso available in
- API
GET /labels- TypeScript
nextmail.labels.list()- Python
labels.list()- Ruby
labels.list- PHP
labels->list- Go
Labels.List- Java
labels().list- C#
Labels.ListAsync
openemail labels list-colors
List the colours the app offers for labels
Usage
nextmail labels list-colors [flags]
Resolves the whole label palette as a plain array: the fourteen solid colours and seven gradients the app offers when you make or edit a label, in the order it shows them. It is a fixed catalogue, so there is no paging. Fetch it once and keep it.
value is what to send as color.backgroundColor: a hex such as #3B82F6 for a solid, a token such as gradient:sunset for a gradient. textColor is the ink drawn on it. A gradient also carries from and to, drawn at 135 degrees, and solid, one hex for places a gradient cannot go.
A label may carry a colour outside this list. Any hex set through the API is kept as it is, and the app offers it back as its own swatch.
Examples
nextmail labels list-colorsnextmail labels list-colors --jsonAlso available in
openemail labels get
Read one user label by id
showviewUsage
nextmail labels get <id> [flags]
Looks up a single user label and returns it in the same shape as a row of list, with its colour, threadCount, createdAt and updatedAt.
Only user labels are served. INBOX, TRASH and the other system ids are a 404 here even though threads carry them. Ids are matched exactly, so user_receipts does not find USER_RECEIPTS.
Arguments
<id>RequiredLabel id such as
USER_RECEIPTS, matched case sensitively.
Examples
nextmail labels get USER_RECEIPTSnextmail labels get USER_RECEIPTS --jsonAlso available in
- API
GET /labels/{id}- TypeScript
nextmail.labels.get()- Python
labels.get()- Ruby
labels.get- PHP
labels->get- Go
Labels.Get- Java
labels().get- C#
Labels.GetAsync
openemail labels create
Create a user label
newaddUsage
nextmail labels create --name <value> [flags] nextmail labels create --data <json|@file|-> [flags]
Creates a label and resolves with it as it is stored. name is trimmed and must then be 1 to 225 characters. The id is derived from the name as USER_ followed by the name upper cased, with each run of whitespace turned into _, so Big Clients becomes USER_BIG_CLIENTS, and it never changes afterwards.
A name another label already has, compared without case, is refused with 409 label_name_taken, and so is a name whose id another label holds because it was created under that name and renamed since. An existing label is never silently overwritten. A workspace holds at most 50 user labels, and the call past that is a 422 label_limit_reached on name.
color is optional. color.backgroundColor is a hex colour (#RGB, #RGBA, #RRGGBB or #RRGGBBAA, stored upper cased) or a gradient token such as gradient:sunset, and anything else is a 422 invalid_parameter on color.backgroundColor. listColors returns the palette the app offers. textColor may be sent but is ignored: the ink is worked out from the background. Leaving color out stores no colour.
--ai-instructions says what the label is for in plain words, such as invoices and receipts. With --ai-enabled on, AI reads each arriving message against them and adds the label when it fits. It skips spam, the Bin, encrypted mail and muted threads, and it only labels: it never archives or moves anything. Turning --ai-enabled on needs instructions and a paid plan, and a workspace may have 10 such labels. Without instructions it is a 422 invalid_parameter on --ai-instructions, on the free plan a 403 plan_required, and past the tenth a 422 ai_label_limit_reached.
Flags
--name <value>Display name, trimmed, 1 to 225 characters. Also decides the id. Required, here or in
--data.--label-color <json|@file|->The colour. Leave it out for a label with no colour. JSON shaped as
LabelColorInput, inline or from a file with @path.--color-background-color <value>A hex colour such as
#3B82F6or a gradient token such asgradient:sunset, at most 32 characters. Required oncecoloris given.--color-text-color <value>Accepted and ignored. The ink is worked out from
backgroundColor.--ai-instructions <value>What the label is for, in plain words, up to 500 characters, such as
invoices and receipts.--ai-enabledHave AI apply the label to arriving mail that fits
--ai-instructions. It needs instructions and a paid plan, and a workspace may have 10 such labels.--data <json|@file|->The whole
bodyas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Examples
nextmail labels create --name 'Big Clients'nextmail labels create --name 'Big Clients' --color-background-color gradient:auroranextmail labels create --data @label.jsonAlso available in
- API
POST /labels- TypeScript
nextmail.labels.create()- Python
labels.create()- Ruby
labels.create- PHP
labels->create- Go
Labels.Create- Java
labels().create- C#
Labels.CreateAsync
openemail labels update
Rename or recolour a user label
editUsage
nextmail labels update <id> [flags]
Renames a label, recolours it, or changes what AI does with it, and resolves with it as it is stored. Send any of name, color, --ai-instructions and --ai-enabled: a field left out stays as it is, and a patch with none of them is a 422. color: null, or an empty backgroundColor, clears the colour.
The id never changes. A label created as Receipts keeps USER_RECEIPTS after a rename to Invoices, and every thread keeps the label. A new name another label already has, compared without case, is refused with 409 label_name_taken.
Colours follow the rules on create: a hex value or a gradient token, and anything else is a 422 invalid_parameter. Only user labels can be changed, and a system label id is a 404.
With --ai-enabled on, AI reads each arriving message against --ai-instructions and adds the label when it fits. It skips spam, the Bin, encrypted mail and muted threads, and it only labels: it never archives or moves anything. Turning it on needs instructions and a paid plan, and a workspace may have 10 such labels. Without instructions it is a 422 invalid_parameter on --ai-instructions, on the free plan a 403 plan_required, and past the tenth a 422 ai_label_limit_reached. aiInstructions: null clears the instructions, which also turns --ai-enabled off.
Arguments
<id>RequiredLabel id such as
USER_RECEIPTS.
Flags
--name <value>New display name, trimmed, 1 to 225 characters. Left out, the name stays.
--label-color <json|@file|->New colour.
nullclears it, and leaving it out keeps the stored colour. JSON shaped asLabelColorInput | null, inline or from a file with @path.--color-background-color <value>A hex colour or a gradient token, at most 32 characters. An empty string clears the colour.
--color-text-color <value>Accepted and ignored. The ink is worked out from
backgroundColor.--ai-instructions <value>What the label is for, in plain words, up to 500 characters.
nullclears it, which also turns--ai-enabledoff. Left out, it stays.--ai-enabledWhether AI applies the label to arriving mail that fits
--ai-instructions. Turning it on needs instructions and a paid plan, and a workspace may have 10 such labels. Left out, it stays.--data <json|@file|->The whole
patchas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Examples
nextmail labels update USER_RECEIPTS --color-background-color '#EA9602'nextmail labels update USER_RECEIPTS --color-background-color '#EA9602' --jsonAlso available in
- API
PATCH /labels/{id}- TypeScript
nextmail.labels.update()- Python
labels.update()- Ruby
labels.update- PHP
labels->update- Go
Labels.Update- Java
labels().update- C#
Labels.UpdateAsync
openemail labels test
Try a label on recent mail
Usage
nextmail labels test <id> [flags]
Runs the AI over the newest 20 inbox threads and resolves with the ones the label would catch, without labelling anything. Send --ai-instructions to try wording you have not saved yet, or leave it out to try what the label holds.
It spends one AI action of the caller, which the labelling of arriving mail never does. A message that arrived encrypted is skipped, and a key limited to particular addresses reads only the threads delivered to them.
Arguments
<id>RequiredLabel id such as
USER_RECEIPTS, aslistreturns it.
Flags
--ai-instructions <value>What the label is for, in plain words, 1 to 500 characters. Left out, the instructions saved on the label are tried.
--data <json|@file|->The whole
bodyas JSON, inline, from a file with @path, or - for standard input. Flags override its keys.
Examples
nextmail labels test USER_RECEIPTSnextmail labels test USER_RECEIPTS --ai-instructions 'invoices and receipts'Also available in
- API
POST /labels/{id}/test- TypeScript
nextmail.labels.test()- Python
labels.test()- Ruby
labels.test- PHP
labels->test- Go
Labels.Test- Java
labels().test- C#
Labels.TestAsync
openemail labels delete
Delete a user label and remove it from every thread
rmdelremoveUsage
nextmail labels delete <id> [flags]
Deletes a user label and, in the same transaction, takes it off every thread that carried it. The threads are otherwise untouched, so a thread that was only filed under this label stays in whatever folder it was in.
There is no undo. Creating a label with the same name again produces the same id, but the threads it was removed from do not get it back. Only user labels can be deleted, and a system label id is a 404.
Arguments
<id>RequiredLabel id such as
USER_OLD_PROJECT.
Examples
nextmail labels delete USER_OLD_PROJECTnextmail labels delete USER_OLD_PROJECT --yesAlso available in
- API
DELETE /labels/{id}- TypeScript
nextmail.labels.delete()- Python
labels.delete()- Ruby
labels.delete- PHP
labels->delete- Go
Labels.Delete- Java
labels().delete- C#
Labels.DeleteAsync