Desenvolupadors

A la bústia li és igual
qui hi ha al volant.

Tot el que fa l'aplicació, ho fa el teu codi: 104 operacions documentades en 68 rutes, darrere d'un document OpenAPI 3.1 que pots llegir sense cap clau. El client de TypeScript es contrasta amb aquest document a cada compilació.

Enganxa-ho a qualsevol client MCP. Es registra sol.
{ "mcpServers": {
    "openemail": {
      "url": "https://api.openemail.uk/mcp"
    } } }

MCP no necessita cap clau per enganxar. El client descobreix el servidor d'autorització a partir de l'endpoint, es registra sol i t'envia aquí a iniciar sessió.

104

operacions documentades

68

rutes sota un sol host

116

mètodes de l'SDK, que les cobreixen totes

20

esdeveniments de webhook, en tres famílies

El document OpenAPI 3.1 és a GET /openapi.json, i llegir-lo no demana cap clau.

Superfícies

Tres portes,
una bústia.

API REST

Una clau d'espai de treball decideix què pot fer una crida i des de quines adreces pot enviar. Revocar-la és una actualització i no una eliminació, així que a una crida posterior se li diu que la clau s'ha revocat.

/threads?query=invoice
/emails
emails:sendthreads:readwebhooks:write

Una clau pot enviar des de fins a 25 dominis sencers i 50 adreces concretes. GET /ping retorna els abasts que té i els abasts que el seu rol li ha deixat.

Servidor MCP

Apunta un client a l'endpoint i inicia sessió. No hi ha cap clau per enganxar, perquè el client es registra sol i t'envia aquí.

listThreads
threads:reademails:sendlabels:write

Les eines es construeixen a partir del que pot fer qui truca, així que un client limitat a llegir no hi té cap eina d'enviament. Un testimoni, però, arriba a tota la bústia.

Webhooks

Registra un endpoint https i la bústia hi publica. Els lliuraments els genera la bústia mateixa i no una crida a l'API, així que redactar a l'aplicació i publicar a l'API provoquen el mateix.

/webhooks
email.receivedemail.sentemail.failedemail.openeddomain.verifiedsuppression.added

20 esdeveniments en tres famílies, i deu endpoints per bústia.

Paritat

El client no pot anar per darrere
de l'API.

Una comprovació de paritat llegeix el document OpenAPI a cada compilació i falla si hi ha desviacions: un mètode que apunta a una operació que l'especificació no té, una operació documentada sense mètode, o una llista d'abasts que no concorda amb el que l'operació exigeix. Imprimeix què ha demostrat, i avui això diu 116 mètodes de l'SDK sobre les 104 operacions documentades.

Un enviament, tres maneres

La configuració, la petició i la crida són la mateixa operació, escrita de tres maneres.

MCPAPISDK
{ "mcpServers": {
"openemail": {
"url": "https://api.openemail.uk/mcp"
} } }
01 · 5 funcions, 1 encara per venir

Agents, API i MCP

OpenEmail està pensat perquè l'operi tant el programari com les persones. La bústia és la mateixa en tots dos casos.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

Servidor MCP

Apunta Claude, o qualsevol client MCP, cap a la teva bústia.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

OAuth per a clients de tercers

Aviat

Registre de clients en autoservei amb PKCE, perquè una aplicació pugui demanar accés com cal.

El consentiment i la revocació hi són; l'abast, no, de manera que un token arriba a tota la teva bústia i no a la part que ha demanat una aplicació.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

API REST

Una API HTTP documentada amb claus que es poden emetre, acotar i revocar.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

SDK tipats

Primer un client de TypeScript, després la resta.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

Webhooks

Avisa el teu endpoint quan arriba correu, en comptes de fer-te sondejar.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

Guia ràpida

Del no-res a un missatge enviat.
Tres passos.

  1. 1

    Crea una clau

    Configuració, claus API, en una bústia que sigui teva. Tria'n els abasts i restringeix des d'on pot enviar a dominis sencers o adreces concretes. El secret es mostra una sola vegada i el que es desa és un hash d'un sol sentit.

    GET /ping respon amb els abasts de la clau i els abasts que el seu rol li ha deixat.
    export OPENEMAIL_API_KEY=oe_live_9f2c1a4b7e05d3862c1f0a44_kX7… curl https://api.openemail.uk/ping \  -H "Authorization: Bearer $OPENEMAIL_API_KEY"
  2. 2

    Instal·la el client

    Un client de TypeScript sense dependències, publicat com a ESM i CommonJS, que llegeix la clau d'OPENEMAIL_API_KEY. Salta-te'l si prefereixes enviar el JSON tu mateix, perquè cada endpoint és HTTP pur.

    Node 18 i superior, Workers, Deno, Bun i el navegador.
    bun add @openemail/sdk
  3. 3

    Envia

    La resposta porta l'id. GET /emails/{id} el resol, /events té el rastre per destinatari i /tracking té les obertures i els clics.

    Un reintent que porta la mateixa Idempotency-Key torna el primer resultat amb Idempotency-Replayed: true.
    import { init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY }) const email = await openemail.emails.send({  from: 'Acme Billing <[email protected]>',  to: '[email protected]',  subject: 'Your September invoice',  html: '<p>Invoice attached.</p>',}) console.log(email.id, email.status)

