inboxsink API
Scriptbare wegwerppostvakken, om aanmeldstromen te testen zonder van een echte mailbox af te hangen. Vijf routes, één basis op https://inboxsink.com, JSON.
De route die iets verandert is wait: die blokkeert tot het bericht aankomt. Zonder haar gokt een end-to-end-test met sleep en wordt instabiel zodra de verzendwachtrij achterloopt.
Duizend aanroepen per maand, zonder kaart. Genoeg om hem in je testsuite te hangen en te zien of het houdt.
Later, wanneer je tests geweigerd worden: een eigen domein wordt nergens gepubliceerd en belandt dus op geen enkele blokkeerlijst — 29 € per maand.
JavaScript-client
Een pakket zonder afhankelijkheden, voor Node 18 en hoger. Broncode op 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 gooit een fout in plaats van null terug te geven als er geen code komt: een test moet luid falen, niet stilletjes een leeg veld invullen.
Authenticatie
Eén Authorization-header per aanroep. Sleutels maak je aan in het dashboard; ze beginnen met ibsk_.
curl -H "Authorization: Bearer ibsk_…" \
https://inboxsink.com/v1/domains
De sleutel in leesbare vorm wordt alleen bij het aanmaken getoond. Daarna blijft enkel het voorvoegsel zichtbaar — wij bewaren alleen de hash.
Een postvak aanmaken
Alle parameters zijn optioneel: domain (standaard een willekeurig pooldomein), prefix (standaard willekeurig), ttl_seconds (60 seconden tot 30 dagen).
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" }
Een via de API aangemaakt postvak is privé: alleen de sleutel die het aanmaakte kan het lezen.
Op een bericht wachten
Blokkeert tot er een bericht aankomt en antwoordt dan meteen. timeout in milliseconden (standaard 30 000, maximaal 120 000), since om alleen berichten na een identifier te krijgen.
Antwoordt 204 zonder inhoud als de termijn verstrijkt zonder bericht — dat is geen fout, dat is het normale antwoord op «er is niets aangekomen».
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 en link worden voor je uitgelezen. Een code wordt alleen gemeld als het bericht er daadwerkelijk een aankondigt («code», «verificatie», «inloggen»…) — een factuurbedrag of een jaartal wordt er nooit mee verward.
Berichten opsommen
Neemt since en limit (standaard 50, maximaal 200). Geeft samenvattingen terug, zonder berichttekst.
Een bericht lezen
Het volledige bericht: text, html, headers en de lijst met bijlagen.
Een postvak verwijderen
Wist het postvak en zijn berichten meteen. Antwoordt 204.
Fouten
| 204 | Geen inhoud — bij wait verstreek de termijn zonder bericht |
| 400 | Ongeldige parameter |
| 401 | Sleutel ontbreekt, onbekend of ingetrokken |
| 403 | Dat postvak hoort bij een andere sleutel |
| 404 | Postvak of bericht bestaat niet, of is verlopen |
| 429 | Te veel aanroepen |
Limieten en levensduur
Postvakken uit de publieke pool leven één uur; via de API aangemaakte volgen hun ttl_seconds, tot dertig dagen. Daarna worden postvak en berichten gewist — er is geen archief om later op te halen.
Berichten boven tien megabyte worden bij ontvangst geweigerd. Adressen op een onbekend domein worden tijdens de SMTP-sessie geweigerd, zonder een bounce te maken.
Deze postvakken kunnen geen post versturen, en dat is bewust: een bericht vanaf een wegwerpdomein zou nergens aankomen.