Block disposable email in your stack.
Each guide has a single drop-in code snippet, plus notes on the gotchas specific to that stack (where to put the API key, fail-open vs fail-closed, how the error reaches the UI).
FastAPI
PythonUse a Pydantic validator or a FastAPI dependency. The async dependency runs concurrently with other dependencies, so latency stays minimal.
Read the guide →Flask
PythonAdd a decorator that runs before your signup view. Works with Flask-Login, Flask-Security, or vanilla Flask.
Read the guide →Ruby on Rails
RubyAdd an ActiveRecord validation on User. The validation runs before save, so disposable emails never become rows in your `users` table. Works with Devise or vanilla Rails auth.
Read the guide →Laravel
PHPAdd a custom rule class. The rule runs as part of Laravel's validator, so disposable emails surface as standard form errors with no extra plumbing.
Read the guide →Spring Boot
Java / KotlinImplement a custom Bean Validation constraint. It runs as part of `@Valid` request-body validation — disposable emails return a 400 with a standard error response.
Read the guide →ASP.NET Core
C#Use a custom `ValidationAttribute` (sync) or call `IDisposableEmailChecker` from your controller action (async). The async approach is recommended.
Read the guide →Go (Gin)
GoAdd a small package-level function and call it in your signup handler. Works the same way in Echo, Chi, Fiber, or net/http — only the framework wiring changes.
Read the guide →Phoenix (Elixir)
ElixirAdd a custom Ecto changeset validation. The check runs as part of `cast → validate` chain so disposable emails surface as standard `changeset.errors`.
Read the guide →Don’t see your stack? Point your AI at us.
Paste this single prompt into Claude Code, Cursor, Codex, Aider, or Copilot:
Read https://checkdisposable.email/integrate.md and follow the instructions on that page.
The integrate.md page is written in the second person for an LLM. It tells the AI what to ask you for, what code to add, and what rules to follow.