{ "openapi": "3.1.0", "info": { "title": "Interzoid Get Email Domain Type API", "summary": "Classifies the domain behind an email address into one of six organizational categories.", "description": "Determines whether an email address belongs to a business, a government agency, an\neducational institution, a consumer mailbox, or a disposable address service. Every\nrequest returns exactly one of six classifications: Business, Government, Education,\nGeneric, Disposable, or Unknown.\n\nThe classification delivers organizational context even when nothing else is known\nabout a person, which makes it a fast first-level signal for lead scoring, free trial\nqualification, CRM enrichment, sales routing, marketing segmentation, and fraud\nprevention.\n\nDomain type is a signal rather than a verdict. Many organizations combine the\nclassification with other risk and intent signals rather than blocking disposable\naddresses outright.\n\nTwo payment paths are supported:\n\n1. API key (license). Pass an Interzoid API key as the `license` query parameter or\n as the `x-api-key` request header. Credits are drawn from the account balance and\n the remaining balance is returned in the `Credits` response field.\n2. x402. Call the endpoint with no credentials and the service replies with\n 402 Payment Required and machine-readable payment instructions. Sign the payment\n authorization and retry the same request to receive the result. The challenge is\n returned before parameter validation, so a bare request with no parameters still\n produces a usable quote, at 0.01 USDC per call on Base. See the `x-x402`\n extension objects in this document and the manifest at `/.well-known/x402`.\n\nOnly the 200 and 402 responses carry a body. All other status codes are returned as\nbare HTTP errors with no response payload.\n", "version": "1.0.0", "termsOfService": "https://www.interzoid.com/api-terms-use", "contact": { "name": "Interzoid Support", "url": "https://www.interzoid.com/contact", "email": "support@interzoid.com" }, "license": { "name": "Interzoid API Terms of Use", "url": "https://www.interzoid.com/api-terms-use" }, "x-x402": { "version": 2, "protocol": "https://x402.org", "discovery": "https://api.interzoid.com/.well-known/x402", "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402", "networks": [ "eip155:8453" ], "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0xdCEca23FF8A7145e1b5B35427C9886CF21A67566", "price": "0.01 USDC per call" } }, "externalDocs": { "description": "Interzoid API documentation", "url": "https://docs.interzoid.com" }, "servers": [ { "url": "https://api.interzoid.com", "description": "Production" } ], "tags": [ { "name": "Email Intelligence", "description": "Email address classification and organizational context." } ], "security": [ { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] }, {} ], "paths": { "/getemaildomaintype": { "get": { "tags": [ "Email Intelligence" ], "operationId": "getEmailDomainType", "summary": "Classify the domain of an email address", "description": "Returns the domain type classification for the supplied email address.\n\nCalling this operation with no credentials returns 402 Payment Required with\nx402 payment instructions rather than 401 Unauthorized. An invalid or expired\nAPI key returns 401 Unauthorized.\n", "x-x402": { "x402Version": 2, "resource": { "url": "https://api.interzoid.com/getemaildomaintype", "description": "Classify the domain behind an email address as Business, Government, Education, Generic, Disposable, or Unknown. Provides instant organizational context for lead scoring, trial qualification, CRM enrichment, sales routing, and fraud prevention.", "mimeType": "application/json" }, "accepts": [ { "scheme": "exact", "network": "eip155:8453", "amount": "10000", "resource": { "url": "https://api.interzoid.com/getemaildomaintype", "description": "Classify the domain behind an email address as Business, Government, Education, Generic, Disposable, or Unknown. Provides instant organizational context for lead scoring, trial qualification, CRM enrichment, sales routing, and fraud prevention.", "mimeType": "application/json" }, "description": "Classify the domain behind an email address as Business, Government, Education, Generic, Disposable, or Unknown. Provides instant organizational context for lead scoring, trial qualification, CRM enrichment, sales routing, and fraud prevention.", "mimeType": "application/json", "payTo": "0xdCEca23FF8A7145e1b5B35427C9886CF21A67566", "maxTimeoutSeconds": 60, "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "extra": { "name": "USD Coin", "version": "2" } } ] }, "parameters": [ { "name": "license", "in": "query", "required": false, "description": "Interzoid API key. Optional. Omit it to receive an x402 payment challenge\ninstead. May also be supplied as the `x-api-key` header.\n", "schema": { "type": "string" }, "example": "fh5hs7*****" }, { "name": "email", "in": "query", "required": true, "description": "The email address to classify. Only the domain portion is used for the\nclassification.\n", "schema": { "type": "string", "format": "email", "minLength": 3, "maxLength": 320 }, "examples": { "business": { "summary": "Corporate address", "value": "john.king@nvidia.com" }, "government": { "summary": "Public sector agency", "value": "john.smith@ca.gov" }, "education": { "summary": "Academic institution", "value": "jsmith@stanford.edu" }, "generic": { "summary": "Consumer mailbox", "value": "johnsmith72@gmail.com" }, "disposable": { "summary": "Temporary mailbox service", "value": "tonytiger@10minutemail.com" } } } ], "responses": { "200": { "description": "Success. The domain type was determined. On a call paid through x402, the\nresponse also carries the settlement receipt header.\n", "headers": { "PAYMENT-RESPONSE": { "$ref": "#/components/headers/PAYMENT-RESPONSE" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailDomainTypeResponse" }, "examples": { "business": { "summary": "Corporate address, route to sales enrichment", "value": { "DomainType": "Business", "Code": "Success", "Credits": "5848" } }, "disposable": { "summary": "Temporary mailbox, apply additional verification", "value": { "DomainType": "Disposable", "Code": "Success", "Credits": "5846" } }, "education": { "summary": "Academic institution, route to academic pricing", "value": { "DomainType": "Education", "Code": "Success", "Credits": "5845" } }, "government": { "summary": "Public sector agency, route to public-sector sales", "value": { "DomainType": "Government", "Code": "Success", "Credits": "5844" } }, "generic": { "summary": "Consumer mailbox, route to self-service flow", "value": { "DomainType": "Generic", "Code": "Success", "Credits": "5843" } }, "unknown": { "summary": "Unclassified domain, flag for manual review", "value": { "DomainType": "Unknown", "Code": "Success", "Credits": "5842" } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "402": { "$ref": "#/components/responses/PaymentRequired" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } } } } }, "components": { "securitySchemes": { "ApiKeyQuery": { "type": "apiKey", "in": "query", "name": "license", "description": "Interzoid API key supplied as a query parameter." }, "ApiKeyHeader": { "type": "apiKey", "in": "header", "name": "x-api-key", "description": "Interzoid API key supplied as a request header." } }, "schemas": { "EmailDomainTypeResponse": { "type": "object", "title": "EmailDomainTypeResponse", "description": "The domain classification plus call status and remaining credits.", "required": [ "DomainType", "Code" ], "properties": { "DomainType": { "type": "string", "description": "The classification of the email address domain. Exactly one of six values\nis returned.\n\nBusiness: the person is associated with an identifiable commercial\norganization.\n\nGovernment: government or public-sector affiliation.\n\nEducation: student, faculty, researcher, or academic administrator.\n\nGeneric: consumer or free email provider with limited organizational\ncontext.\n\nDisposable: temporary address, a potential signal of low intent, trial\nabuse, or fraud.\n\nUnknown: the domain could not be confidently classified.\n", "enum": [ "Business", "Government", "Education", "Generic", "Disposable", "Unknown" ], "examples": [ "Business" ] }, "Code": { "type": "string", "description": "Status of the API call.", "examples": [ "Success" ] }, "Credits": { "type": "string", "description": "Remaining API credits on the account after this call. Meaningful only for\nAPI key calls. Calls paid through x402 draw no account credits and return\na value of 0.\n", "examples": [ "5848", "0" ] } }, "additionalProperties": false }, "PaymentRequiredResponse": { "type": "object", "title": "PaymentRequiredResponse", "description": "The x402 version 2 challenge body. Lists the payment options the caller may\nsatisfy in order to retry the request successfully. Live pricing is carried in\nthe challenge itself.\n", "required": [ "x402Version", "accepts" ], "properties": { "x402Version": { "type": "integer", "description": "The x402 protocol version this server speaks.", "examples": [ 2 ] }, "resource": { "$ref": "#/components/schemas/X402Resource" }, "accepts": { "type": "array", "description": "One or more acceptable payment requirements.", "items": { "$ref": "#/components/schemas/PaymentRequirements" } }, "extensions": { "type": "object", "description": "Protocol extensions declared by this resource. The `bazaar` key carries\ndiscovery metadata that facilitator catalogs index, describing the request\nshape and an example response.\n", "additionalProperties": true }, "error": { "type": "string", "description": "Why payment is required.", "examples": [ "Payment Required" ] } } }, "X402Resource": { "type": "object", "title": "X402Resource", "description": "Identifies and describes the resource being paid for.", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "description": "Canonical URL of the resource.", "examples": [ "https://api.interzoid.com/getemaildomaintype" ] }, "description": { "type": "string", "description": "Human-readable description of what the resource returns." }, "mimeType": { "type": "string", "description": "Media type of the resource returned after payment.", "examples": [ "application/json" ] } } }, "PaymentRequirements": { "type": "object", "title": "PaymentRequirements", "description": "A single acceptable way to pay for this resource.", "required": [ "scheme", "network", "amount", "payTo", "asset" ], "properties": { "scheme": { "type": "string", "description": "Payment scheme.", "examples": [ "exact" ] }, "network": { "type": "string", "description": "CAIP-2 network identifier.", "examples": [ "eip155:8453" ] }, "amount": { "type": "string", "description": "Amount required, in the smallest unit of the asset. USDC carries six\ndecimals, so 10000 is 0.01 USD Coin.\n" }, "resource": { "$ref": "#/components/schemas/X402Resource" }, "description": { "type": "string", "description": "Human-readable description of the resource. Duplicated from the parent\nobject for v1 compatibility. Optional.\n" }, "mimeType": { "type": "string", "description": "Media type of the resource returned after payment. Duplicated from the\nparent object for v1 compatibility. Optional.\n", "examples": [ "application/json" ] }, "payTo": { "type": "string", "description": "Address that receives the payment." }, "maxTimeoutSeconds": { "type": "integer", "description": "How long the server will wait for settlement.", "examples": [ 60 ] }, "asset": { "type": "string", "description": "Contract address of the asset used for payment.", "examples": [ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" ] }, "extra": { "type": "object", "description": "Scheme-specific and asset-specific detail.", "additionalProperties": true } } } }, "headers": { "PAYMENT-REQUIRED": { "description": "Base64-encoded JSON payment requirements, as defined by x402 v2. Sent alongside\nthe JSON challenge body, which carries the same information. Clients sign one\nof the listed requirements and retry the request with a PAYMENT-SIGNATURE\nheader.\n", "required": false, "schema": { "type": "string" } }, "PAYMENT-RESPONSE": { "description": "Base64-encoded settlement receipt returned on a successful paid call.\n", "required": false, "schema": { "type": "string" } } }, "responses": { "BadRequest": { "description": "Bad request. One or more parameters are missing or improperly formed. Check the\nemail value and see the API documentation. No response body is returned.\n" }, "Unauthorized": { "description": "Unauthorized. The API key supplied is invalid, expired, or out of credits.\nNo response body is returned.\n" }, "PaymentRequired": { "description": "Payment required. The request arrived without credentials, so the service\nreplied with x402 payment instructions. Sign one of the listed payment\nrequirements and retry the same request with a PAYMENT-SIGNATURE header to\nreceive the result.\n\nThis challenge is issued ahead of parameter validation, so it is returned even\nwhen the request carries no parameters. That lets discovery tools and agents\nobtain a quote without a valid email value.\n", "headers": { "PAYMENT-REQUIRED": { "$ref": "#/components/headers/PAYMENT-REQUIRED" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentRequiredResponse" }, "example": { "x402Version": 2, "resource": { "url": "https://api.interzoid.com/getemaildomaintype", "description": "Classify the domain behind an email address as Business, Government, Education, Generic, Disposable, or Unknown. Provides instant organizational context for lead scoring, trial qualification, CRM enrichment, sales routing, and fraud prevention.", "mimeType": "application/json" }, "accepts": [ { "scheme": "exact", "network": "eip155:8453", "amount": "10000", "resource": { "url": "https://api.interzoid.com/getemaildomaintype", "description": "Classify the domain behind an email address as Business, Government, Education, Generic, Disposable, or Unknown. Provides instant organizational context for lead scoring, trial qualification, CRM enrichment, sales routing, and fraud prevention.", "mimeType": "application/json" }, "description": "Classify the domain behind an email address as Business, Government, Education, Generic, Disposable, or Unknown. Provides instant organizational context for lead scoring, trial qualification, CRM enrichment, sales routing, and fraud prevention.", "mimeType": "application/json", "payTo": "0xdCEca23FF8A7145e1b5B35427C9886CF21A67566", "maxTimeoutSeconds": 60, "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "extra": { "name": "USD Coin", "version": "2" } } ], "extensions": { "bazaar": { "info": { "input": { "type": "http", "method": "GET", "queryParams": { "email": "john.king@nvidia.com" } }, "output": { "type": "json", "example": { "Code": "Success", "Credits": "0", "DomainType": "Business" } } }, "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "required": [ "input" ], "properties": { "input": { "type": "object", "additionalProperties": false, "required": [ "type", "method" ], "properties": { "type": { "type": "string", "const": "http" }, "method": { "type": "string", "enum": [ "GET" ] }, "queryParams": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string", "description": "Email address whose domain should be classified" } } } } }, "output": { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string" }, "example": { "type": "object" } } } } } } }, "error": "Payment Required" } } } }, "Forbidden": { "description": "Forbidden. The request is understood but access to this resource is not\npermitted for this account. No response body is returned.\n" }, "NotFound": { "description": "Not found. Check the spelling of the API name in the request path.\nNo response body is returned.\n" }, "MethodNotAllowed": { "description": "Method not allowed. This operation must be called with HTTP GET.\nNo response body is returned.\n" }, "TooManyRequests": { "description": "Too many requests. The caller has exceeded the allowed request rate. Slow down\nand retry. No response body is returned.\n" }, "ServerError": { "description": "Server error. The request could not be completed. Try again later.\nNo response body is returned.\n" } } } }