Build with Mailgun Validate API for email verification and list hygiene. Use when validating email addresses, checking email deliverability, running bulk validation jobs, previewing list health, or cleaning an email list.
From sinch-claude-pluginnpx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Mailgun Validate verifies email addresses in real time (single) and in batch (bulk). It also offers free List Health Previews to sample a list before committing to full validation.
See sinch-authentication for full auth setup. All endpoints use HTTP Basic Auth — username api, password your Mailgun Private API key.
Base URLs: api.mailgun.net (US) · api.eu.mailgun.net (EU). Always match the region of your Mailgun account.
Canonical example — validate one address:
curl --user 'api:YOUR_API_KEY' \
"https://api.mailgun.net/v4/address/validate?address=recipient@example.com"
Response:
{
"address": "recipient@example.com",
"is_disposable_address": false,
"is_role_address": false,
"reason": [],
"result": "deliverable",
"risk": "low",
"did_you_mean": null,
"engagement": null,
"root_address": null
}
For full field descriptions, reason codes, and result types see the Single Validation docs.
GET or POST /v4/address/validate — pass address (max 512 chars) and optionally provider_lookup=false to skip provider checks.
Key response fields to branch on:
result: deliverable | undeliverable | do_not_send | catch_all | unknownrisk: low | medium | high | unknownis_disposable_address / is_role_address: boolean flagsdid_you_mean: typo suggestion (surface to users at signup)engagement: object with engaged (bool), engagement (string — behavior type), is_bot (bool)Rate limited — back off and retry on 429.
Free, non-destructive sample assessment. Returns deliverability/risk ratios as percentages.
POST /v4/address/validate/preview/{list_id} — create (upload CSV via multipart form-data)GET /v4/address/validate/preview/{list_id} — check statusPUT /v4/address/validate/preview/{list_id} — promote to full bulk validationDELETE /v4/address/validate/preview/{list_id} — delete a previewGET /v4/address/validate/preview — list all preview jobspreview_processing → preview_complete"preview" key; created_at is a unix timestampFull reference: List Health Preview
Full validation of an uploaded CSV/gzip file (max 25 MB).
POST /v4/address/validate/bulk/{list_id} — create jobGET /v4/address/validate/bulk/{list_id} — check status / downloadDELETE /v4/address/validate/bulk/{list_id} — cancel or deleteGET /v4/address/validate/bulk — list all jobs (accepts limit, default 500; returns paging links)created → processing → completed → uploading → uploaded (or failed)uploaded via download_url.csv / download_url.jsoncreated_at is an RFC 2822 date string (e.g., "Tue, 26 Feb 2019 21:30:03 GMT")Full reference: Bulk Validation
result and risk. Block or warn on do_not_send, high risk, or is_disposable_address.PUT.email or email_address column@ in list nameuploaded → download resultsresult and risk are independent axes:
deliverable but high risk (e.g., spam trap)catch_all means the domain accepts everything — treat as medium riskinfo@, support@) are fine for transactional email but risky for marketingEngagement data (contract customers get High Engager, Engager, Bot, Complainer, Disengaged, No data; self-service get boolean engaging/is_bot): Engagement docs
deliverable + high risk address should still be suppressed.catch_all means the mailbox may not exist. Treat as medium risk.did_you_mean — Surface typo suggestions to end users at signup time.