Built on top

Watch your integration
call by call

Every call a key made, every webhook you sent, with the code and the timing.

API log
oe_live_7f20Rotated
GET/emails20061 ms
POST/emails429send_quota_exceeded
GET/contacts20044 ms
1284calls logged for this key

Rotating gives a new secret. The scopes and every logged call stay.

How it works

Running in three steps.

  1. 01

    Issue a key

    Scope it, cap it with a role, and name which addresses it may send as.

  2. 02

    Read the log

    Method, path, status, error code and duration, for each key.

  3. 03

    Rotate or revoke

    Rotating keeps the scopes and the history. The old secret dies at once.

What it runs on

The parts doing the work.

Nothing here is a separate product. Each one is a piece of the mailbox you already have.

REST API

A documented HTTP API with issuable, scopable, revocable keys.

/threads?query=invoice
{ "threads": 12 }
Same mailbox, whether a person or a program is holding it.
Webhooks

Tell your endpoint when mail arrives, instead of making you poll.

/threads?query=invoice
{ "threads": 12 }
Same mailbox, whether a person or a program is holding it.
Typed SDKs

A TypeScript client first, then the rest.

/threads?query=invoice
{ "threads": 12 }
Same mailbox, whether a person or a program is holding it.
Roles & permissions levels

A role says what somebody may do; an address grant says what they may do it to.

Sarahsupport@
Alexbilling@
Ninacareers@

read, or read and send as it, with nothing else visible

Nearby

Other jobs for the same inbox.

An address per customer

Give every ticket, record or customer its own address, with nothing to create.

Ticket 8123ticket-8123@in.yourapp.com
Ticket 8124ticket-8124@in.yourapp.com
Toticket-8123@in.yourapp.com
Fromticket-8123@in.yourapp.comSame address
Email into your app

Mail arriving at your domain reaches your server as a signed webhook, seconds later.

POSThooks.acme.dev/mail200
typeemail.received
Email inside your product

Send, read and organise mail from your own code with a typed client.

awaitopenemail.emails.send({
})
idmsg_3e91c7
queuedsentdelivered
email.openedemail.clicked

Your inbox,
on your own terms.

Email infrastructure for businesses, AI, agents and personal email. Built for scale, privacy and control. Everything email should have had from day one.

OpenEmail

Email infrastructure for businesses, AI, agents and personal email. Built for scale, privacy and control. Everything email should have had from day one.

© 2026 OpenEmail. All rights reserved.