API documentation

Verify email addresses with a single HTTPS request. Base URL: https://verify.aiskilled.co

Authentication

Create an API key in your dashboard and send it as a Bearer token. Keep it secret — it authorizes verifications against your credit balance.

Authorization: Bearer YOUR_API_KEY

Verify a single address

POST /v1/verify — costs 1 credit.

curl -X POST https://verify.aiskilled.co/v1/verify \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"someone@company.com"}'

Response:

{
  "status": "success",
  "email": "someone@company.com",
  "domain": "company.com",
  "result": 0,
  "result_name": "valid",
  "sub_status": "mailbox_exists",
  "mx_provider": "google_workspace",
  "flags": [],
  "reason": "Mailbox exists and accepts mail.",
  "cached": false
}

Verify many at once

POST /v1/verify/batch — costs 1 credit per address (max 100 per call).

curl -X POST https://verify.aiskilled.co/v1/verify/batch \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails":["a@company.com","b@company.com"]}'

Check your account

GET /v1/account — your remaining credits and usage (free).

curl https://verify.aiskilled.co/v1/account -H "Authorization: Bearer YOUR_API_KEY"

From JavaScript

const res = await fetch("https://verify.aiskilled.co/v1/verify", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ email: "someone@company.com" }),
});
const data = await res.json();
console.log(data.result_name, data.sub_status);

Understanding the result

resultresult_nameMeaningAction
0validMailbox confirmed deliverableSend
1invalidConfirmed undeliverableDrop
2disposableThrowaway address providerReject
3catchallAccept-all domain — mailbox unconfirmable (risky)Keep but flag
4unknownTemporarily undeterminedRetry later

Each response also carries sub_status (e.g. mailbox_exists, accepts_all, mailbox_not_found, antispam_gateway, greylisted), mx_provider, and a human reason.

Status codes

CodeMeaning
200Success
400Bad request (missing/invalid email)
401Missing or invalid API key
402Out of credits — buy more
429Rate limit exceeded — slow down and retry

Ready? Create an account and get 100 free credits, or open your dashboard.

Skilled Email Verifier · self-hosted email verification