CheckDisposable Emailcheckdisposable.email
Guides · 24 stacks covered

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

Python

Use a Pydantic validator or a FastAPI dependency. The async dependency runs concurrently with other dependencies, so latency stays minimal.

Read the guide →

Flask

Python

Add a decorator that runs before your signup view. Works with Flask-Login, Flask-Security, or vanilla Flask.

Read the guide →

Ruby on Rails

Ruby

Add 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

PHP

Add 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 / Kotlin

Implement 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)

Go

Add 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)

Elixir

Add 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.