Absent

El que encara no farà
per tu.

Cinc coses que val la pena saber abans de construir-hi a sobre, i no després.

Cap endpoint de pujada
Els adjunts en línia van en base64 amb un límit total de 5 MB. Un fitxer més gran s'envia indicant per l'id un fitxer que ja és a l'espai de treball, que viatja com a enllaç de descàrrega.
Els rebots es queden a la bústia
Un informe de lliurament s'analitza, es vincula pel Message-ID, s'etiqueta al fil i s'envia com a webhook email.bounced. No s'escriu res de tornada a la fila d'enviament, així que a través de GET /emails un missatge rebotat encara consta com a enviat.
El correu del redactor no és a GET /emails
El correu enviat des del redactor de l'aplicació no apareix en aquesta llista, perquè el redactor no escriu pel mateix camí d'enviament.
OAuth té consentiment, no abast
Una sol·licitud es mostra abans de concedir-se i Aplicacions connectades la pot retirar, però un testimoni arriba a tota la teva bústia i no només a la part que ha demanat una aplicació.
Cap flux de publicació
Publicar el client és una execució manual del preflight, la compilació i bun publish, així que una versió arriba a npm quan algú l'executa i no quan el canvi entra.

Verificar un lliurament

Cada lliurament va signat,
i cada reintent en porta l'id.

La signatura és un HMAC-SHA-256 sobre la marca de temps, un punt i el cos en cru. Verifica-la contra els bytes tal com han arribat, perquè analitzar-los i tornar-los a serialitzar reordena les claus i la trenca.

Capçaleres a cada lliurament
X-OpenEmail-Signature: t=1758240000,v1=9f0c4b2e7d1a86c3X-OpenEmail-Event: email.deliveredX-OpenEmail-Delivery: evt_4b7e05d3862c1f0a
Finestra de repetició
300 segons, i fer-la complir és feina del receptor. El verificador de l'SDK l'aplica per defecte.
Idempotency-Key
Es reclama contra un índex únic sobre la clau i la teva clau API alhora, així que un reintent després d'un temps d'espera esgotat torna el primer resultat amb Idempotency-Replayed: true en comptes d'enviar dues vegades.
Reintents
Cinc intents: quan passa l'esdeveniment, i després al cap d'1 minut, 5, 25 i 2 hores. Només es repeteix un temps d'espera esgotat, una connexió rebutjada, un 408, 425, 429 o un 5xx.
X-OpenEmail-Delivery
L'id de l'esdeveniment es crea una sola vegada i cada intent el porta, així que un receptor que vegi dues vegades el mateix id pot descartar el segon en comptes de tornar a actuar-hi.

Per a qui és

Una bústia.
Tres maneres d'entrar-hi.

Particulars

Una adreça gratuïta a openemail.uk, amb el client darrere.

acme.comacme.devstudio.acme.com
hello@acme.comlliurat
billing@acme.comlliurat
oct-2026-signup@acme.comlliurat
anything-at-all@acme.comlliurat
Empreses

Adreces per a tothom, sense comptar membres com a llicències.

SSarahAAliJJamieNNadia
Cap plaça afegida. La factura no es mou.
Desenvolupadors

La mateixa bústia a través d'una API, un SDK i MCP.

/threads?query=invoice
{ "threads": 12 }
La mateixa bústia, tant si la té una persona com un programa.

Crea una clau.
Envia alguna cosa.

Full API, MCP and SDK access a tots els plans. Free hi porta 50 AI actions a day inclòs.

Llegeix la guia ràpida de l'API

La teva safata d'entrada,
sota les teves condicions.

Infraestructura de correu per a empreses, IA, agents i correu personal. Feta per escalar, per a la privadesa i el control. Tot el que el correu hauria d'haver tingut des del primer dia.

OpenEmail

Infraestructura de correu per a empreses, IA, agents i correu personal. Feta per escalar, per a la privadesa i el control. Tot el que el correu hauria d'haver tingut des del primer dia.

© 2026 OpenEmail. Tots els drets reservats.
Estat