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 educational institution, a consumer mailbox, or a disposable address service. Every request returns exactly one of six classifications: Business, Government, Education, Generic, Disposable, or Unknown. The classification delivers organizational context even when nothing else is known about a person, which makes it a fast first-level signal for lead scoring, free trial qualification, CRM enrichment, sales routing, marketing segmentation, and fraud prevention. Domain type is a signal rather than a verdict. Many organizations combine the classification with other risk and intent signals rather than blocking disposable addresses outright. Two payment paths are supported: 1. API key (license). Pass an Interzoid API key as the `license` query parameter or as the `x-api-key` request header. Credits are drawn from the account balance and the remaining balance is returned in the `Credits` response field. 2. x402. Call the endpoint with no credentials and the service replies with 402 Payment Required and machine-readable payment instructions. Sign the payment authorization and retry the same request to receive the result. The challenge is returned before parameter validation, so a bare request with no parameters still produces a usable quote, at 0.01 USDC per call on Base. See the `x-x402` extension objects in this document and the manifest at `/.well-known/x402`. Only the 200 and 402 responses carry a body. All other status codes are returned as bare HTTP errors with no response payload. 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 # Non-standard extension. Not registered with the OpenAPI Initiative. # Declares that this API speaks x402 and where its manifest lives. Live pricing # is authoritative in the 402 challenge and the manifest, not here. 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. Calling this operation with no credentials returns 402 Payment Required with x402 payment instructions rather than 401 Unauthorized. An invalid or expired API key returns 401 Unauthorized. # Non-standard extension. Mirrors the accepts array returned in the live # 402 Payment Required challenge so that agents and indexers can price the # call without sending a request first. Keep these values in sync with the # values the handler actually emits. x-x402: x402Version: 2 resource: url: https://api.interzoid.com/getemaildomaintype description: &resourceDescription >- 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: *resourceDescription mimeType: application/json description: *resourceDescription 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 instead. May also be supplied as the `x-api-key` header. 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 classification. 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 response also carries the settlement receipt header. 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 is returned. Business: the person is associated with an identifiable commercial organization. Government: government or public-sector affiliation. Education: student, faculty, researcher, or academic administrator. Generic: consumer or free email provider with limited organizational context. Disposable: temporary address, a potential signal of low intent, trial abuse, or fraud. Unknown: the domain could not be confidently classified. 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 API key calls. Calls paid through x402 draw no account credits and return a value of 0. examples: - '5848' - '0' additionalProperties: false PaymentRequiredResponse: type: object title: PaymentRequiredResponse description: | The x402 version 2 challenge body. Lists the payment options the caller may satisfy in order to retry the request successfully. Live pricing is carried in the challenge itself. 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 discovery metadata that facilitator catalogs index, describing the request shape and an example response. 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 decimals, so 10000 is 0.01 USD Coin. resource: # Canonical x402 v2 carries resource once, on the parent PaymentRequired # object. This server also repeats it inside each accepts entry, which is # where v1 clients and the Bazaar v1 extraction path look for it. Documented # here because it is emitted, but not required, so a future handler that # drops the duplication stays conformant to this schema. $ref: '#/components/schemas/X402Resource' description: type: string description: | Human-readable description of the resource. Duplicated from the parent object for v1 compatibility. Optional. mimeType: type: string description: | Media type of the resource returned after payment. Duplicated from the parent object for v1 compatibility. Optional. 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 the JSON challenge body, which carries the same information. Clients sign one of the listed requirements and retry the request with a PAYMENT-SIGNATURE header. required: false schema: type: string PAYMENT-RESPONSE: description: | Base64-encoded settlement receipt returned on a successful paid call. required: false schema: type: string responses: BadRequest: description: | Bad request. One or more parameters are missing or improperly formed. Check the email value and see the API documentation. No response body is returned. Unauthorized: description: | Unauthorized. The API key supplied is invalid, expired, or out of credits. No response body is returned. PaymentRequired: description: | Payment required. The request arrived without credentials, so the service replied with x402 payment instructions. Sign one of the listed payment requirements and retry the same request with a PAYMENT-SIGNATURE header to receive the result. This challenge is issued ahead of parameter validation, so it is returned even when the request carries no parameters. That lets discovery tools and agents obtain a quote without a valid email value. 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: *resourceDescription mimeType: application/json accepts: - scheme: exact network: eip155:8453 amount: '10000' resource: url: https://api.interzoid.com/getemaildomaintype description: *resourceDescription mimeType: application/json description: *resourceDescription 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 permitted for this account. No response body is returned. NotFound: description: | Not found. Check the spelling of the API name in the request path. No response body is returned. MethodNotAllowed: description: | Method not allowed. This operation must be called with HTTP GET. No response body is returned. TooManyRequests: description: | Too many requests. The caller has exceeded the allowed request rate. Slow down and retry. No response body is returned. ServerError: description: | Server error. The request could not be completed. Try again later. No response body is returned.