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/intodns-ai:intodns-ai-email-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: 3.2.0
info:
title: IntoDNS.AI Email API
description: Public DNS security and email deliverability analysis API. Analyze SPF, DKIM, DMARC, DNSSEC, MTA-STS, BIMI, SMTP STARTTLS, FCrDNS, blacklists, and more with deterministic results and optional AI explanations.
version: 2.0.0
contact:
name: IntoDNS.AI Support
url: https://intodns.ai
email: support@cobytes.com
license:
name: Proprietary
url: https://intodns.ai/terms
servers:
- url: https://intodns.ai/api
description: Production server
security: []
tags:
- name: Email
description: Email security checks
paths:
/email/check:
get:
tags:
- Email
summary: Email security check
description: Comprehensive email authentication and deliverability analysis including SPF, DKIM, DMARC.
operationId: emailCheck
parameters:
- name: domain
in: query
required: true
description: Domain to analyze
schema:
type: string
example: example.com
responses:
'200':
description: Email security analysis
content:
application/json:
schema:
$ref: '#/components/schemas/EmailCheckResult'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/email/spf:
get:
tags:
- Email
summary: SPF record check
description: Analyze SPF (Sender Policy Framework) record for a domain.
operationId: spfCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: SPF analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/SPFResult'
/email/spf/generate:
post:
tags:
- Email
summary: Generate an SPF record
description: 'Build an SPF TXT record from direct mechanisms. Pure computation: no DNS is changed and no data is stored. The returned lookupCount covers direct mechanisms only; include and redirect targets can add nested lookups, so validate the published record with /email/spf before treating the count as final.'
operationId: generateSpfRecord
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mechanisms:
type: array
maxItems: 50
items:
type: object
required:
- type
- value
properties:
type:
type: string
enum:
- ip4
- ip6
- include
- a
- mx
- exists
- redirect
value:
type: string
maxLength: 253
useA:
type: boolean
useMx:
type: boolean
policy:
type: string
enum:
- fail
- softfail
- neutral
- pass
default: fail
example:
mechanisms:
- type: include
value: _spf.google.com
useMx: true
policy: fail
responses:
'200':
description: Generated SPF record, direct lookup count, warnings, and DNS entry
content:
application/json:
schema:
type: object
'400':
description: Invalid generator input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/email/dkim:
get:
tags:
- Email
summary: DKIM discovery
description: Discover and validate DKIM keys for a domain.
operationId: dkimDiscovery
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: DKIM discovery result
content:
application/json:
schema:
$ref: '#/components/schemas/DKIMResult'
/email/dmarc:
get:
tags:
- Email
summary: DMARC policy check
description: Analyze DMARC policy for a domain.
operationId: dmarcCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: DMARC analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/DMARCResult'
/email/dmarc/generate:
post:
tags:
- Email
summary: Generate a DMARC record
description: 'Build a DMARC TXT record with rollout and reporting warnings. Pure computation: no DNS is changed and no data is stored.'
operationId: generateDmarcRecord
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
policy:
type: string
enum:
- none
- quarantine
- reject
default: none
subdomainPolicy:
type: string
enum:
- none
- quarantine
- reject
rua:
oneOf:
- type: string
- type: array
items:
type: string
ruf:
oneOf:
- type: string
- type: array
items:
type: string
percentage:
type: integer
minimum: 1
maximum: 100
default: 100
spfAlignment:
type: string
enum:
- relaxed
- strict
dkimAlignment:
type: string
enum:
- relaxed
- strict
reportFormat:
type: string
maxLength: 20
reportInterval:
type: integer
minimum: 60
maximum: 604800
example:
policy: none
rua: dmarc@example.com
responses:
'200':
description: Generated DMARC record, warnings, and DNS entry
content:
application/json:
schema:
type: object
'400':
description: Invalid generator input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/email/bimi:
get:
tags:
- Email
summary: BIMI record, logo, and mark-certificate check
description: Analyze BIMI record syntax, hosted SVG logo reachability, and optional VMC/CMC authority certificate URL.
operationId: bimiCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: BIMI analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/BIMIResult'
/email/mta-sts:
get:
tags:
- Email
summary: MTA-STS policy check
description: Check the _mta-sts TXT record and fetch the HTTPS MTA-STS policy file.
operationId: mtaStsCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: MTA-STS analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/MTASTSResult'
/email/smtp-tls:
get:
tags:
- Email
summary: SMTP STARTTLS and certificate check
description: 'Connect to MX servers on SMTP port 25, verify STARTTLS support, TLS certificate trust, hostname match, expiry, and FCrDNS. Measured from the IntoDNS.ai server: a host that does not answer there has reachable=false and startTlsSupported=null (not measured), which is not evidence that it lacks STARTTLS.'
operationId: smtpTlsCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: SMTP STARTTLS analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/SMTPTLSResult'
/email/fcrdns:
get:
tags:
- Email
summary: FCrDNS / PTR check
description: Check PTR records and forward-confirmed reverse DNS for mail-server IPs.
operationId: fcrdnsCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: FCrDNS analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/FCrDNSResult'
/email/blacklist:
get:
tags:
- Email
summary: Mail-server blacklist check
description: Check domain mail-server IPs against common DNSBL blocklists. A provider error code, a timeout, or a list that does not answer its RFC 5782 test entry is reported in providerHealth.unavailableProviders (status unknown), never as clean.
operationId: blacklistCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: Blacklist analysis result
content:
application/json:
schema:
type: object
/email/sender-requirements:
get:
tags:
- Email
summary: Google/Yahoo/Microsoft sender requirements check
description: Check SPF, DKIM, DMARC, FCrDNS, and other mailbox-provider sender requirements.
operationId: senderRequirementsCheck
parameters:
- name: domain
in: query
required: true
description: Domain to check
schema:
type: string
example: example.com
responses:
'200':
description: Sender requirements result
content:
application/json:
schema:
$ref: '#/components/schemas/SenderRequirementsResult'
components:
schemas:
SPFResult:
type: object
properties:
exists:
type: boolean
record:
type: string
valid:
type: boolean
mechanisms:
type: array
items:
type: string
lookups:
type: integer
lookupGraph:
type: object
description: Recursive SPF include/redirect lookup graph
flattened:
type: object
description: Generated flattened SPF record and warnings
warnings:
type: array
items:
type: string
EmailCheckResult:
type: object
properties:
success:
type: boolean
domain:
type: string
spf:
$ref: '#/components/schemas/SPFResult'
dkim:
$ref: '#/components/schemas/DKIMResult'
dmarc:
$ref: '#/components/schemas/DMARCResult'
mx:
type: object
properties:
records:
type: array
items:
type: object
properties:
priority:
type: integer
host:
type: string
score:
type: integer
DMARCResult:
type: object
properties:
exists:
type: boolean
policy:
type: string
enum:
- none
- quarantine
- reject
pct:
type: integer
rua:
type: array
items:
type: string
MTASTSResult:
type: object
properties:
exists:
type: boolean
record:
type: string
policyId:
type: string
policy:
type: object
policyUrl:
type: string
valid:
type: boolean
issues:
type: array
items:
type: string
BIMIResult:
type: object
properties:
exists:
type: boolean
record:
type: string
valid:
type: boolean
logoUrl:
type: string
authorityUrl:
type: string
logo:
type: object
description: Hosted SVG reachability, content type, and size checks
authority:
type: object
description: VMC/CMC mark-certificate reachability and parse result
issues:
type: array
items:
type: string
DKIMResult:
type: object
properties:
selectors_found:
type: array
items:
type: string
valid_keys:
type: integer
SMTPTLSResult:
type: object
properties:
domain:
type: string
checkedAt:
type: string
format: date-time
mxRecords:
type: array
items:
type: object
servers:
type: array
items:
type: object
summary:
type: object
issues:
type: array
items:
type: string
Error:
type: object
properties:
success:
type: boolean
example: false
error:
type: object
properties:
code:
type: string
example: INVALID_DOMAIN
message:
type: string
example: The provided domain is not valid
details:
type: string
FCrDNSResult:
type: object
properties:
domain:
type: string
timestamp:
type: string
format: date-time
check:
type: string
example: fcrdns
description:
type: string
result:
type: object
properties:
checked:
type: boolean
results:
type: array
items:
type: object
issues:
type: array
items:
type: string
citationUrl:
type: string
apiUrl:
type: string
SenderRequirementsResult:
type: object
properties:
domain:
type: string
overallStatus:
type: string
checks:
type: array
items:
type: object
summary:
type: object
securitySchemes:
SessionCookie:
type: apiKey
in: cookie
name: __Secure-authjs.session-token
description: Auth.js JWT session established by signing in at https://intodns.ai/login. On HTTPS the cookie is HttpOnly, Secure, SameSite=Lax, Path=/. Local HTTP development uses authjs.session-token without Secure. Auth.js manages cookies and numbered chunks when needed. This is browser session authentication, not an API key or bearer token; do not construct tokens or share session cookies with AI assistants. OpenAPI 3 represents cookie authentication with type apiKey.
x-access:
authentication: None for public diagnostics; POST /ai/explain and POST /ai/fix require a signed-in free account using an Auth.js session cookie.
publicEndpoints: Public DNS, email, blacklist, quick-scan, Everything Report, report snapshot, and record generator endpoints are free and available without signup or API keys for normal diagnostic use. Generous abuse protection may return HTTP 429 with Retry-After for bursts and write-style snapshot creation.
canonicalApiOrigin: https://intodns.ai/api
invalidApiOrigins:
- https://api.intodns.io
- https://intodns.io/api-docs/v1
invalidApiExamples:
- https://api.intodns.io/v1/domain/{domain}
- https://api.intodns.io/v1/domain/example.com
llmDiscovery: 'LLM discovery files are static and cacheable: /llms.txt, /llms-full.txt, /llms.json, /llm/api.md.'
protection: Costly write-style or AI/raw-message endpoints may return HTTP 429 with Retry-After if abuse protection triggers.