DEVELOPER QUICKSTART

One request.
A clearer answer.

Sign up, create a key in Settings, and send your first domain check.

01 · Create an account ↗02 · Generate an API key ↗03 · Try the playground ↗
POST /api/checkcURL
curl -X POST 'https://disban.io/api/check' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"input":"mailinator.com"}'

Integrating with an agent?

Follow the agent quickstart → · OpenAPI schema · llms.txt

Understand the signal.

Responses include email, normalized_email, domain, domain_age_in_days, mx, mx_records, and the classification evidence. Email values are echoed only to the requester; history remains domain-only. Local-part case is preserved.

Uncollected signals return null: domain_authority, mx_providers, spf, dmarc, free_subdomain, role_account, spam, and did_you_mean. MX priorities also remain null until collected. A null disposable flag means unresolved, never clean. Public-domain and relay flags are true on positive matches and otherwise null. MX describes explicit mail exchangers; absent MX can still permit implicit SMTP routing.

Act on category, then inspect reason and matched_on. Unknown means insufficient evidence, not verified safety. Alias services remain a distinct category even if the upstream checker's legacy disposable flag is true.

Disposable

Temporary or throwaway email infrastructure.

Free

A recognized consumer email provider.

Alias

A forwarding or privacy relay service.

Testing

Mail infrastructure for development and testing.

Parked

Infrastructure associated with domain parking.

Unknown

Not enough evidence to assign another category.

Read mail_routing separately: invalid means no current public mail route; unknown means pending or unavailable verification. A routable domain does not prove a mailbox exists. Cold or expired routing checks wait up to 2.5 seconds. If verification cannot finish, the API returns HTTP 503 with code verification_unavailable and a Retry-After delay based on the cached DNS retry deadline (five seconds when no deadline is available). It does not return a successful pending verdict, charge a credit, or save a successful history entry. Batch failures include status 503 per entry. Retry with backoff and a bounded deadline. Previously inactive domains require review before an old disposable verdict can apply again.

A few domains? Check them together.

Send {"inputs":["gmail.com","mailinator.com"]} to POST /api/batch with the same Bearer header. Accepts up to 50 entries and returns results in input order. A failed lookup has an error field; it is not a clean verdict.

Handle errors deliberately.

400 Invalid input. Correct the domain or request body.

401 Missing, invalid, or revoked API key.

415 Send JSON with the application/json content type.

502 Upstream lookup failed. Retry transient errors.

Track usage.

GET /api/subscription with your Bearer key returns your plan, remaining monthly checks, and UTC reset time. A 429 response includes Retry-After. Each successful domain check costs one credit, including cache hits and batch entries. Failed checks are refunded. Changing plans preserves usage.

Keep your key private.

Call the API from your server. Store keys in environment variables, never in browser code. Each key belongs to one account. Revoke unused keys in Settings; revocation takes effect on the next request.

This is a local preview. The disban.io website and api.disban.io endpoint have not been deployed. Use the local URL above while testing.