---
title: "Docs"
description: "How OpenEmail works, written down: setup, every feature in the product, the REST API, the SDK and the MCP server."
url: "https://openemail.uk/docs"
---

# Documentation

Every page of the OpenEmail documentation, 201 of them, listed by area. Each link is the page in Markdown.

## Get started

Account, domain, addresses, sending. Read in order the first time.

- [Welcome](https://openemail.uk/docs/get-started/welcome.md): OpenEmail is an email client built around domains you own rather than mailboxes we rent you. This is the whole product, written down.
- [Create an account](https://openemail.uk/docs/get-started/account.md): The address you sign up with identifies you. It is not the mailbox you will read. That comes from the domain you connect next.
- [Connect a domain](https://openemail.uk/docs/get-started/domain.md): OpenEmail receives on domains you own. Free covers one, Starter five, Business ten, Enterprise as many as you want. With catch-all on, every address on a verified domain works from the moment the DNS is live.
- [Addresses and mailboxes](https://openemail.uk/docs/get-started/addresses.md): With catch-all on, an address exists as soon as something is sent to it. Listing one up front is about naming it, not permitting it.
- [Sending](https://openemail.uk/docs/get-started/sending.md): You can send as any address on a verified domain, and replies go out from the address the mail arrived on by default.
- [AI](https://openemail.uk/docs/get-started/ai.md): AI features run against your mailbox on every plan. Free spends 50 actions a day, Starter 500, Business 2,000, and Enterprise is unlimited. Mail is summarised and labelled as it arrives, and sending a message updates your writing-style profile; everything else waits for you to ask.

## Knowledge base

Every feature in the product, one page each, with the caps and the shortcuts.

- [Domains & addresses](https://openemail.uk/docs/knowledge/addresses.md): OpenEmail is built around the domain rather than the mailbox. You point one at us, and every address on it is real.
- [Catch-all addresses](https://openemail.uk/docs/knowledge/addresses/catch-all.md): Every address on the domain receives, including ones that have never been created. One switch closes it.
- [Multiple domains](https://openemail.uk/docs/knowledge/addresses/domains.md): Point several domains at one inbox, subdomains included.
- [DMARC policy](https://openemail.uk/docs/knowledge/addresses/dmarc.md): A starter p=none record, printed to copy or written by a sync, never tightened for you.
- [Temporary addresses](https://openemail.uk/docs/knowledge/addresses/temp-address.md): An address that works for a fortnight and then stops, so a signup cannot follow you.
- [Send as any alias](https://openemail.uk/docs/knowledge/addresses/alias-send.md): Reply from the exact address the mail arrived on.
- [Merged inboxes](https://openemail.uk/docs/knowledge/addresses/merged.md): Read every address in one stream, or narrow to the two or three you actually work out of.
- [Forward an address elsewhere](https://openemail.uk/docs/knowledge/addresses/address-forwarding.md): Point any address, or everything a domain accepts, at an outside mailbox instead of this one.
- [Workspace branding](https://openemail.uk/docs/knowledge/addresses/workspace-brand.md): Put your own mark and logo in the sidebar, in place of ours.
- [Reading & organising](https://openemail.uk/docs/knowledge/reading.md): What happens between mail arriving and you deciding what to do about it.
- [Full-text search](https://openemail.uk/docs/knowledge/reading/search.md): Forgiving words and operators like from: and has:, inside the folder you are reading.
- [Search in plain language](https://openemail.uk/docs/knowledge/reading/ai-search.md): Ask the command palette for what you want and it writes the query.
- [Read in your language](https://openemail.uk/docs/knowledge/reading/translate-read.md): A message you cannot read, turned into a language you can, without leaving it.
- [Labels](https://openemail.uk/docs/knowledge/reading/labels.md): Name a label, pick one of six colours, and filter the list down to it.
- [Thread notes](https://openemail.uk/docs/knowledge/reading/notes.md): Keep a private note attached to a thread.
- [Analytics & graphs](https://openemail.uk/docs/knowledge/reading/insights.md): What your mailbox is actually doing, drawn rather than guessed at.
- [Recipient suggestions](https://openemail.uk/docs/knowledge/reading/contacts.md): The people you already write to, offered as you type.
- [Keyboard-first](https://openemail.uk/docs/knowledge/reading/shortcuts.md): The palette is ⌘K, the assistant is ⌘0, and the list moves under the arrow keys.
- [Writing & sending](https://openemail.uk/docs/knowledge/writing.md): The composer, and everything attached to the moment you hit send.
- [Templates](https://openemail.uk/docs/knowledge/writing/templates.md): A body written once, versioned, and sent many times: from the composer, from your own code, or by an agent.
- [Files](https://openemail.uk/docs/knowledge/writing/files.md): Every attachment this mailbox holds, in one place you can search, download and clear out.
- [Workspace and address settings](https://openemail.uk/docs/knowledge/writing/mailbox-settings.md): Your account sets the defaults. A workspace can answer differently, and any address can have its own signature and tracking.
- [Signature](https://openemail.uk/docs/knowledge/writing/signature.md): One sign-off for every address, and a different one for any address that needs it.
- [Writing tools](https://openemail.uk/docs/knowledge/writing/writing-tools.md): Formatting, inline completion and emoji shortcodes in the composer.
- [Send in theirs](https://openemail.uk/docs/knowledge/writing/translate-send.md): Write in your own language and have it arrive in the recipient’s.
- [Meetings & calendar](https://openemail.uk/docs/knowledge/writing/calendar.md): A calendar at /mail/calendar in month, week and day views, holding both your meetings and the mail you have queued to go out later.
- [Drafts](https://openemail.uk/docs/knowledge/writing/drafts.md): Autosaved three seconds after you stop typing, and reopened from the Drafts folder with the recipients, the subject and the body intact. The attachments and the From address stay behind.
- [Scheduled send](https://openemail.uk/docs/knowledge/writing/schedule.md): Write it now, land it when they are awake.
- [Undo send](https://openemail.uk/docs/knowledge/writing/undo.md): A window to change your mind, and the composer comes back exactly as it was.
- [See when mail you sent was opened](https://openemail.uk/docs/knowledge/writing/open-tracking.md): Whether a message you sent has been opened, when, how many times and which of its links were followed. On unless you turn it off, and plain about the readings it cannot get.
- [Tracking on your own domain](https://openemail.uk/docs/knowledge/writing/tracking-domain.md): Tracked links and the open pixel on a subdomain you choose, such as links.yourdomain.com, instead of the OpenEmail address.
- [Files on your own domain](https://openemail.uk/docs/knowledge/writing/storage-domain.md): Download links for the files you send on a subdomain you choose, such as files.yourdomain.com, instead of the OpenEmail address.
- [Attachments](https://openemail.uk/docs/knowledge/writing/attachments.md): Pick them with the paperclip or paste them in. A pasted image lands in the body rather than the file list, and a file dragged onto the composer is not attached at all. On an OpenEmail mailbox incoming files sit in object storage, one object each, and opening a thread pulls every one of them.
- [AI](https://openemail.uk/docs/knowledge/ai.md): Everything here runs against your own mailbox and is yours to switch off. The prompts are readable and editable.
- [Ask your inbox](https://openemail.uk/docs/knowledge/ai/ask.md): A chat that can act, not just answer. On every plan, Free included.
- [Subject lines](https://openemail.uk/docs/knowledge/ai/subject.md): Write the body, and the subject writes itself.
- [Draft from a note](https://openemail.uk/docs/knowledge/ai/generate.md): Give it the gist and get the whole body back, in the first person as you.
- [Your writing style](https://openemail.uk/docs/knowledge/ai/style.md): Drafts are shaped by how you actually write.
- [Editable prompts](https://openemail.uk/docs/knowledge/ai/prompts.md): Read and rewrite the system prompts OpenEmail uses.
- [Agents on the inbox](https://openemail.uk/docs/knowledge/ai/inbox-agents.md): Triage, labelling, summaries and first-pass replies, done before you open the tab.
- [Safety & authenticity](https://openemail.uk/docs/knowledge/safety.md): Two questions about a message you were not expecting: is the sender the domain it claims to be, and did a person write this. Both are answered on the message itself, next to the sender, rather than in a filter that quietly disappears things.
- [Verified sender](https://openemail.uk/docs/knowledge/safety/verified-sender.md): A mark beside the sender when the sending domain’s published records line up.
- [Sender pictures](https://openemail.uk/docs/knowledge/safety/sender-avatar.md): A real picture for everyone you correspond with when one can be found, and a mark seeded on their identity when it cannot.
- [Phishing & spam filtering](https://openemail.uk/docs/knowledge/safety/spam-filter.md): Mail the sending domain itself disowns lands in Spam rather than the inbox.
- [Sender research & look-alike domains](https://openemail.uk/docs/knowledge/safety/sender-research.md): Who is this, in fifty words, and is the domain a look-alike?
- [Written by AI](https://openemail.uk/docs/knowledge/safety/ai-written.md): A label on the message when the words look generated rather than written.
- [Filters & blocking](https://openemail.uk/docs/knowledge/filters.md): Spam filtering decides what is junk. This is the other half: what you have decided you do not want, however legitimate it is and whoever it is from.
- [Block a sender or a domain](https://openemail.uk/docs/knowledge/filters/block-sender.md): One address, or everything from a domain, stopped before it reaches you.
- [Bad-language filter](https://openemail.uk/docs/knowledge/filters/language-filter.md): Mail carrying the words you do not want to read does not open in front of you.
- [Rules you write yourself](https://openemail.uk/docs/knowledge/filters/custom-filters.md): Your own conditions, and what should happen to anything that matches them.
- [Agents, API & MCP](https://openemail.uk/docs/knowledge/agents.md): OpenEmail is meant to be operated by software as well as by people. The mailbox is the same either way.
- [MCP server](https://openemail.uk/docs/knowledge/agents/mcp.md): Point Claude, or any MCP client, at your mailbox.
- [OAuth for third-party clients](https://openemail.uk/docs/knowledge/agents/oauth.md): Self-service client registration with PKCE, so an app can ask for access properly.
- [REST API](https://openemail.uk/docs/knowledge/agents/api.md): A documented HTTP API with issuable, scopable, revocable keys.
- [Typed SDKs](https://openemail.uk/docs/knowledge/agents/sdk.md): A TypeScript client first, then the rest.
- [Webhooks](https://openemail.uk/docs/knowledge/agents/webhooks.md): Tell your endpoint when mail arrives, instead of making you poll.
- [Workspaces & team](https://openemail.uk/docs/knowledge/team.md): A workspace holds your domains, the mailboxes on them, and the people who read them. Sharing is per address or per whole domain, and a whole domain covers every address made on it later.
- [Share an address](https://openemail.uk/docs/knowledge/team/share.md): Hand billing@ to the person who does the billing.
- [Scoped visibility](https://openemail.uk/docs/knowledge/team/scope.md): One address means one address.
- [Roles & permissions levels](https://openemail.uk/docs/knowledge/team/roles.md): A role says what somebody may do; an address grant says what they may do it to.
- [Invitations](https://openemail.uk/docs/knowledge/team/invites.md): Share with someone who has not signed up yet and have them invited.
- [Privacy & ownership](https://openemail.uk/docs/knowledge/trust.md): Privacy first is a claim every mail company makes, so here it is as a list of things you can go and check: what is stripped out of a message before you see it, what is never fetched on your behalf, and what happens to your mail when you stop paying us.
- [Tracking pixels stripped](https://openemail.uk/docs/knowledge/trust/no-tracking.md): The invisible image that tells a sender you opened their mail is gone before you see the message.
- [Remote image control](https://openemail.uk/docs/knowledge/trust/external-images.md): Stop a sender fetching anything from their own server while you read.
- [Choose which emails we send you](https://openemail.uk/docs/knowledge/trust/email-preferences.md): Per-category switches in Account → Notifications, and the ones that matter are honestly marked as unswitchable.
- [Your mail on object storage](https://openemail.uk/docs/knowledge/trust/storage.md): Full message bodies and attachment bytes on R2, indexed per mailbox.
- [Bring your old mailbox](https://openemail.uk/docs/knowledge/trust/import.md): Arrive with the mail you already have, whether an archive exported from wherever it lives now or the account itself, threaded as it was and filed where it belongs.
- [Take your mail with you](https://openemail.uk/docs/knowledge/trust/export.md): One download with everything in it: every message and attachment in a format another mail app can open, plus your contacts, labels, rules, templates and calendar.
- [Transport encryption](https://openemail.uk/docs/knowledge/trust/tls.md): Mail moves over TLS on the hops we run, and transport alone never turns the padlock green, because nothing on this backend can read the transport off a delivery.
- [Encryption at rest](https://openemail.uk/docs/knowledge/trust/at-rest.md): Every field of a message sealed before it is written down (body, subject, addresses and attachment bytes), so a copy of the database is ciphertext rather than mail.
- [End-to-end encryption](https://openemail.uk/docs/knowledge/trust/e2ee.md): OpenPGP keys made in your browser. Mail you send to another OpenEmail address can be sealed before it leaves the tab, and sealed mail addressed to you opens in the reading pane, decrypted on your machine. The keys are never ours to hand over.

## MCP server

Connect a client to your mailbox. The endpoints, and the tools it registers.

- [MCP server](https://openemail.uk/docs/mcp/overview.md): Your mailbox behind the Model Context Protocol, so Claude, or any MCP client, can read, search, write and label through your own account.
- [Connect a client](https://openemail.uk/docs/mcp/connect.md): Two transports, one server.
- [What it can reach](https://openemail.uk/docs/mcp/scope.md): The honest boundary.
- [Tools](https://openemail.uk/docs/mcp/tools.md): Everything the server registers, grouped by what it is for. If a tool is not here, it is not on this server.
- [Connections](https://openemail.uk/docs/mcp/tools/connections.md): Which mailbox the other tools act on.
- [Reading](https://openemail.uk/docs/mcp/tools/reading.md): Finding and reading mail.
- [Writing](https://openemail.uk/docs/mcp/tools/writing.md): Composing, translating and sending.
- [Organising](https://openemail.uk/docs/mcp/tools/organising.md): Labels and read state.
- [Templates](https://openemail.uk/docs/mcp/tools/templates.md): A body written once, sent many times.
- [Rules](https://openemail.uk/docs/mcp/tools/rules.md): What happens to mail as it arrives.
- [Tracking](https://openemail.uk/docs/mcp/tools/tracking.md): What became of the mail this mailbox sent.
- [Contacts](https://openemail.uk/docs/mcp/tools/contacts.md): The address book this mailbox writes to.
- [Audiences](https://openemail.uk/docs/mcp/tools/audiences.md): Named lists the contacts are grouped into.
- [Keys and webhooks](https://openemail.uk/docs/mcp/tools/keys.md): The credentials and endpoints this workspace has issued.
- [Workspace and people](https://openemail.uk/docs/mcp/tools/workspace.md): Who is asking, what they may do, and who else is here.

## API

Send mail and drive a mailbox from your own code, with a workspace key.

- [API](https://openemail.uk/docs/api/overview.md): Send mail and drive a mailbox from your own code, with a workspace API key.
- [Quickstart](https://openemail.uk/docs/api/quickstart.md): A key and a first send.
- [Authentication](https://openemail.uk/docs/api/authentication.md): One credential type, and the ways a request is refused.
- [Scopes](https://openemail.uk/docs/api/scopes.md): What a key is allowed to do.
- [Errors](https://openemail.uk/docs/api/errors.md): One shape, two levels, and a request id on everything.
- [Idempotency](https://openemail.uk/docs/api/idempotency.md): Making a retry safe.
- [Emails](https://openemail.uk/docs/api/emails.md): Send, schedule, cancel and retrieve messages, see what became of them, and send them in the recipient’s language.
- [Send an email](https://openemail.uk/docs/api/emails/send.md): POST /emails: one message, now or later.
- [Send a batch](https://openemail.uk/docs/api/emails/batch.md): Up to 100 at once.
- [Preview a translation](https://openemail.uk/docs/api/emails/translate.md): What `translate` on a send would produce, with nothing sent and nothing stored.
- [Schedule and cancel](https://openemail.uk/docs/api/emails/schedule.md): Send later, move it, or stop it.
- [List and retrieve](https://openemail.uk/docs/api/emails/list.md): Find messages, and see what became of one.
- [Open and click tracking](https://openemail.uk/docs/api/emails/tracking.md): GET /tracking: whether a message was read, and what was followed.
- [Languages](https://openemail.uk/docs/api/languages.md): Every language a message can be sent in. No parameters, no cursor, no scope.
- [Mailbox](https://openemail.uk/docs/api/mailbox.md): Everything that is not a send.
- [Threads](https://openemail.uk/docs/api/threads.md): Read and organise mail.
- [List drafts](https://openemail.uk/docs/api/drafts/list.md): Rows are ids. Fetch one to read it.
- [Create a draft](https://openemail.uk/docs/api/drafts/create.md): Recipients are arrays here, even though the store keeps them joined.
- [Retrieve a draft](https://openemail.uk/docs/api/drafts/get.md): Recipients, subject, body, the thread it belongs to, the sender, and the names of any attachments.
- [Update a draft](https://openemail.uk/docs/api/drafts/update.md): A partial update: fields you omit are left exactly as they were.
- [Delete a draft](https://openemail.uk/docs/api/drafts/delete.md): Gone. There is no bin for drafts.
- [Send a draft](https://openemail.uk/docs/api/drafts/send.md): Pass the id as `draftId`. The draft supplies the content, the request supplies the envelope.
- [List labels](https://openemail.uk/docs/api/labels/list.md): Every label on the mailbox, system and user, each with the colour it renders in.
- [Create a label](https://openemail.uk/docs/api/labels/create.md): Colour is optional; omitted, the label renders in the default.
- [Update a label](https://openemail.uk/docs/api/labels/update.md): Rename or recolour. Both fields are replaced, so send the name even when only the colour changes.
- [Delete a label](https://openemail.uk/docs/api/labels/delete.md): The label goes; the threads it was on stay.
- [List templates](https://openemail.uk/docs/api/templates/list.md): Every template on the connection, newest first, keyset paginated.
- [Create a template](https://openemail.uk/docs/api/templates/create.md): A draft unless you ask for it to be published. A draft can be previewed and cannot be sent.
- [Retrieve a template](https://openemail.uk/docs/api/templates/get.md): Takes the id or the slug. The newest version comes back in full, body included.
- [Update a template](https://openemail.uk/docs/api/templates/update.md): Metadata is patched in place. Touching the body of a published template mints a new draft.
- [Delete a template](https://openemail.uk/docs/api/templates/delete.md): The template and every version of it. Mail already sent from it is untouched.
- [List versions](https://openemail.uk/docs/api/templates/versions.md): Every revision, newest first, with the declared keys each one expects.
- [Publish a version](https://openemail.uk/docs/api/templates/publish.md): Freezes the current draft and makes it what a send resolves.
- [Preview a template](https://openemail.uk/docs/api/templates/preview.md): Exactly the HTML a send would produce, without sending it.
- [Send with a template](https://openemail.uk/docs/api/templates/send.md): The stored body supplies the message; the request supplies the envelope and the values.
- [List rules](https://openemail.uk/docs/api/rules/list.md): Every rule on the connection, in the order they are evaluated.
- [Create a rule](https://openemail.uk/docs/api/rules/create.md): Conditions on one side, actions on the other. Enabled unless you say otherwise.
- [Retrieve a rule](https://openemail.uk/docs/api/rules/get.md): One rule in full, with its conditions, its actions and how often it has fired.
- [Update a rule](https://openemail.uk/docs/api/rules/update.md): Every field is optional, and `conditions` and `actions` replace whole.
- [Delete a rule](https://openemail.uk/docs/api/rules/delete.md): The rule goes; what it already did to your mail stays.
- [Reorder rules](https://openemail.uk/docs/api/rules/reorder.md): The whole order in one call, because a rule list only means anything in order.
- [Test a rule](https://openemail.uk/docs/api/rules/test.md): Which of your recent messages this rule would have caught. It changes nothing.
- [List rule runs](https://openemail.uk/docs/api/rules/runs.md): What your rules have actually done, one row per rule per message.
- [List contacts](https://openemail.uk/docs/api/contacts/list.md): The workspace address book, most recently seen first, with contacts that have never been mailed last. Every key on the workspace reads the same rows, so a contact saved by one member is a contact every member and every key sees. Paging is keyset: `limit` goes up to 200 and defaults to 50, and `nextCursor` goes back as `cursor` while `hasMore` is true.
- [Retrieve a contact](https://openemail.uk/docs/api/contacts/get.md): Addresses are stored lowercased and the lookup matches that way, so case in the path does not matter. The single-contact response also carries `audiences`, every list the contact is in.
- [Create a contact](https://openemail.uk/docs/api/contacts/create.md): Saves one address in the workspace address book. The address is the identity, so there is no id to choose and none in the response. It is trimmed and lowercased before it is stored, and the contact is saved with `source` set to `manual`. The new contact joins the built-in default audience as it is written, plus anything named in `audienceIds`.
- [Update a contact](https://openemail.uk/docs/api/contacts/update.md): A partial update, never an upsert. A field you leave out keeps its stored value and an explicit `null` clears it, so `{"notes": null}` empties the notes while `{}` changes nothing. An address not in the book is a `404`.
- [Delete a contact](https://openemail.uk/docs/api/contacts/delete.md): Removes the contact and, in the same transaction, every audience membership it held, including the built-in default one. No mail moves, and the address can still be written to.
- [List audiences](https://openemail.uk/docs/api/audiences/list.md): An audience is a named list of contacts in this workspace. Every contact is in the built-in default audience from the moment it exists, and `builtin` is what names that row; the rest are yours to make, fill and delete. The default audience comes first, then the rest newest first. This version manages lists and sends nothing to them, so there is no broadcast endpoint to go looking for.
- [Create an audience](https://openemail.uk/docs/api/audiences/create.md): Makes a new, empty audience and returns it with its id. `name` is trimmed and must then be 1 to 120 characters. `description` is optional free text for whoever reads the list later. Names are not checked for duplicates, because an audience is addressed by its id.
- [Retrieve an audience](https://openemail.uk/docs/api/audiences/get.md): The same shape as a list row, with a fresh `contactCount`. This is the cheap way to watch a count move without pulling the contacts behind it.
- [Update an audience](https://openemail.uk/docs/api/audiences/update.md): A partial update. A field you leave out keeps its stored value and an explicit `null` clears it. The built-in default audience can be renamed and described like any other, and renaming it changes neither `builtin` nor what it holds.
- [Delete an audience](https://openemail.uk/docs/api/audiences/delete.md): Deletes the audience and drops every membership it held, in one transaction. The contacts themselves are not touched: they stay in the address book, in the default audience, and in any other audience they were in.
- [List an audience's contacts](https://openemail.uk/docs/api/audiences/contacts.md): The contacts themselves rather than membership records, in the same order as the contacts list: most recently seen first, with contacts that have never been mailed last. `limit` goes up to 200 and defaults to 50. Reading the default audience here returns the whole address book.
- [Add a contact to an audience](https://openemail.uk/docs/api/audiences/add.md): Takes an address already in the workspace book and returns the membership, with the contact it points at. There is one membership per audience and contact, so adding somebody already in the audience answers `200` with the original `addedAt` rather than adding a second one or failing. That makes the call safe to retry.
- [Remove a contact from an audience](https://openemail.uk/docs/api/audiences/remove.md): Drops one membership and leaves everything else alone. The contact stays in the address book, stays in the default audience and stays in every other audience it was in.
- [List domains](https://openemail.uk/docs/api/domains/list.md): Every domain on the workspace, with its receiving, sending, tracking and files state.
- [Retrieve a domain](https://openemail.uk/docs/api/domains/get.md): Adds the addresses that exist on it and whether each is enabled.
- [Update a domain](https://openemail.uk/docs/api/domains/update.md): Sets, checks again or removes the domain’s custom tracking domain and custom files domain, the two things about a domain this API can change.
- [Roles & access](https://openemail.uk/docs/api/roles.md): What a person or a key may DO, and which addresses they may do it to. Two axes, two resources, and both have to agree before a message goes out.
- [List roles](https://openemail.uk/docs/api/roles/list.md): Every role on the workspace, built-ins first, with how many people and keys hold each.
- [Create a role](https://openemail.uk/docs/api/roles/create.md): A name and a list of permissions. What comes back is longer than what you sent.
- [Retrieve a role](https://openemail.uk/docs/api/roles/get.md): One role in full, with its whole permission list and what currently holds it.
- [Update a role](https://openemail.uk/docs/api/roles/update.md): Every field optional, and `permissions` replaces the whole list.
- [Delete a role](https://openemail.uk/docs/api/roles/delete.md): Any role but the owner, and only once you have said where its holders go.
- [List permissions](https://openemail.uk/docs/api/roles/permissions.md): The whole vocabulary, with the sentence and the heading each entry renders under.
- [List members](https://openemail.uk/docs/api/members/list.md): Everybody in the workspace, the role each holds, and the addresses each was given.
- [Invite a member](https://openemail.uk/docs/api/members/add.md): By email, with a role, and optionally with addresses and whole domains that land when they accept.
- [Retrieve a member](https://openemail.uk/docs/api/members/get.md): One person, their role and their addresses, by account id.
- [Change a member’s role](https://openemail.uk/docs/api/members/update.md): The role and nothing else. Addresses are the other axis and have their own calls.
- [Remove a member](https://openemail.uk/docs/api/members/remove.md): Both axes at once: the role, and every address grant they hold here.
- [Grant and revoke an address](https://openemail.uk/docs/api/members/addresses.md): The second axis: which addresses one person may reach, and at which level.
- [Disposable inboxes](https://openemail.uk/docs/api/temp-mail.md): A working address for somebody who has not got one: no account, no key, and gone the same day.
- [List pooled domains](https://openemail.uk/docs/api/temp-mail/domains.md): The domains this install will issue a disposable address on, and the call you make before you have anything to authenticate with.
- [Create an inbox](https://openemail.uk/docs/api/temp-mail/create.md): Issues an address and returns the token that reads it. Every field is optional, including the body.
- [Retrieve an inbox](https://openemail.uk/docs/api/temp-mail/get.md): The lease, the message count and the extensions left. The state a client draws around the list.
- [Extend the lease](https://openemail.uk/docs/api/temp-mail/extend.md): Another hour on the expiry, up to the day a lease is capped at. No body.
- [Destroy an inbox](https://openemail.uk/docs/api/temp-mail/destroy.md): Deletes the mail now instead of waiting for the lease to end.
- [List messages](https://openemail.uk/docs/api/temp-mail/messages.md): What has arrived, newest first, metadata only. This is the call to poll.
- [Retrieve a message](https://openemail.uk/docs/api/temp-mail/message.md): One message with its body. Retrieving it is what marks it seen.
- [Delete a message](https://openemail.uk/docs/api/temp-mail/message-delete.md): One message, its body and its attachments, at your request rather than the sweep’s.
- [List attachments](https://openemail.uk/docs/api/temp-mail/attachments.md): The parts on one message, with their bytes, base64.
- [Reference](https://openemail.uk/docs/api/reference.md): The spec, and the honest list of gaps.
- [OpenAPI](https://openemail.uk/docs/api/reference/openapi.md): The machine-readable reference.
- [Not built yet](https://openemail.uk/docs/api/reference/not-yet.md): Listed rather than omitted.

## SDK

A typed TypeScript client over the API. One method for every endpoint.

- [SDK](https://openemail.uk/docs/sdk.md): A typed TypeScript client for the OpenEmail API. Zero dependencies, and one method for every endpoint.
- [Install](https://openemail.uk/docs/sdk/install.md): One package, no dependencies, every server runtime.
- [Configuration](https://openemail.uk/docs/sdk/configuration.md): Three ways to build a client, every option, and what it refuses before a request is sent.
- [Errors](https://openemail.uk/docs/sdk/errors.md): Every failure throws. Two classes, and a request id on every API error.
- [Retries and idempotency](https://openemail.uk/docs/sdk/retries.md): What is retried, what is deliberately not, and why a retried send cannot duplicate.
- [Send an email](https://openemail.uk/docs/sdk/emails/send.md): `emails.send`: one message, now or later.
- [Send a batch](https://openemail.uk/docs/sdk/emails/batch.md): `emails.sendBatch`: up to 100 messages, results per item.
- [Schedule and cancel](https://openemail.uk/docs/sdk/emails/schedule.md): `scheduledAt`, `emails.reschedule` and `emails.cancel`.
- [List and get](https://openemail.uk/docs/sdk/emails/list.md): `emails.list`, `emails.listAll`, `emails.iterate`, `emails.get` and `emails.listEvents`.
- [Open and click tracking](https://openemail.uk/docs/sdk/emails/tracking.md): `emails.getTracking` and the whole `tracking` resource.
- [Threads](https://openemail.uk/docs/sdk/threads.md): `threads.list`, `listAll`, `iterate`, `get`, `update`, `trash`, `snooze`, `unsnooze` and `listAttachments`.
- [Drafts](https://openemail.uk/docs/sdk/drafts.md): `drafts.list`, `listAll`, `iterate`, `get`, `create`, `update` and `delete`.
- [Labels](https://openemail.uk/docs/sdk/labels.md): `labels.list`, `get`, `create`, `update` and `delete`.
- [Contacts](https://openemail.uk/docs/sdk/contacts.md): `contacts.list`, `get`, `create`, `update` and `delete`.
- [Audiences](https://openemail.uk/docs/sdk/audiences.md): `audiences.list`, `get`, `create`, `update`, `delete`, `listContacts`, `addContact` and `removeContact`.
- [Domains](https://openemail.uk/docs/sdk/domains.md): `domains.list`, `get` and `update`.
- [Roles](https://openemail.uk/docs/sdk/roles.md): `roles.list`, `get`, `create`, `update`, `delete` and `listPermissions`.
- [Members](https://openemail.uk/docs/sdk/members.md): `members.list`, `get`, `add`, `update`, `remove`, `grantAddress` and `revokeAddress`.
- [Endpoints](https://openemail.uk/docs/sdk/webhooks/endpoints.md): `webhooks.list`, `get`, `create`, `update`, `delete`, `rotateSecret`, `test` and `listDeliveries`.
- [Verifying a delivery](https://openemail.uk/docs/sdk/webhooks/verify.md): `verifyWebhookSignature`: constant-time, with a replay window, and the parsed event back.
- [Every method](https://openemail.uk/docs/sdk/reference/methods.md): All 116, one row each, against the endpoint each one calls.
- [Types and helpers](https://openemail.uk/docs/sdk/reference/types.md): What else the package exports.
- [Changelog](https://openemail.uk/docs/sdk/changelog.md): Every release of the package, newest first.
- [Other languages](https://openemail.uk/docs/sdk/reference/other-languages.md): TypeScript first. Everything else generates from the spec.
