Telnyx Email Validations API
Validate email addresses synchronously or in asynchronous batches.
Validate email addresses synchronously or in asynchronous batches.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/telnyx:telnyx-email-validations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 2.0.0
x-latency-category: responsive
x-endpoint-cost: light
title: Telnyx Email Validations API
description: SIP trunking, SMS, MMS, Call Control and Telephony Data Services.
contact:
email: support@telnyx.com
servers:
- url: https://api.telnyx.com/v2
description: Version 2.0.0 of the Telnyx API
security:
- bearerAuth: []
tags:
- name: Email Validations
description: Validate email addresses synchronously or in asynchronous batches.
paths:
/email_validations:
post:
tags:
- Email Validations
operationId: CreateEmailValidation
summary: Validate a single email address
description: Validates a single email address and returns deliverability checks.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmailValidationRequest'
example:
email: user@example.com
responses:
'200':
description: Email validation result.
content:
application/json:
schema:
$ref: '#/components/schemas/EmailValidationResponse'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
'400':
description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10015'
title: Bad Request
detail: email is required
'401':
$ref: '#/components/responses/email_UnauthorizedResponse'
'409':
$ref: '#/components/responses/IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/PayloadTooLargeResponse'
'422':
description: The Idempotency-Key was already used for a different request (10027).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
'503':
$ref: '#/components/responses/email_ServiceUnavailableResponse'
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/email_validations/batch:
post:
tags:
- Email Validations
operationId: CreateEmailValidationBatch
summary: Create a batch email validation job
description: Creates an asynchronous batch validation job for up to 1,000 email addresses.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmailValidationBatchRequest'
example:
emails:
- user@example.com
- admin@example.org
webhook_url: https://example.com/webhooks/email-validation
responses:
'202':
description: Batch validation job accepted. Poll GET /email_validations/batch/{id} with the returned batch id to retrieve results.
content:
application/json:
schema:
$ref: '#/components/schemas/EmailValidationBatchResponse'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
'400':
description: Missing or invalid email list, or batch size exceeded. Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
examples:
invalidEmails:
value:
errors:
- code: '10015'
title: Bad Request
detail: emails is required and must be an array
'401':
$ref: '#/components/responses/email_UnauthorizedResponse'
'409':
$ref: '#/components/responses/IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/PayloadTooLargeResponse'
'422':
description: Changeset validation error (e.g. invalid webhook_url). Reusing an Idempotency-Key with a different request also returns 422 (10027).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10015'
title: Validation Failed
detail: webhook_url must be an HTTP or HTTPS URL
source:
pointer: /data/attributes/webhook_url
'500':
$ref: '#/components/responses/email_InternalServerErrorResponse'
'503':
$ref: '#/components/responses/email_ServiceUnavailableResponse'
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/email_validations/batch/{id}:
get:
tags:
- Email Validations
operationId: GetEmailValidationBatch
summary: Get a batch email validation job
description: Retrieves the current status and, once completed, validation results for a batch job.
parameters:
- $ref: '#/components/parameters/BatchId'
responses:
'200':
description: Batch validation job status.
content:
application/json:
schema:
$ref: '#/components/schemas/EmailValidationBatchDetailResponse'
example:
data:
record_type: email_validation_batch
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
status: pending
total: 0
webhook_url: https://example.com
completed_at: '2024-01-23T18:10:02.574Z'
'401':
$ref: '#/components/responses/email_UnauthorizedResponse'
'404':
$ref: '#/components/responses/email_NotFoundResponse'
components:
responses:
IdempotencyConflictResponse:
description: A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key and request.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10036'
title: Resource is being processed
detail: A request with this Idempotency-Key is already being processed.
source:
pointer: /header/Idempotency-Key
email_InternalServerErrorResponse:
description: Internal server error (10019).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10019'
title: Internal Server Error
detail: Failed to create batch validation
email_ServiceUnavailableResponse:
description: Service unavailable (10016), including an unavailable upstream dependency or unavailable Edge idempotency protection for a keyed request.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10016'
title: Service Unavailable
detail: The email domain service is temporarily unavailable. Please try again later.
email_NotFoundResponse:
description: Resource not found (10001).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10001'
title: Not Found
detail: The requested resource was not found
email_UnauthorizedResponse:
description: Not authorized (10006).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10006'
title: Not authorized
detail: Invalid API key
meta:
url: https://developers.telnyx.com/docs/overview/errors/10006
PayloadTooLargeResponse:
description: Request body exceeds the 8,000,000-byte limit for this endpoint.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
schemas:
EmailValidationChecks:
type: object
properties:
syntax:
$ref: '#/components/schemas/EmailValidationCheck'
mx:
$ref: '#/components/schemas/EmailValidationCheck'
disposable:
$ref: '#/components/schemas/EmailValidationCheck'
role_based:
$ref: '#/components/schemas/EmailValidationCheck'
typo:
$ref: '#/components/schemas/EmailValidationTypoCheck'
required:
- syntax
- mx
- disposable
- role_based
- typo
EmailValidationBatchDetailResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailValidationBatchDetail'
required:
- data
ErrorObject:
type: object
properties:
code:
type: string
description: Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead.
enum:
- '10001'
- '10006'
- '10007'
- '10011'
- '10015'
- '10016'
- '10019'
- domain_graduation_limit_exceeded
- recipient_suppressed
- reputation_suspended
- '404'
- '500'
- '10027'
- '10036'
title:
type: string
detail:
description: Human-readable error detail. Changeset responses may return a structured object.
oneOf:
- type: string
- type: object
additionalProperties: true
source:
type: object
additionalProperties: true
nullable: true
meta:
type: object
additionalProperties: true
nullable: true
description: Additional metadata. Present on 401 errors with a documentation URL.
required:
- code
- title
- detail
EmailValidationBatchResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailValidationBatch'
required:
- data
EmailValidation:
type: object
properties:
record_type:
type: string
enum:
- email_validation
email:
type: string
valid:
type: boolean
risk_score:
type: number
format: float
minimum: 0
did_you_mean:
type: string
description: Suggested correction for typo. Omitted when nil.
checks:
$ref: '#/components/schemas/EmailValidationChecks'
required:
- record_type
- email
- valid
- risk_score
- checks
email_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorObject'
suppressed:
type: array
description: Present when every recipient is suppressed, so the request is rejected and no message is created.
items:
$ref: '#/components/schemas/SuppressedRecipient'
required:
- errors
EmailValidationTypoCheck:
allOf:
- $ref: '#/components/schemas/EmailValidationCheck'
- type: object
properties:
suggestion:
type: string
description: Suggested correction for common typos. Omitted when nil.
EmailValidationBatchDetail:
description: Shape returned by the GET endpoint. Does not include duplicates_removed.
allOf:
- type: object
properties:
record_type:
type: string
enum:
- email_validation_batch
id:
type: string
format: uuid
status:
$ref: '#/components/schemas/EmailValidationBatchStatus'
total:
type: integer
minimum: 0
webhook_url:
type: string
format: uri
completed_at:
type: string
format: date-time
results:
type: object
description: Map keyed by original email address. Present only when the batch is completed.
additionalProperties:
$ref: '#/components/schemas/EmailValidationResult'
required:
- record_type
- id
- status
- total
SuppressedRecipient:
type: object
properties:
to:
type: string
format: email
description: Suppressed recipient email address.
reason:
type: string
description: Suppression reason returned by the recipient suppression service.
scope:
type: string
description: Scope at which the suppression applies.
override_allowed:
type: boolean
description: Whether an authorized send may override this suppression.
required:
- to
- reason
- scope
- override_allowed
EmailValidationBatch:
type: object
description: Shape returned by the create endpoint. Includes duplicates_removed.
properties:
record_type:
type: string
enum:
- email_validation_batch
id:
type: string
format: uuid
status:
$ref: '#/components/schemas/EmailValidationBatchStatus'
total:
type: integer
minimum: 0
duplicates_removed:
type: integer
minimum: 0
webhook_url:
type: string
format: uri
required:
- record_type
- id
- status
- total
- duplicates_removed
CreateEmailValidationRequest:
type: object
properties:
email:
type: string
description: Email address to validate. Any non-empty string is accepted; invalid syntax returns valid=false rather than a request error.
required:
- email
EmailValidationCheck:
type: object
properties:
pass:
type: boolean
details:
type: string
description: Human-readable check detail. Omitted when nil.
required:
- pass
EmailValidationBatchStatus:
type: string
enum:
- pending
- processing
- completed
- failed
EmailValidationResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailValidation'
required:
- data
EmailValidationResult:
type: object
properties:
email:
type: string
valid:
type: boolean
risk_score:
type: number
format: float
minimum: 0
did_you_mean:
type: string
description: Suggested correction for typo. Omitted when nil.
checks:
$ref: '#/components/schemas/EmailValidationChecks'
required:
- email
- valid
- risk_score
- checks
CreateEmailValidationBatchRequest:
type: object
properties:
emails:
type: array
minItems: 1
maxItems: 1000
items:
type: string
description: Email address to validate. Any string is accepted; validation results indicate whether the address is valid. Blank strings are discarded and counted in duplicates_removed; if all entries are blank, returns 400.
webhook_url:
type: string
format: uri
maxLength: 2048
pattern: ^https?://
description: URL for batch completion webhook. Empty string is treated as omitted. SSRF-protected; private/reserved IPs and internal hostnames are rejected.
required:
- emails
parameters:
IdempotencyKey:
name: Idempotency-Key
in: header
required: false
description: Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key.
schema:
type: string
minLength: 1
maxLength: 255
pattern: ^[A-Za-z0-9_-]{1,255}$
example: 8e03978e-40d5-43e8-bc93-6894a57f9326
BatchId:
name: id
in: path
required: true
description: Email validation batch UUID.
schema:
type: string
format: uuid
headers:
IdempotentReplayed:
description: Present with value `true` when Edge replayed a stored successful response for the supplied Idempotency-Key. Omitted for first-time requests and error responses.
schema:
type: boolean
enum:
- true
example: true
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: API key
description: 'Telnyx API key supplied as `Authorization: Bearer <token>`. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.'
Payment:
type: apiKey
in: header
name: Authorization
description: 'Machine Payment Protocol credential used on paid retries, sent as `Authorization: Payment ...`. Obtained by paying a challenge returned in the `WWW-Authenticate` header of a 402 response. This is not a Telnyx API key; initial challenge requests use standard bearer authentication instead.'
agent-memory_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key
bearerAuth:
type: http
scheme: bearer
branded-calling_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
collections_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Collections and results are automatically scoped to the authenticated user's organization.
number-reputation_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
oauthClientAuth:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
authorizationCode:
authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
tokenUrl: https://api.telnyx.com/v2/oauth/token
refreshUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
description: OAuth 2.0 authentication for Telnyx API and MCP integrations
outbound-voice-profiles_bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
pronunciation-dicts_bearerAuth:
type: http
scheme: bearer
description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
rcs-registration_bearerAuth:
type: http
scheme: bearer
bearerFormat: API key
stored-payment-transactions_bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
transcriptions-search_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Results are automatically scoped to the authenticated user's organization.
web-search_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key
x-service-info:
categories:
- communication
- developer-tools
docs:
apiReference: https://developers.telnyx.com
homepage: https://telnyx.com
llms: https://telnyx.com/llms.txt