inboxsink API
Skriptbara engångsinkorgar, för att testa registreringsflöden utan att bero på en riktig brevlåda. Fem rutter, en bas på https://inboxsink.com, JSON.
Rutten som förändrar något är wait: den blockerar tills meddelandet kommer. Utan den gissar ett end-to-end-test med sleep och blir instabilt så fort utskickskön släpar efter.
Tusen anrop i månaden, utan kort. Nog för att koppla in det i din testsvit och se om det håller.
Sedan, när dina tester börjar nekas: en egen domän publiceras ingenstans och hamnar därför inte på någon blockeringslista — 29 € i månaden.
JavaScript-klient
Ett paket utan beroenden, för Node 18 och senare. Koden finns på 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 kastar ett fel i stället för att returnera null när ingen kod kommer: ett test ska falla högljutt, inte tyst fylla i ett tomt fält.
Autentisering
En Authorization-header per anrop. Nycklar skapas från panelen och börjar med ibsk_.
curl -H "Authorization: Bearer ibsk_…" \
https://inboxsink.com/v1/domains
Nyckeln i klartext visas bara vid skapandet. Därefter syns endast dess prefix — vi lagrar inget annat än dess hash.
Skapa en inkorg
Alla parametrar är valfria: domain (som standard en slumpmässig pooldomän), prefix (slumpmässigt som standard), ttl_seconds (60 sekunder till 30 dagar).
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" }
En inkorg skapad via API:et är privat: bara nyckeln som skapade den kan läsa den.
Vänta på ett meddelande
Blockerar tills ett meddelande kommer och svarar sedan omedelbart. timeout i millisekunder (30 000 som standard, 120 000 max), since för att bara få meddelanden efter ett visst id.
Svarar 204 utan innehåll om tiden går ut utan meddelande — det är inget fel, det är det normala svaret på «inget har kommit».
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 och link plockas ut åt dig. En kod rapporteras bara när meddelandet faktiskt aviserar en («kod», «verifiering», «inloggning»…) — ett fakturabelopp eller ett årtal förväxlas aldrig med en kod.
Lista meddelanden
Tar since och limit (50 som standard, 200 max). Returnerar sammanfattningar, utan meddelandetext.
Läsa ett meddelande
Hela meddelandet: text, html, headers och listan över bilagor.
Ta bort en inkorg
Raderar inkorgen och dess meddelanden omedelbart. Svarar 204.
Fel
| 204 | Inget innehåll — för wait gick tiden ut utan meddelande |
| 400 | Ogiltig parameter |
| 401 | Nyckel saknas, okänd eller återkallad |
| 403 | Den inkorgen tillhör en annan nyckel |
| 404 | Inkorg eller meddelande finns inte, eller har gått ut |
| 429 | För många anrop |
Gränser och livslängd
Inkorgar ur den publika poolen lever en timme; de som skapats via API:et följer sin ttl_seconds, upp till trettio dagar. Därefter raderas inkorgen och dess meddelanden — det finns inget arkiv att hämta i efterhand.
Meddelanden över tio megabyte avvisas vid mottagandet. Adresser på en okänd domän avvisas under SMTP-sessionen, utan att skapa en studs.
De här inkorgarna kan inte skicka post, och det är avsiktligt: ett meddelande skickat från en engångsdomän skulle inte komma fram någonstans.