Vývojáři
Schránce je jedno
kdo ji ovládá.
Všechno, co umí aplikace, umí i váš kód: 104 zdokumentovaných operací na 68 cestách za dokumentem OpenAPI 3.1, který si přečtete i bez klíče. TypeScriptový klient se proti tomu dokumentu kontroluje při každém buildu.
MCP nepotřebuje klíč, který byste vkládali. Klient si z endpointu najde autorizační server, sám se zaregistruje a pošle vás sem se přihlásit.
104
zdokumentovaných operací
68
cest pod jedním hostem
116
metod SDK, které je pokrývají všechny
20
webhookových událostí ve třech rodinách
Dokument OpenAPI 3.1 je na GET /openapi.json a ke čtení klíč nepotřebujete.
Rozhraní
Troje dveře,
jedna schránka.
Klíč pracovního prostoru rozhoduje, co volání smí a pod kterými adresami smí odesílat. Odvolání je aktualizace, ne smazání, takže pozdějšímu volání se řekne, že klíč byl odvolán.
Jeden klíč odesílá pod až 25 celými doménami a 50 jednotlivými adresami. GET /ping vrátí rozsahy, které drží, i rozsahy, které mu ponechala jeho role.
Nasměrujte klienta na endpoint a přihlaste se. Není co vkládat, protože klient se zaregistruje sám a pošle vás sem.
Nástroje se staví z toho, co volající smí, takže klient držený u čtení v sobě nemá nástroj na odesílání. Token přesto dosáhne na celou schránku.
Zaregistrujte https endpoint a schránka na něj bude posílat. Doručení vyvolává sama schránka, ne volání API, takže psaní v aplikaci a odeslání přes API vyvolají totéž.
20 událostí ve třech rodinách a deset endpointů na schránku.
Parita
Klient nemůže zaostávat
za API.
Kontrola parity čte při každém buildu dokument OpenAPI a spadne na jakémkoli rozjetí: metoda mířící na operaci, kterou specifikace nemá, zdokumentovaná operace bez metody nebo seznam rozsahů, který nesedí s tím, co operace vyžaduje. Vypíše, co dokázala, a dnes to zní 116 metod SDK přes všech 104 zdokumentovaných operací.
Konfigurace, požadavek a volání jsou táž operace, zapsaná třemi způsoby.
Agenti, API a MCP
OpenEmail je dělaný tak, aby ho ovládal software stejně jako lidé. Schránka je v obou případech tatáž.
MCP server
Nasměrujte Claude, nebo jakéhokoli MCP klienta, na svou schránku.
OAuth pro klienty třetích stran
BrzySamoobslužná registrace klienta s PKCE, aby si aplikace mohla o přístup říct pořádně.
Souhlas a odvolání tu jsou, rozsah ne, takže token dosáhne na celou vaši schránku, ne jen na tu část, o kterou aplikace požádala.
REST API
Zdokumentované HTTP API s klíči, které lze vydat, omezit rozsahem i odvolat.
Rychlý start
Od ničeho k odeslané zprávě.
Tři kroky.
- 1
Vydejte si klíč
Nastavení, API klíče, na schránce, která je vaše. Vyberte jeho rozsahy a zužte to, pod čím smí odesílat, na celé domény nebo jednotlivé adresy. Tajný klíč se ukáže jednou a uloží se jednosměrný hash.
GET /ping odpoví rozsahy na klíči a rozsahy, které mu ponechala jeho role. export OPENEMAIL_API_KEY=oe_live_9f2c1a4b7e05d3862c1f0a44_kX7… curl https://api.openemail.uk/ping \ -H "Authorization: Bearer $OPENEMAIL_API_KEY" - 2
Nainstalujte klienta
TypeScriptový klient bez závislostí, publikovaný jako ESM i CommonJS, který si klíč načte z OPENEMAIL_API_KEY. Přeskočte ho, jestli si radši pošlete JSON sami, protože každý endpoint je obyčejné HTTP.
Node 18 a výš, Workers, Deno, Bun a prohlížeč. bun add @openemail/sdk - 3
Odešlete
Odpověď nese id. GET /emails/{id} ho rozluští, /events má stopu po jednotlivých příjemcích a /tracking má otevření a kliknutí.
Opakovaný pokus se stejným Idempotency-Key vrátí první výsledek s 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)
Chybí
Co pro vás zatím
neudělá.
Pět věcí, které je lepší vědět předtím, než na tom začnete stavět, než potom.
- Žádný endpoint pro nahrávání
- Vložené přílohy jdou jako base64 se stropem 5 MB celkem. Větší soubor se pošle tak, že podle id pojmenujete soubor už ležící v pracovním prostoru, a ten putuje jako odkaz ke stažení.
- Odmítnutí končí ve schránce
- Zpráva o doručení se rozparsuje, spáruje podle Message-ID, označí na vlákně a odešle jako webhook email.bounced. Nic se ale nezapíše zpět do řádku o odeslání, takže přes GET /emails se odmítnutá zpráva pořád čte jako odeslaná.
- Pošta z editoru není v GET /emails
- Pošta odeslaná z editoru v aplikaci se v tom seznamu neobjeví, protože editor nezapisuje stejnou odesílací cestou.
- OAuth má souhlas, ne rozsah
- Žádost se ukáže dřív, než ji udělíte, a Připojené aplikace ji vezmou zpět, jenže token dosáhne na celou vaši schránku, ne jen na tu část, o kterou aplikace požádala.
- Žádný proces vydávání
- Publikování klienta je ruční spuštění preflightu, buildu a bun publish, takže verze doputuje na npm, když ji někdo spustí, ne když změna přistane.
Ověření doručení
Každé doručení je podepsané,
a každé opakování nese jeho id.
Podpis je HMAC-SHA-256 přes časové razítko, tečku a syrové tělo. Ověřujte proti bajtům tak, jak dorazily, protože rozparsování a opětovná serializace přeházejí klíče a podpis rozbijí.
X-OpenEmail-Signature: t=1758240000,v1=9f0c4b2e7d1a86c3X-OpenEmail-Event: email.deliveredX-OpenEmail-Delivery: evt_4b7e05d3862c1f0a- Okno pro opakování
- 300 sekund a vymáhat je má příjemce. Ověřovač v SDK ho má ve výchozím nastavení.
- Idempotency-Key
- Zabírá se proti unikátnímu indexu nad klíčem a vaším API klíčem dohromady, takže opakování po vypršení času vrátí první výsledek s Idempotency-Replayed: true, místo aby odeslalo dvakrát.
- Opakování
- Pět pokusů: ve chvíli, kdy událost nastane, pak po 1 minutě, 5, 25 a 2 hodinách. Opakuje se jen vypršení času, odmítnuté spojení, 408, 425, 429 nebo 5xx.
- X-OpenEmail-Delivery
- Id události vzniká jednou a nese ho každý pokus, takže příjemce, který totéž id uvidí dvakrát, může ten druhý zahodit místo toho, aby podle něj znovu jednal.
Pro koho to je
Jedna schránka.
Tři cesty dovnitř.
Adresa zdarma na openemail.uk, a za ní klient.
Stejná schránka přes API, SDK a MCP.
Vydejte si klíč.
Něco odešlete.
Full API, MCP and SDK access v každém tarifu. Free s sebou nese 50 AI actions a day.