inboxsink API
Skriptbare Wegwerf-Postfächer, um Anmeldestrecken zu testen, ohne von einem echten Postfach abzuhängen. Fünf Routen, eine Basis unter https://inboxsink.com, JSON.
Die Route, die etwas ändert, ist wait: Sie blockiert, bis die Nachricht eintrifft. Ohne sie rät ein End-to-End-Test mit sleep und wird instabil, sobald die Versandwarteschlange stockt.
Tausend Aufrufe im Monat, ohne Karte. Genug, um ihn in Ihre Testsuite einzubauen und zu sehen, ob es trägt.
Später, wenn Ihre Tests abgewiesen werden: eine eigene Domain wird nirgends veröffentlicht und landet daher auf keiner Sperrliste — 29 € im Monat.
JavaScript-Client
Ein Paket ohne Abhängigkeiten, für Node 18 und neuer. Quellcode auf 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 wirft einen Fehler, statt null zurückzugeben, wenn kein Code eintrifft: ein Test soll laut scheitern, nicht stillschweigend ein leeres Feld absenden.
Authentifizierung
Ein Authorization-Header pro Aufruf. Schlüssel werden im Dashboard erstellt und beginnen mit ibsk_.
curl -H "Authorization: Bearer ibsk_…" \
https://inboxsink.com/v1/domains
Der Schlüssel im Klartext wird nur bei der Erstellung angezeigt. Danach bleibt nur sein Präfix sichtbar — wir speichern lediglich seinen Hash.
Postfach anlegen
Alle Parameter sind optional: domain (standardmäßig eine zufällige Pool-Domain), prefix (standardmäßig zufällig), ttl_seconds (60 Sekunden bis 30 Tage).
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" }
Ein über die API angelegtes Postfach ist privat: nur der Schlüssel, der es erstellt hat, kann es lesen.
Auf eine Nachricht warten
Blockiert bis zum Eintreffen einer Nachricht und antwortet dann sofort. timeout in Millisekunden (30 000 Standard, 120 000 Maximum), since, um nur Nachrichten nach einer Kennung zu erhalten.
Antwortet mit 204 ohne Inhalt, wenn die Frist ohne Nachricht abläuft — das ist kein Fehler, sondern die normale Antwort auf «nichts eingetroffen».
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 und link werden für Sie ausgelesen. Ein Code wird nur gemeldet, wenn die Nachricht ihn tatsächlich ankündigt («Code», «Bestätigung», «Anmeldung»…) — ein Rechnungsbetrag oder eine Jahreszahl wird nie damit verwechselt.
Nachrichten auflisten
Nimmt since und limit (50 Standard, 200 Maximum). Liefert Zusammenfassungen, ohne Nachrichtentext.
Eine Nachricht lesen
Die vollständige Nachricht: text, html, headers und die Liste der Anhänge.
Postfach löschen
Löscht das Postfach und seine Nachrichten sofort. Antwortet mit 204.
Fehler
| 204 | Kein Inhalt — bei wait lief die Frist ohne Nachricht ab |
| 400 | Ungültiger Parameter |
| 401 | Schlüssel fehlt, unbekannt oder widerrufen |
| 403 | Dieses Postfach gehört einem anderen Schlüssel |
| 404 | Postfach oder Nachricht nicht vorhanden oder abgelaufen |
| 429 | Zu viele Aufrufe |
Grenzen und Lebensdauer
Postfächer aus dem öffentlichen Pool leben eine Stunde; über die API angelegte folgen ihrem ttl_seconds, bis zu dreißig Tage. Danach werden Postfach und Nachrichten gelöscht — es gibt kein Archiv, das man später holen könnte.
Nachrichten über zehn Megabyte werden beim Empfang abgewiesen. Adressen einer unbekannten Domain werden während der SMTP-Sitzung abgelehnt, ohne einen Bounce zu erzeugen.
Diese Postfächer können keine Mail versenden, und das ist Absicht: eine aus einer Wegwerfdomain gesendete Nachricht käme nirgends an.