First verify in under 5 minutes.
curl -s https://api.skink.dev/v1/verify \
-H "Authorization: Bearer $SKINK_API_KEY" \
-d '{"email":"jane@acme.com"}'
{ "status": "deliverable", "confidence": 0.91 }Get a key.
Sign up at app.skink.dev — 100 free, never-expiring credits, no card. Create an API key in the dashboard — shown once.
Server-side only — a leaked key spends your credits. If exposed, revoke it from the dashboard.
Verify.
One POST, two headers, a JSON body — pick your language, that’s the whole integration.
curl -s https://api.skink.dev/v1/verify \
-H "Authorization: Bearer $SKINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"jane.doe@acme.com"}'Read the result.
{
"email": "jane.doe@acme.com",
"status": "deliverable",
"sub_status": "catchall_resolved",
"confidence": 0.91,
"accept_all": true,
"mx_provider": "microsoft365",
"signals": {
"is_catchall": true,
"catchall_resolution": "verified",
"reasons": [
"SMTP accepted (250)",
"Catch-all domain — SMTP alone cannot determine individual mailbox existence",
"Additional verification checks resolved mailbox existence"
]
},
"recommendation": "send"
}signals.reasons explains why — including how a catch-all verdict was reached.
Status reference.
| status | meaning |
|---|---|
| deliverable | Safe to send. |
| undeliverable | Hard bounce — don't send. |
| risky | Role address, full mailbox, or an unresolved catch-all. |
| unknown | Couldn't determine a verdict (timeout, greylist, DNS failure). |
sub_status values (stable keys for parsing — signals.reasons is the human-readable version):
catchall_resolvedcatchall_uncertainprobe_inconclusiveno_mxinvalid_mailboxmailbox_fulldisposablegreylist_timeoutdns_failuresmtp_throttledsyntax_errorSDKs.
Plain HTTPS + JSON works everywhere and needs nothing installed — every example above uses it directly. Official SDKs exist for Node.js, Python, and Ruby if you’d rather call a typed client than build the request yourself. Both call the same API underneath.
npm install @skink/sdk
Have a question this page didn’t answer?
See the FAQ