API di inboxsink
Caselle usa e getta pilotabili da codice, per testare le iscrizioni senza dipendere da una casella vera. Cinque rotte, una base su https://inboxsink.com, JSON.
La rotta che cambia qualcosa è wait: si blocca finché il messaggio non arriva. Senza di essa un test end-to-end tira a indovinare con sleep e diventa instabile appena la coda di invio rallenta.
Mille chiamate al mese, senza carta. Quanto basta per collegarla alla tua suite di test e vedere se regge.
Poi, quando i tuoi test inizieranno a essere rifiutati: un dominio tuo non è pubblicato da nessuna parte, quindi non finisce in nessuna lista nera — 29 € al mese.
Client JavaScript
Un pacchetto senza alcuna dipendenza, per Node 18 e successivi. Il codice è su 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 solleva un errore invece di restituire null quando non arriva nessun codice: un test deve fallire in modo rumoroso, non compilare in silenzio un campo vuoto.
Autenticazione
Un'intestazione Authorization a ogni chiamata. Le chiavi si creano dal pannello e iniziano con ibsk_.
curl -H "Authorization: Bearer ibsk_…" \
https://inboxsink.com/v1/domains
La chiave in chiaro viene mostrata solo alla creazione. Dopo resta visibile soltanto il prefisso: di essa conserviamo unicamente l'impronta.
Creare una casella
Tutti i parametri sono facoltativi: domain (per impostazione predefinita un dominio del pool a caso), prefix (casuale per impostazione predefinita), ttl_seconds (da 60 secondi a 30 giorni).
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" }
Una casella creata dall'API è privata: solo la chiave che l'ha creata può leggerla.
Attendere un messaggio
Si blocca finché non arriva un messaggio, poi risponde subito. timeout in millisecondi (30 000 predefinito, 120 000 massimo), since per ricevere solo i messaggi successivi a un identificatore.
Risponde 204 senza corpo se il tempo scade senza messaggi: non è un errore, è la risposta normale a «non è arrivato niente».
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 e link sono estratti per te. Un codice viene segnalato solo se il messaggio lo annuncia davvero («codice», «verifica», «accesso»…) — un importo di fattura o un anno non vengono mai scambiati per un codice.
Elencare i messaggi
Accetta since e limit (50 predefinito, 200 massimo). Restituisce riepiloghi, senza il corpo dei messaggi.
Leggere un messaggio
Il messaggio completo: text, html, headers e l'elenco degli allegati.
Eliminare una casella
Cancella la casella e i suoi messaggi immediatamente. Risponde 204.
Errori
| 204 | Nessun contenuto — per wait, il tempo è scaduto senza messaggi |
| 400 | Parametro non valido |
| 401 | Chiave assente, sconosciuta o revocata |
| 403 | Quella casella appartiene a un'altra chiave |
| 404 | Casella o messaggio inesistente, o già scaduto |
| 429 | Troppe chiamate |
Limiti e durata
Le caselle del pool pubblico vivono un'ora; quelle create dall'API seguono il loro ttl_seconds, fino a trenta giorni. Trascorso il termine, la casella e i suoi messaggi vengono eliminati: non resta alcun archivio da recuperare.
I messaggi oltre dieci megabyte vengono rifiutati alla ricezione. Gli indirizzi di un dominio sconosciuto vengono rifiutati durante la sessione SMTP, senza generare un rimbalzo.
Queste caselle non possono inviare posta, ed è voluto: un messaggio inviato da un dominio usa e getta non arriverebbe da nessuna parte.