API ของ inboxsink

กล่องจดหมายชั่วคราวที่สั่งงานด้วยโค้ดได้ ใช้ทดสอบขั้นตอนสมัครสมาชิกโดยไม่ต้องพึ่งกล่องจดหมายจริง ห้าเส้นทาง ฐานเดียวที่ https://inboxsink.com รับส่งเป็น JSON

เส้นทางที่เปลี่ยนเกมคือ wait ซึ่งจะรอจนกว่าข้อความจะมาถึง หากไม่มีมัน การทดสอบแบบครบวงจรต้องเดาด้วย sleep และจะไม่เสถียรทันทีที่คิวการส่งล่าช้า

คีย์ API ฟรี

หนึ่งพันครั้งต่อเดือน ไม่ต้องใช้บัตร มากพอจะต่อเข้ากับชุดทดสอบของคุณและดูว่ามันอยู่ได้ไหม

ต่อมา เมื่อการทดสอบของคุณเริ่มถูกปฏิเสธ โดเมนของคุณเองไม่ถูกเผยแพร่ที่ใดเลย จึงไม่ตกไปอยู่ในบัญชีดำ — เดือนละ 29 €

ไลบรารี JavaScript

แพ็กเกจที่ไม่มีการพึ่งพาใด ๆ สำหรับ Node 18 ขึ้นไป โค้ดอยู่บน GitHub

npm i inboxsink
import { InboxSink } from 'inboxsink';
const sink = new InboxSink(process.env.INBOXSINK_API_KEY);

const inbox = await sink.createInbox();
const code = await sink.waitForOtp(inbox.id);   // '204815'

waitForOtp จะโยนข้อผิดพลาดแทนการคืนค่า null เมื่อไม่มีรหัสมาถึง เพราะการทดสอบควรล้มเหลวอย่างชัดเจน ไม่ใช่กรอกช่องว่างเงียบ ๆ

การยืนยันตัวตน

ใส่ส่วนหัว Authorization ในทุกการเรียก สร้างคีย์ได้จากแดชบอร์ด และคีย์จะขึ้นต้นด้วย ibsk_

curl -H "Authorization: Bearer ibsk_…" \
  https://inboxsink.com/v1/domains

คีย์แบบอ่านได้จะแสดงเฉพาะตอนสร้างเท่านั้น หลังจากนั้นจะเห็นเพียงคำนำหน้า เราเก็บไว้แค่ค่าแฮชของมัน

สร้างกล่องจดหมาย

POST /v1/inboxes

พารามิเตอร์ทุกตัวเป็นทางเลือก: domain (ค่าเริ่มต้นคือโดเมนสุ่มจากกลุ่ม), prefix (ค่าเริ่มต้นเป็นแบบสุ่ม), ttl_seconds (ตั้งแต่ 60 วินาทีถึง 30 วัน)

curl -X POST https://inboxsink.com/v1/inboxes \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"ttl_seconds": 900}'

→ 201
{ "id": "42", "address": "9f2c1a@mailhusk.com", "expires_at": "2026-09-01T15:12:00Z" }

กล่องที่สร้างผ่าน API เป็นแบบส่วนตัว มีเพียงคีย์ที่สร้างมันเท่านั้นที่อ่านได้

รอข้อความ

GET /v1/inboxes/:id/wait

รอจนกว่าจะมีข้อความเข้ามา แล้วตอบกลับทันที timeout เป็นมิลลิวินาที (ค่าเริ่มต้น 30 000 สูงสุด 120 000), since เพื่อรับเฉพาะข้อความหลังตัวระบุที่กำหนด

ตอบ 204 โดยไม่มีเนื้อหาหากหมดเวลาแล้วยังไม่มีข้อความ นี่ไม่ใช่ข้อผิดพลาด แต่เป็นคำตอบปกติของ «ยังไม่มีอะไรเข้ามา»

curl -H "Authorization: Bearer $KEY" \
  "https://inboxsink.com/v1/inboxes/42/wait?timeout=45000"

→ 200
{ "message": { "id": "913", "from": "no-reply@acme.com", "subject": "…",
               "otp": "204815", "link": "https://acme.com/confirm/9f3a" } }

otp และ link ถูกดึงออกมาให้แล้ว รหัสจะถูกรายงานก็ต่อเมื่อข้อความประกาศไว้จริง («รหัส», «ยืนยัน», «เข้าสู่ระบบ»…) ยอดใบแจ้งหนี้หรือปี พ.ศ. จะไม่ถูกเข้าใจผิดว่าเป็นรหัส

แสดงรายการข้อความ

GET /v1/inboxes/:id/messages

รับ since และ limit (ค่าเริ่มต้น 50 สูงสุด 200) คืนค่าเป็นบทสรุป ไม่รวมเนื้อความ

อ่านข้อความ

GET /v1/messages/:id

ข้อความทั้งฉบับ: text, html, headers และรายการไฟล์แนบ

ลบกล่องจดหมาย

DELETE /v1/inboxes/:id

ลบกล่องและข้อความทั้งหมดทันที ตอบกลับ 204

ข้อผิดพลาด

204ไม่มีเนื้อหา — สำหรับ wait คือหมดเวลาโดยไม่มีข้อความ
400พารามิเตอร์ไม่ถูกต้อง
401ไม่มีคีย์ คีย์ไม่รู้จัก หรือถูกเพิกถอน
403กล่องนี้เป็นของคีย์อื่น
404ไม่มีกล่องหรือข้อความ หรือหมดอายุแล้ว
429เรียกใช้บ่อยเกินไป

ข้อจำกัดและอายุการใช้งาน

กล่องจากกลุ่มสาธารณะมีอายุหนึ่งชั่วโมง ส่วนกล่องที่สร้างผ่าน API จะเป็นไปตาม ttl_seconds ของตัวเอง สูงสุดสามสิบวัน เมื่อครบกำหนด กล่องและข้อความจะถูกลบ ไม่มีคลังเก็บให้ดึงกลับมาภายหลัง

ข้อความที่ใหญ่เกินสิบเมกะไบต์จะถูกปฏิเสธตั้งแต่ตอนรับ ที่อยู่บนโดเมนที่ไม่รู้จักจะถูกปฏิเสธระหว่างเซสชัน SMTP โดยไม่สร้างอีเมลตีกลับ

กล่องเหล่านี้ส่งอีเมลไม่ได้ และนี่เป็นความตั้งใจ เพราะข้อความที่ส่งจากโดเมนชั่วคราวจะไปไม่ถึงที่ใดเลย