Telnyx Email Domain DNS Records API

DNS verification records for email domains

Operations 2

GET /email_domains/{domain_id}/dns_records List DNS records for an email domain #
POST /email_domains/{domain_id}/verify Verify DNS records for an email domain #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/telnyx:telnyx-email-domain-dns-records-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

telnyx-email-domain-dns-records-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.0
  x-latency-category: responsive
  x-endpoint-cost: light
  title: Telnyx Email Domain DNS Records 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 Domain DNS Records
  description: DNS verification records for email domains
paths:
  /email_domains/{domain_id}/dns_records:
    get:
      tags:
      - Email Domain DNS Records
      summary: List DNS records for an email domain
      operationId: listEmailDomainDnsRecords
      parameters:
      - $ref: '#/components/parameters/EmailDomainDomainId'
      responses:
        '200':
          description: DNS records for the email domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DNSRecordListResponse'
        '404':
          $ref: '#/components/responses/email_NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      description: Returns the DNS records Telnyx generated for domain ownership and DKIM verification, plus MX records when inbound delivery is enabled.
  /email_domains/{domain_id}/verify:
    post:
      tags:
      - Email Domain DNS Records
      summary: Verify DNS records for an email domain
      operationId: verifyEmailDomainDnsRecords
      parameters:
      - $ref: '#/components/parameters/EmailDomainDomainId'
      responses:
        '200':
          description: Updated email domain with latest DNS verification results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailDomainResponse'
        '403':
          description: Forbidden — shared domains are read-only for non-owner accounts (error code 10008).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainsErrorResponse'
        '404':
          $ref: '#/components/responses/email_NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '500':
          $ref: '#/components/responses/InternalServerError'
      description: Checks the published DNS records against the records required for the email domain and returns the latest verification results.
