Normalize and dedupe email addresses
Exactemail_canonicalizeDeterministic and authoritative — the canonical answer for this input.
Return the canonical (dedup-matching) form of an email: lowercase, plus-tag stripped (or dash-tag for Yahoo), dots removed from the Gmail/Googlemail local part, and googlemail.com unified to gmail.com (Google documents them as the same mailbox). Different from email_validate (RFC syntax) and email_disposable_detect (blocklist) — this answers 'what's the canonical form so two addresses can be compared for sameness?'. Aggressive by default (strips plus-addressing on unknown domains too); pass provider_rules_only=True for conservative mode where unknown domains get lowercased only. Processing multiple inputs? Use `email_canonicalize_batch` to do up to 1000 in one call.
Parameters
emailstringrequiredEmail address to canonicalize.
provider_rules_onlybooleanoptionalWhen True, only apply canonicalization rules to known providers (Gmail, Outlook, iCloud, Yahoo, FastMail, ProtonMail). Unknown domains get lowercased only — conservative mode to avoid false-positive dedup merges across distinct mailboxes.
Call it
curl -X POST https://api.snipget.ai/v1/email/canonicalize \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'The Batch tab sends up to 1000 inputs in one call via /v1/email/canonicalize/batch.
Example response
{
"input": "[email protected]",
"is_valid": true,
"original": "[email protected]",
"canonical": "[email protected]",
"was_changed": true,
"provider": "gmail",
"rules_applied": [
"lowercase",
"strip_plus_addressing",
"strip_dots"
],
"local_part_canonical": "johndoe",
"domain_canonical": "gmail.com"
}FAQ
What problem does this solve?
It catches duplicate signups from the same person. [email protected], [email protected], [email protected], and even [email protected] all reach the same inbox, but they look different in your data. This returns one shared canonical form for all of them so you can match and dedupe accounts that are really the same mailbox.
How does it know the provider-specific tricks?
It uses a built-in table of how the major providers actually treat addresses: Gmail and Googlemail ignore dots and the +tag (and googlemail.com unifies to gmail.com, since Google documents them as the same mailbox), Yahoo uses a dash instead of a plus for tags, and Outlook, iCloud, FastMail, and ProtonMail use +tags. It returns which provider matched and exactly which rules it applied, so nothing is a black box.
Is the result safe to rely on as a unique key?
The transformation is deterministic and repeatable (exact): the same address always yields the same canonical form. By default it is aggressive and also strips +tags on unknown domains, which is standard but could rarely merge two genuinely different mailboxes. If a wrong merge would be costly, set provider_rules_only to true so it only applies rules to the providers it knows for sure.
What does it not do?
It does not tell you whether the address is valid or whether the mailbox exists, and it does not detect throwaway addresses. It first checks the format and then produces a dedup key. For format-checking use the email validator, and for spotting disposable addresses use the disposable detector.
What happens if the input isn't a real email?
If the address fails the format check, you get is_valid false, confidence 0, and a why_invalid reason instead of an error. Only well-formed addresses get a canonical form, and the was_changed flag tells you whether canonicalizing actually altered the original.