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/neverbounce-single-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 email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.1.0
info:
title: NeverBounce Single API
version: '4.2'
description: Real-time verification of a single email address. Part of the NeverBounce v4 email verification
API. Harvested from the OpenAPI definition NeverBounce publishes behind its interactive API reference
at developers.neverbounce.com (ReadMe API Designer definition `neverbounce-api.json`).
contact:
name: NeverBounce Support
email: support@neverbounce.com
url: https://developers.neverbounce.com/
servers:
- url: https://api.neverbounce.com/v4.2
security:
- sec0: []
tags:
- name: Single
description: Real-time verification of a single email address
paths:
/single/check:
get:
summary: /check
description: ''
operationId: single-check
parameters:
- name: email
in: query
description: The email to verify
required: true
schema:
type: string
- name: address_info
in: query
description: 'Include additional address info in response (default: false)'
schema:
type: integer
format: int32
- name: credits_info
in: query
description: 'Include account credit info in response (default: false)'
schema:
type: integer
format: int32
- name: timeout
in: query
description: The maximum time in seconds we should try to verify the address
schema:
type: integer
format: int32
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"status\": \"success\",\n \"result\": \"valid\",\n \"flags\": [\n \
\ \"has_dns\",\n \"has_dns_mx\"\n ],\n \"suggested_correction\": \"\",\n \"\
execution_time\": 499\n}"
Address Info:
value: "{\n \"status\": \"success\",\n \"result\": \"valid\",\n \"flags\": [\n \
\ \"has_dns\",\n \"has_dns_mx\",\n \"role_account\"\n ],\n \"suggested_correction\"\
: \"\",\n \"address_info\": {\n \"original_email\": \"support@neverbounce.com\"\
,\n \"normalized_email\": \"support@neverbounce.com\",\n \"addr\": \"support\"\
,\n \"alias\": \"\",\n \"host\": \"neverbounce.com\",\n \"fqdn\": \"neverbounce.com\"\
,\n \"domain\": \"neverbounce\",\n \"subdomain\": \"\",\n \"tld\": \"com\"\
\n },\n \"execution_time\": 399\n}"
Credits Info:
value: "{\n \"status\": \"success\",\n \"result\": \"valid\",\n \"flags\":\
\ [\n \"smtp_connectable\",\n \"has_dns\",\n \"has_dns_mx\"\n\
\ ],\n \"suggested_correction\": \"\",\n \"credits_info\": {\n \"\
paid_credits_used\": 1,\n \"free_credits_used\": 0,\n \"paid_credits_remaining\"\
: 9950778,\n \"free_credits_remaining\": 0\n },\n \"execution_time\"\
: 350\n}"
schema:
oneOf:
- type: object
properties:
status:
type: string
example: success
result:
type: string
example: valid
flags:
type: array
items:
type: string
example: has_dns
suggested_correction:
type: string
example: ''
execution_time:
type: integer
example: 499
default: 0
- title: Address Info
type: object
properties:
status:
type: string
example: success
result:
type: string
example: valid
flags:
type: array
items:
type: string
example: has_dns
suggested_correction:
type: string
example: ''
address_info:
type: object
properties:
original_email:
type: string
example: support@neverbounce.com
normalized_email:
type: string
example: support@neverbounce.com
addr:
type: string
example: support
alias:
type: string
example: ''
host:
type: string
example: neverbounce.com
fqdn:
type: string
example: neverbounce.com
domain:
type: string
example: neverbounce
subdomain:
type: string
example: ''
tld:
type: string
example: com
execution_time:
type: integer
example: 399
default: 0
- title: Credits Info
type: object
properties:
status:
type: string
example: success
result:
type: string
example: valid
flags:
type: array
items:
type: string
example: smtp_connectable
suggested_correction:
type: string
example: ''
credits_info:
type: object
properties:
paid_credits_used:
type: integer
example: 1
default: 0
free_credits_used:
type: integer
example: 0
default: 0
paid_credits_remaining:
type: integer
example: 9950778
default: 0
free_credits_remaining:
type: integer
example: 0
default: 0
execution_time:
type: integer
example: 350
default: 0
deprecated: false
x-readme:
code-samples:
- language: curl
code: "# Be sure to encode email before making the request (@ becomes %40)\ncurl --request GET\\\
\n --url 'https://api.neverbounce.com/v4.2/single/check?key={api_key}&email={email}'"
- language: php
code: "<?php\n\n// Set API key\n\\NeverBounce\\Auth::setApiKey($api_key);\n\n// Make verification\
\ request, specify optional $max_execution_time\n$result = \\NeverBounce\\Single::check(\n\
\ 'support@neverbounce.com', // Email to verify\n true, // Address info\n true, // Credits\
\ info\n 10 // Timeout in seconds\n);"
- language: javascript
code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\
\n/// Verify an email\nclient.single.check(\n 'support@neverbounce.com', \n true, // Address\
\ info\n true // Credits info\n 10 // timeout\n).then(\n result => // Handle success\
\ response\n err => // Handle error response\n);"
name: NodeJs
- language: python
code: "import neverbounce_sdk\n\n# Create sdk client\nclient = neverbounce_sdk.client(api_key='api_key')\n\
\n# Verify email\nverification = client.single_check(\n email='support@neverbounce.com',\n\
\ address_info=True,\n credits_info=True,\n timeout=10 # Timeout in seconds\n)"
- language: go
code: "// Instantiate wrapper\nclient := neverbounce.New(\"api_key\")\n\n// Verify an email\n\
singleResults, err := client.Single.Check(&nbModels.SingleCheckRequestModel{\n Email: \
\ \"support@neverbounce.com\",\n AddressInfo: true,\n CreditInfo: true,\n Timeout:\
\ 10,\n})"
- language: ruby
code: "# Instantiate API client\nclient = NeverBounce::API::Client.new(api_key: \"api_key\"\
)\n\n# Get account info\nresp = client.single_check(\n email: \"support@neverbounce.com\"\
, \n address_info: true, \n credits_info: true, \n timeout: 10)"
- language: csharp
code: "// Create SDK object\nvar sdk = new NeverBounceSdk(\"api_key\");\n\n// Create request\
\ model\nvar model = new SingleRequestModel();\nmodel.email = \"support@neverbounce.com\"\
;\nmodel.credits_info = true;\nmodel.address_info = true;\nmodel.timeout = 10; \n\n// Verify\
\ single email\nSingleResponseModel resp = await sdk.Single.Check(model);"
name: .NET
- language: java
code: "// Instantiate Client\nNeverbounceClient neverbounceClient = NeverbounceClientFactory.create(apiKey);\n\
\n// Perform verification\nSingleCheckResponse singleCheckResponse = neverbounceClient\n \
\ .prepareSingleCheckRequest()\n .withEmail(\"support@neverbounce.com\"\
)\n .withAddressInfo(true)\n .withCreditsInfo(true)\n .withTimeout(10)\n\
\ .build()\n .execute()"
- language: node
code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\
try {\n const result = await client.single.check('support@neverbounce.com');\n console.log('Result:',\
\ result);\n} catch (error) {\n console.error('Error:', error);\n}"
samples-languages:
- curl
- php
- javascript
- python
- go
- ruby
- csharp
- java
- node
tags:
- Single
components:
securitySchemes:
sec0:
type: apiKey
in: query
name: key