---
title: "POST /api/check"
method: POST
path: "/api/check"
---

# POST /api/check

`POST /api/check`

## Request

- Base URL: `https://disban.io`
- URL: `https://disban.io/api/check`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `disban_session`

## Query parameters

- `realtime` boolean

## Request body

- object
  - `input` string, required

## Response `200`

Classification; consumes one credit

- Verdict
  - `domain` string, required
  - `category` 'disposable' | 'free' | 'alias' | 'testing' | 'parked' | 'unknown', required
  - `reason` string, required
  - `status` 200
  - `email` string, nullable: Request-only echo; never persisted in history.
  - `normalized_email` string, nullable: Domain normalized; local-part case preserved. Null for domain-only requests and history.
  - `domain_authority` number, nullable
  - `domain_age_in_days` integer, nullable
  - `mx` boolean, nullable: Fresh explicit non-null MX present. False for Null MX or confirmed absence; null when unverified. False does not exclude implicit SMTP routing.
  - `mx_records` object[], nullable
    - `hostname` string, required
    - `priority` integer, nullable, required
  - `mx_providers` object[], nullable
    - `slug` string, required
    - `type` string, required
    - `grade` string, nullable, required
  - `spf` string, nullable
  - `dmarc` string, nullable
  - `public_domain` boolean, nullable
  - `relay_domain` boolean, nullable
  - `free_subdomain` boolean, nullable
  - `alias` boolean, nullable
  - `role_account` boolean, nullable
  - `spam` boolean, nullable
  - `did_you_mean` string, nullable
  - `disposable` boolean, nullable: Null for unresolved classification; never treat null as clean.
  - `cached` boolean
  - `historical_disposable` boolean: Records existing list or reviewed seed history, independently of current classification. Can be true for currently confirmed disposable services; it is not a low-confidence flag and is not proof of current operation.
  - `mail_routing` object
    - `status` 'routable' | 'invalid' | 'unknown', required
    - `reason` string, required
    - `observed_at` string, date-time
    - `expires_at` string, date-time
    - `review_required` boolean
  - `matched_on` string
  - `latency_ms` number

## Other responses

- `400`: Request could not be completed
- `401`: Request could not be completed
- `403`: Request could not be completed
- `409`: Request could not be completed
- `413`: Request could not be completed
- `415`: Request could not be completed
- `429`: Rate or quota limit; honor Retry-After
- `502`: Request could not be completed
- `503`: Request could not be completed

---

[API](https://skmtc.dev/disban/apis/disban-api.md) · [All operations](https://skmtc.dev/disban/apis/disban-api/llms.txt) · [OpenAPI document](https://skmtc.dev/disban/apis/disban-api/revisions/1becfdd524a2?raw)
