Downloads · 30 days
0
inboxkit-alh/inboxkit
inboxkit is a machine learning model from inboxkit-alh. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Bulk disposable inboxes for testing your own signup, verification, and onboarding flows.
Downloads · 30 days
0
Access
Public
Updated Sep 18, 2026
Repo size
—
Likes
0
Public
Click a slice to open those files.
.py23.4 KB · 69%
From the Hugging Face model README
Bulk disposable inboxes for testing your own signup, verification, and onboarding flows.
Five backends, same API. Switch with INBOXKIT_PROVIDER.
Free, nothing to sign up for:
Yours, or paid:
[email protected]) or plus-addressed ([email protected]).
Mail lands in a mailbox you already own. The durable option, since nothing can disappear
out from under you.MAILSLURP_API_KEY.The three free providers create a live account or session per address, so a bulk run is
paced to stay inside their rate limits: expect roughly two or three inboxes a second rather
than the instant return you get from local. Their inboxes also live in the running
process, so a restart loses the handles (the local provider is pure string work and has
no such limit).
pip install -r requirements.txt
export INBOXKIT_PROVIDER=local
export INBOXKIT_DOMAIN=yourdomain.com # a domain you actually control
export INBOXKIT_MODE=catchall # or: plus, with INBOXKIT_BASE=you
uvicorn app.main:app --reload
Open http://127.0.0.1:8000 for the UI, or http://127.0.0.1:8000/docs for the API.
For free readable inboxes with no domain and no key:
export INBOXKIT_PROVIDER=mailtm # or: mailgw, guerrilla
For MailSlurp:
export INBOXKIT_PROVIDER=mailslurp
export MAILSLURP_API_KEY=sk_...
| Method | Path | Does |
|---|---|---|
| POST | /inboxes/bulk | {"count": 50, "tag": "checkout"} -> 50 addresses |
| GET | /inboxes | list everything created |
| GET | /inboxes.csv | same, as CSV for your test fixtures |
| GET | /inboxes/{id}/messages | messages, each with a parsed code and links |
| GET | /inboxes/{id}/code?timeout=60 | poll until the verification code lands |
| DELETE | /inboxes/{id} / /inboxes | teardown one or all |
import httpx
kit = "http://127.0.0.1:8000"
box = httpx.post(f"{kit}/inboxes/bulk", json={"count": 1, "tag": "e2e"}).json()["inboxes"][0]
httpx.post("https://yourapp.test/signup", json={"email": box["address"]})
code = httpx.get(f"{kit}/inboxes/{box['id']}/code", params={"timeout": 60}).json()["code"]
httpx.post("https://yourapp.test/verify", json={"email": box["address"], "code": code})
httpx.delete(f"{kit}/inboxes/{box['id']}")
INBOXKIT_MAX_BULK (default 200) caps a single bulk call. INBOXKIT_MAILTM_PACE and
INBOXKIT_GUERRILLA_PACE (seconds between calls) tune the pacing on the free providers if
you start seeing 429s. This is built for exercising
services you own or have permission to test, not for creating accounts on someone else's.
pytest -q