components:
  responses:
    ValidationFailed:
      description: Validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DomainsErrorResponse'
          example:
            errors:
            - code: '10015'
              title: Validation Failed
              detail: domain is invalid
              source:
                pointer: /data/attributes/domain
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DomainsErrorResponse'
          example:
            errors:
            - code: '500'
              title: Internal Server Error
              detail: An unexpected error occurred
    email_NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DomainsErrorResponse'
          example:
            errors:
            - code: '10001'
              title: Not Found
              detail: The requested email domain was not found
  schemas:
    DNSRecord:
      type: object
      required:
      - id
      - purpose
      - record_type
      - host
      - value
      - required
      - status
      properties:
        id:
          type: string
          format: uuid
        purpose:
          type: string
          enum:
          - ownership
          - spf
          - dkim
          - dmarc
          - mx
        record_type:
          type: string
          enum:
          - TXT
          - MX
        host:
          type: string
        value:
          type: string
        actual_value:
          type: string
          nullable: true
        priority:
          type: integer
          nullable: true
        required:
          type: boolean
        status:
          type: string
          enum:
          - pending
          - verified
          - failed
          - not_required
      example:
        id: 123e4567-e89b-12d3-a456-426614174001
        purpose: ownership
        record_type: TXT
        host: _telnyx-email.example.com
        value: telnyx-domain-verification=abc123
        actual_value: null
        priority: null
        required: true
        status: pending
    DKIMStatus:
      type: object
      required:
      - selector
      - algorithm
      - key_length
      - active
      - rotated_at
      properties:
        selector:
          type: string
          nullable: true
        algorithm:
          type: string
          enum:
          - rsa-sha256
          - null
          nullable: true
        key_length:
          type: integer
          enum:
          - 2048
          - null
          nullable: true
        active:
          type: boolean
        rotated_at:
          type: string
          format: date-time
          nullable: true
    EmailDMARCPolicy:
      type: object
      description: DMARC policy for a sending domain. Drives the recommended _dmarc.<domain> TXT record. DMARC is advisory and never blocks sending. When omitted or null, the domain uses the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).
      properties:
        p:
          type: string
          enum:
          - none
          - quarantine
          - reject
          default: none
          description: Policy applied to messages that fail alignment.
        pct:
          type: integer
          minimum: 0
          maximum: 100
          default: 100
          description: Percentage of messages the policy applies to. Omitted from the record when 100.
        rua:
          type: string
          nullable: true
          description: URI for aggregate reports. Defaults to the Telnyx address when absent; null omits it.
        sp:
          type: string
          enum:
          - none
          - quarantine
          - reject
          nullable: true
          description: Policy for subdomains. Omitted from the record when null.
    InboundConfig:
      type: object
      required:
      - enabled
      - catch_all
      - mx_required
      properties:
        enabled:
          type: boolean
        catch_all:
          type: boolean
        mx_required:
          type: boolean
    DNSRecordListResponse:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DNSRecord'
    EmailDomain:
      type: object
      required:
      - id
      - record_type
      - domain
      - type
      - status
      - usable_for_sending
      - usable_for_inbound
      - verification
      - dns_records
      - dkim
      - inbound
      - dmarc_policy
      - tracking
      - created_at
      - updated_at
      properties:
        id:
          type: string
          format: uuid
        record_type:
          type: string
          enum:
          - email_domain
        domain:
          type: string
          example: example.com
        type:
          $ref: '#/components/schemas/EmailDomainType'
          description: 'Domain type. `custom` domains are account-owned (BYOD). `shared` domains are Telnyx-managed, visible to and usable by ALL accounts for sending, but read-only: only the owning (system) account may modify, verify, or delete them; other accounts receive 403 (code 10008).'
        status:
          $ref: '#/components/schemas/EmailDomainStatus'
        usable_for_sending:
          type: boolean
        usable_for_inbound:
          type: boolean
        verification:
          $ref: '#/components/schemas/EmailDomainVerification'
        dns_records:
          type: array
          items:
            $ref: '#/components/schemas/DNSRecord'
        dkim:
          $ref: '#/components/schemas/DKIMStatus'
        inbound:
          $ref: '#/components/schemas/InboundConfig'
        dmarc_policy:
          type: object
          allOf:
          - $ref: '#/components/schemas/EmailDMARCPolicy'
          nullable: true
          description: 'Customer DMARC policy. null means use the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).

            '
        tracking:
          $ref: '#/components/schemas/DomainsTrackingSettings'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        verified_at:
          type: string
          format: date-time
          nullable: true
        reputation:
          type: object
          description: Sender reputation for this domain (present on all domain responses).
          properties:
            band:
              type: string
              description: Reputation band, e.g. good/warn/poor.
            breakdown:
              type: object
              additionalProperties: true
            computed_at:
              type: string
              format: date-time
              nullable: true
      example:
        id: 123e4567-e89b-12d3-a456-426614174000
        record_type: email_domain
        domain: example.com
        type: custom
        status: pending
        usable_for_sending: false
        usable_for_inbound: false
        verification:
          ownership: pending
          spf: missing_optional
          dkim: pending
          dmarc: missing_optional
          mx: not_required
        dns_records: []
        dkim:
          selector: null
          algorithm: null
          key_length: null
          active: false
          rotated_at: null
        inbound:
          enabled: false
          catch_all: false
          mx_required: false
        dmarc_policy:
          p: none
          pct: 100
          rua: mailto:dmarc@telnyx.com
        tracking:
          open_tracking: false
          click_tracking: false
          unsubscribe_tracking: false
        created_at: '2026-01-01T00:00:00Z'
        updated_at: '2026-01-01T00:00:00Z'
        verified_at: null
    DomainsTrackingSettings:
      type: object
      properties:
        open_tracking:
          type: boolean
          default: false
          description: Inject a tracking pixel into HTML messages to record open events.
        click_tracking:
          type: boolean
          default: false
          description: Rewrite HTML links through a tracking redirect to record click events.
        unsubscribe_tracking:
          type: boolean
          default: true
          description: Add RFC 8058 List-Unsubscribe headers with a signed one-click unsubscribe URL. Enabled by default; Gmail/Yahoo bulk-sender rules require one-click unsubscribe support.
    DomainsErrorResponse:
      type: object
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/email_Error'
    EmailDomainVerification:
      type: object
      required:
      - ownership
      - spf
      - dkim
      - dmarc
      - mx
      properties:
        ownership:
          type: string
          enum:
          - pending
          - verified
          - not_required
        spf:
          type: string
          enum:
          - missing_optional
          - verified
          - failed
          - not_required
        dkim:
          type: string
          enum:
          - pending
          - verified
          - failed
        dmarc:
          type: string
          enum:
          - missing_optional
          - verified
          - failed
        mx:
          type: string
          enum:
          - not_required
          - pending
          - verified
          - failed
    EmailDomainResponse:
      type: object
      required:
      - data
      properties:
        data:
          $ref: '#/components/schemas/EmailDomain'
    email_Error:
      type: object
      required:
      - code
      - title
      - detail
      properties:
        code:
          type: string
          enum:
          - '10001'
          - '10015'
          - '500'
          - '10007'
          - '10008'
          - '10020'
          - '40901'
        title:
          type: string
        detail:
          type: string
        source:
          type: object
          properties:
            pointer:
              type: string
    EmailDomainStatus:
      type: string
      enum:
      - pending
      - verifying
      - verified
      - failed
      - degraded
      - suspended
    EmailDomainType:
      type: string
      enum:
      - custom
      - shared
      - shared_inbound
  parameters:
    EmailDomainDomainId:
      name: domain_id
      in: path
      required: true
      description: Email domain UUID
      schema:
        type: string
        format: uuid
  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