For developers
What the web client can do, your program can do too.
There is no second, smaller API. The web client talks to the same JSON API a token gets, described in OpenAPI 3.1, with the person's rights and the token's scopes.
The parts
One API
https://mail.emxmail.app/api, bearer tokens with mail:read, mail:write and admin, with an expiry you choose.
Changes, not polling
A client asks for what changed since its last state, and stays current without reloading.
Webhooks
message.received and delivery.failed, signed, retried, with a delivery id to deduplicate on.
An open client
An SDK for Rust, the emx command line and a desktop app, open source on GitHub.
Standards
IMAP, SMTP, SPF, DKIM, DMARC, MTA-STS and autoconfiguration, for everything that needs no API.
Errors with names
Every error answer has a code, a request id and a link to its explanation.
An example
curl -H "Authorization: Bearer emx_..." https://mail.emxmail.app/api/accounts/me/mailboxes
A mailbox at your own domain, today.
Private is free and starts at once. Switch to Team when more people join.