डेवलपर
मेलबॉक्स को फ़र्क नहीं पड़ता
कि चला कौन रहा है।
ऐप जो कुछ करता है, वही आपका कोड करता है: 68 पाथ पर 104 दस्तावेज़ीकृत ऑपरेशन, एक OpenAPI 3.1 दस्तावेज़ के पीछे जिसे आप बिना कुंजी के पढ़ सकते हैं। TypeScript क्लाइंट को हर बिल्ड पर उसी दस्तावेज़ पर कसा जाता है।
MCP के लिए पेस्ट करने को कोई कुंजी नहीं चाहिए। क्लाइंट एंडपॉइंट से ऑथराइज़ेशन सर्वर खोज लेता है, खुद को रजिस्टर करता है, और साइन इन के लिए आपको यहाँ भेज देता है।
104
दस्तावेज़ीकृत ऑपरेशन
68
एक ही होस्ट पर पाथ
116
SDK मेथड, जो उन सबको कवर करते हैं
20
वेबहुक इवेंट, तीन परिवारों में
OpenAPI 3.1 दस्तावेज़ GET /openapi.json पर है, और उसे पढ़ने के लिए कोई कुंजी नहीं चाहिए।
सतहें
तीन दरवाज़े,
एक ही मेलबॉक्स।
वर्कस्पेस कुंजी तय करती है कि कोई कॉल क्या कर सकती है और किन पतों से भेज सकती है। रद्द करना डिलीट नहीं, अपडेट है, इसलिए बाद में आने वाली कॉल को बता दिया जाता है कि कुंजी रद्द कर दी गई थी।
एक कुंजी अधिकतम 25 पूरे डोमेन और 50 एकल पतों से भेजती है। GET /ping वापस पढ़ता है कि उसके पास कौन-से स्कोप हैं और उसकी भूमिका ने उसे कौन-से स्कोप छोड़े हैं।
किसी क्लाइंट को एंडपॉइंट पर लगाएँ और साइन इन करें। पेस्ट करने को कोई कुंजी नहीं है, क्योंकि क्लाइंट खुद को रजिस्टर करता है और आपको यहाँ भेज देता है।
टूल इस आधार पर बनते हैं कि कॉल करने वाला क्या कर सकता है, इसलिए सिर्फ़ पढ़ने तक सीमित क्लाइंट में भेजने का कोई टूल नहीं होता। टोकन फिर भी पूरे मेलबॉक्स तक पहुँचता है।
एक https एंडपॉइंट रजिस्टर करें और मेलबॉक्स उस पर पोस्ट करता है। डिलीवरी किसी API कॉल से नहीं, मेलबॉक्स से ही उठती है, इसलिए ऐप में लिखना और API पर पोस्ट करना, दोनों एक ही डिलीवरी पैदा करते हैं।
तीन परिवारों में 20 इवेंट, और हर मेलबॉक्स पर दस एंडपॉइंट।
समानता
क्लाइंट पीछे नहीं रह सकता
API से।
एक समानता जाँच हर बिल्ड पर OpenAPI दस्तावेज़ पढ़ती है और अंतर मिलते ही फ़ेल हो जाती है: ऐसा मेथड जो स्पेक में मौजूद न होने वाले ऑपरेशन की ओर इशारा करे, ऐसा दस्तावेज़ीकृत ऑपरेशन जिसका कोई मेथड न हो, या ऐसी स्कोप सूची जो ऑपरेशन की माँग से मेल न खाए। यह छापती है कि उसने क्या साबित किया, और आज वह पढ़ती है: सभी 104 दस्तावेज़ीकृत ऑपरेशन पर 116 SDK मेथड।
कॉन्फ़िग, रिक्वेस्ट और कॉल एक ही ऑपरेशन हैं, तीन तरीक़ों से लिखा हुआ।
एजेंट, API और MCP
OpenEmail को लोगों के साथ-साथ सॉफ़्टवेयर से भी चलाया जाना है। मेलबॉक्स दोनों ही सूरत में एक ही रहता है।
MCP सर्वर
Claude को, या किसी भी MCP क्लाइंट को, अपने मेलबॉक्स पर लगाएँ।
थर्ड-पार्टी क्लाइंट के लिए OAuth
जल्दPKCE के साथ स्व-सेवा क्लाइंट पंजीकरण, ताकि कोई ऐप ठीक ढंग से पहुँच माँग सके।
सहमति और निरस्तीकरण यहाँ हैं; स्कोप नहीं, इसलिए टोकन पूरे मेलबॉक्स तक पहुँचता है, उस हिस्से तक नहीं जो ऐप ने माँगा था।
REST API
एक दस्तावेज़ीकृत HTTP API, ऐसी कुंजियों के साथ जो जारी, सीमित और रद्द की जा सकती हैं।
क्विकस्टार्ट
शून्य से एक भेजे गए संदेश तक।
तीन कदम।
- 1
एक कुंजी जारी करें
सेटिंग्स, API कुंजियाँ, अपने किसी मेलबॉक्स पर। इसके स्कोप चुनें, और यह किस पते से भेज सकती है इसे पूरे डोमेन या एकल पतों तक सीमित करें। सीक्रेट एक ही बार दिखाया जाता है और जो संग्रहीत होता है वह एकतरफ़ा हैश है।
GET /ping उन स्कोप के साथ जवाब देता है जो कुंजी पर हैं और जो उसकी भूमिका ने उसे छोड़े हैं। export OPENEMAIL_API_KEY=oe_live_9f2c1a4b7e05d3862c1f0a44_kX7… curl https://api.openemail.uk/ping \ -H "Authorization: Bearer $OPENEMAIL_API_KEY" - 2
क्लाइंट इंस्टॉल करें
बिना किसी डिपेंडेंसी वाला TypeScript क्लाइंट, ESM और CommonJS के रूप में प्रकाशित, जो कुंजी OPENEMAIL_API_KEY से पढ़ता है। अगर आप खुद JSON पोस्ट करना चाहें तो इसे छोड़ दें, क्योंकि हर एंडपॉइंट सादा HTTP है।
Node 18 और उससे ऊपर, Workers, Deno, Bun और ब्राउज़र। bun add @openemail/sdk - 3
भेजें
जवाब में id आती है। GET /emails/{id} उसे हल करता है, /events में हर प्राप्तकर्ता का ब्यौरा है, और /tracking में ओपन और क्लिक।
वही Idempotency-Key लेकर आया दोबारा प्रयास पहला ही नतीजा लौटाता है, साथ में 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)
अनुपस्थित
यह क्या नहीं करेगा
आपके लिए अभी तक।
पाँच बातें जो इस पर बनाना शुरू करने से पहले जान लेना बेहतर है, बाद में नहीं।
- कोई अपलोड एंडपॉइंट नहीं
- इनलाइन अटैचमेंट base64 में जाते हैं, कुल 5 MB की सीमा के भीतर। बड़ी फ़ाइल भेजने के लिए वर्कस्पेस में पहले से मौजूद फ़ाइल को उसकी id से बताया जाता है, जो डाउनलोड लिंक के रूप में जाती है।
- बाउंस मेलबॉक्स पर ही रुक जाते हैं
- डिलीवरी रिपोर्ट पार्स होती है, Message-ID से मिलाई जाती है, थ्रेड पर लेबल की जाती है और email.bounced वेबहुक के रूप में भेजी जाती है। सेंड रो में कुछ वापस नहीं लिखा जाता, इसलिए GET /emails से बाउंस हुआ संदेश अब भी भेजा हुआ ही दिखता है।
- कंपोज़र का मेल GET /emails में नहीं होता
- ऐप के कंपोज़र से भेजा गया मेल उस सूची में नहीं दिखता, क्योंकि कंपोज़र उसी सेंड पाथ से नहीं लिखता।
- OAuth में सहमति है, स्कोप नहीं
- अनुमति मिलने से पहले अनुरोध दिखाया जाता है और Connected apps उसे वापस ले लेता है, लेकिन टोकन आपके पूरे मेलबॉक्स तक पहुँचता है, उस हिस्से तक नहीं जो किसी ऐप ने माँगा था।
- कोई रिलीज़ वर्कफ़्लो नहीं
- क्लाइंट को पब्लिश करना प्रीफ़्लाइट, बिल्ड और bun publish को हाथ से चलाना है, इसलिए कोई वर्ज़न npm पर तब पहुँचता है जब कोई उसे चलाता है, न कि जब बदलाव आता है।
डिलीवरी की पुष्टि
हर डिलीवरी हस्ताक्षरित है,
और हर दोबारा प्रयास अपनी id साथ ले जाता है।
हस्ताक्षर टाइमस्टैम्प, एक डॉट और कच्ची बॉडी पर बना HMAC-SHA-256 है। बाइट्स जैसे आए वैसे ही उनके ख़िलाफ़ पुष्टि करें, क्योंकि पार्स करके दोबारा सीरियलाइज़ करने से कुंजियों का क्रम बदल जाता है और हस्ताक्षर टूट जाता है।
X-OpenEmail-Signature: t=1758240000,v1=9f0c4b2e7d1a86c3X-OpenEmail-Event: email.deliveredX-OpenEmail-Delivery: evt_4b7e05d3862c1f0a- रीप्ले विंडो
- 300 सेकंड, और इसे लागू करना रिसीवर का काम है। SDK का वेरिफ़ायर डिफ़ॉल्ट रूप से यही लेता है।
- Idempotency-Key
- इसे कुंजी और आपकी API कुंजी, दोनों पर बने एक यूनीक इंडेक्स के ख़िलाफ़ दर्ज किया जाता है, इसलिए टाइमआउट के बाद दोबारा प्रयास दो बार भेजने के बजाय पहला ही नतीजा लौटाता है, साथ में Idempotency-Replayed: true।
- दोबारा प्रयास
- पाँच प्रयास: इवेंट होते ही, फिर 1 मिनट, 5, 25 और 2 घंटे बाद। सिर्फ़ टाइमआउट, ठुकराया गया कनेक्शन, 408, 425, 429 या कोई 5xx दोहराया जाता है।
- X-OpenEmail-Delivery
- इवेंट id एक ही बार बनती है और हर प्रयास उसे साथ ले जाता है, इसलिए जो रिसीवर वही id दो बार देखे, वह दूसरी पर फिर से अमल करने के बजाय उसे गिरा सकता है।
यह किसके लिए है
एक मेलबॉक्स।
अंदर आने के तीन रास्ते।
openemail.uk पर एक मुफ़्त पता, और उसके पीछे क्लाइंट।
वही मेलबॉक्स, API, SDK और MCP के ज़रिए।
एक कुंजी जारी करें।
कुछ भेजें।
Full API, MCP and SDK access हर प्लान पर। Free अपने साथ 50 AI actions a day लाता है।