API inboxsink

Skriptovatelné jednorázové schránky, abyste mohli testovat registrace bez závislosti na skutečné poště. Pět cest, jedna základna na https://inboxsink.com, JSON.

Cesta, která něco mění, je wait: blokuje, dokud zpráva nedorazí. Bez ní end-to-end test hádá pomocí sleep a začne být nestabilní, jakmile se odesílací fronta zpozdí.

Klíč API zdarma

Tisíc volání měsíčně, bez karty. Dost na to, abyste ho zapojili do své testovací sady a zjistili, jestli drží.

Potom, až vaše testy začnou být odmítány: vlastní doména se nikde nepublikuje, takže neskončí na žádné blokovací listině — 29 € měsíčně.

JavaScriptový klient

Balíček bez jakýchkoli závislostí, pro Node 18 a novější. Kód je na GitHubu.

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 vyhodí chybu místo vrácení null, když žádný kód nedorazí: test má spadnout nahlas, ne potichu vyplnit prázdné pole.

Ověření

Hlavička Authorization u každého volání. Klíče se vytvářejí v panelu a začínají na ibsk_.

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

Klíč v čitelné podobě se zobrazí jen při vytvoření. Poté zůstává viditelná jen jeho předpona — uchováváme pouze otisk.

Vytvořit schránku

POST /v1/inboxes

Všechny parametry jsou volitelné: domain (výchozí je náhodná doména z poolu), prefix (výchozí náhodný), ttl_seconds (od 60 sekund do 30 dnů).

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" }

Schránka vytvořená přes API je soukromá: přečíst ji může jen klíč, který ji vytvořil.

Čekat na zprávu

GET /v1/inboxes/:id/wait

Blokuje až do příchodu zprávy a pak odpoví okamžitě. timeout v milisekundách (výchozí 30 000, maximum 120 000), since pro získání jen zpráv po daném identifikátoru.

Odpoví 204 bez těla, pokud lhůta vyprší bez zprávy — to není chyba, to je normální odpověď na «nic nedorazilo».

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 a link jsou vytažené za vás. Kód se hlásí jen tehdy, když ho zpráva skutečně ohlašuje («kód», «ověření», «přihlášení»…) — částka na faktuře ani letopočet se s ním nikdy nezamění.

Vypsat zprávy

GET /v1/inboxes/:id/messages

Přijímá since a limit (výchozí 50, maximum 200). Vrací souhrny, bez těla zpráv.

Přečíst zprávu

GET /v1/messages/:id

Celá zpráva: text, html, headers a seznam příloh.

Smazat schránku

DELETE /v1/inboxes/:id

Okamžitě smaže schránku i její zprávy. Odpoví 204.

Chyby

204Bez obsahu — u wait vypršela lhůta bez zprávy
400Neplatný parametr
401Klíč chybí, je neznámý nebo odvolaný
403Tato schránka patří jinému klíči
404Schránka nebo zpráva neexistuje, nebo už vypršela
429Příliš mnoho volání

Limity a životnost

Schránky z veřejného poolu žijí hodinu; ty vytvořené přes API se řídí svým ttl_seconds, až třicet dnů. Po uplynutí se schránka i zprávy smažou — není žádný archiv, ze kterého by šlo něco vytáhnout.

Zprávy nad deset megabajtů se při příjmu odmítají. Adresy z neznámé domény se odmítají už během SMTP relace, bez vygenerování odrazu.

Tyto schránky nemohou odesílat poštu, a je to záměr: zpráva odeslaná z jednorázové domény by nikam nedorazila.