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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/cofferdock-com:cofferdock-com-validation-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 Specification
openapi: 3.2.0
info:
title: Cofferdock Validation API
version: 1.0.0
summary: 'One API key, 48 tools for automations: HTML to image or PDF, screenshots, QR codes, charts, PDF editing, image processing, validation and data helpers.'
description: 'All tools share one account and one monthly pool of credits (1 successful call = 1 credit; failed calls are not charged). Free plan: 50 credits a month, no card.
Authenticate with the header `x-api-key`. Most tools accept the input either as JSON (base64 for files) or as raw bytes (the file itself as the request body, options as query parameters), and can return the result as JSON (base64), as the file itself (`output=binary`) or as a temporary download link (`output=url`).
Docs: https://cofferdock.com/html-to-image · Get a key: https://cofferdock.com/register · Support: hello@cofferdock.com'
contact:
name: Cofferdock support
email: hello@cofferdock.com
url: https://cofferdock.com
termsOfService: https://cofferdock.com/terms
servers:
- url: https://api.cofferdock.com
security:
- ApiKey: []
tags:
- name: Validation
description: Check emails, phones and IBANs.
paths:
/validate-email:
post:
operationId: validateEmail
tags:
- Validation
summary: Validate an email address
description: 'Checks the format and, by default, that the domain has a real mail server (MX record). An invalid email is still a successful call (valid=false).
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
properties:
email:
type: string
maxLength: 254
description: The email address to check.
check_mx:
type: boolean
default: true
description: true (default) = also check that the domain can receive email (MX records).
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
valid:
type: boolean
format_valid:
type: boolean
mx_found:
type:
- boolean
- 'null'
domain:
type:
- string
- 'null'
reason:
type: string
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
/validate-phone:
post:
operationId: validatePhone
tags:
- Validation
summary: Validate and format a phone number
description: 'Validates an international phone number and returns it in E.164 and international formats, with its country and type (mobile, fixed line...). Give `country` (2-letter code) for numbers without the + prefix.
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- phone
properties:
phone:
type: string
maxLength: 40
description: The phone number to validate. Use the international format with the country code, e.g. "+34600000000".
country:
type: string
minLength: 2
maxLength: 2
description: ISO 3166-1 alpha-2, e.g. "ES", "GB".
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
valid:
type: boolean
country:
type:
- string
- 'null'
type:
type:
- string
- 'null'
formatted_e164:
type:
- string
- 'null'
formatted_international:
type:
- string
- 'null'
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
/validate-iban:
post:
operationId: validateIban
tags:
- Validation
summary: Validate an IBAN
description: 'Checks the IBAN checksum (ISO 7064) and returns the country and the formatted IBAN.
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- iban
properties:
iban:
type: string
maxLength: 80
description: The IBAN to validate, e.g. "ES9121000418450200051332".
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
valid:
type: boolean
country:
type:
- string
- 'null'
formatted:
type:
- string
- 'null'
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
/validate-card:
post:
operationId: validateCard
tags:
- Validation
summary: Validate a credit card number
description: 'Checks the Luhn checksum and detects the network (Visa, Mastercard, Amex, Discover, Diners, JCB). An invalid card is still a successful call (valid=false). The number is never stored or logged.
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- number
properties:
number:
type: string
maxLength: 40
description: The card number to check, as a string. Spaces and hyphens are ignored. A valid number has 12 to 19 digits (up to 40 characters accepted).
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
valid:
type: boolean
network:
type:
- string
- 'null'
length:
type: integer
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
/validate-url:
post:
operationId: validateUrl
tags:
- Validation
summary: Validate a URL
description: 'Checks whether a URL is well-formed and breaks it into protocol, hostname, port, pathname and query. Never connects to the URL (no SSRF risk).
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
maxLength: 4096
description: The URL to check (up to 4096 characters). It must include the protocol, e.g. "https://example.com/path?x=1". It is only parsed, never opened.
allowed_protocols:
type: array
items:
type: string
default:
- http
- https
description: Protocols that count as valid, as a non-empty array such as ["http","https","ftp"]. Default ["http","https"]. Case is ignored and the trailing ":" is optional.
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
valid:
type: boolean
reason:
type:
- string
- 'null'
protocol:
type:
- string
- 'null'
hostname:
type:
- string
- 'null'
port:
type:
- string
- 'null'
pathname:
type:
- string
- 'null'
query:
type:
- object
- 'null'
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
/password-strength:
post:
operationId: passwordStrength
tags:
- Validation
summary: Measure password strength
description: 'Scores a password 0-4 based on length, character variety and estimated entropy, and flags it if it is in a short list of very common passwords. Structural only, not a breached-password database check. The password is never stored or logged.
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- password
properties:
password:
type: string
maxLength: 256
description: The password to analyze (1 to 256 characters). It is never stored or logged.
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
score:
type: integer
strength:
type: string
length:
type: integer
has_lowercase:
type: boolean
has_uppercase:
type: boolean
has_digit:
type: boolean
has_symbol:
type: boolean
entropy_bits:
type: number
common_password:
type: boolean
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
/validate-tax-id:
post:
operationId: validateTaxId
tags:
- Validation
summary: Validate a Spanish NIF, NIE or CIF
description: 'Checks the check letter/digit of a Spanish tax ID (NIF, NIE or CIF). Spain only, no registry lookup. An invalid ID is still a successful call (valid=false).
Costs 1 credit per call.'
security:
- ApiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- tax_id
properties:
tax_id:
type: string
maxLength: 20
description: 'The Spanish tax ID to check: a NIF (8 digits + letter, e.g. "12345678Z"), a NIE (X, Y or Z + 7 digits + letter, e.g. "X1234567L") or a CIF (letter + 7 digits + control digit or letter). Spaces and hyphens are ignored; case does not matter.'
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
valid:
type: boolean
type:
type:
- string
- 'null'
formatted:
type:
- string
- 'null'
meta:
type: object
properties:
used:
type: integer
description: Credits used this month, after this call.
remaining:
type:
- integer
- 'null'
description: Credits left this month (null = unlimited).
unlimited:
type: boolean
'400':
description: Invalid input (nothing is charged).
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'403':
description: Email not verified.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Monthly credit limit reached, or too many requests per minute for this key (see Retry-After).
content:
application/json:
schema:
type: object
properties:
error:
type: string
plan:
type: string
limit:
type: integer
retry_after:
type: integer
'503':
description: Server busy (queue full). Retry after the seconds in the Retry-After header.
content:
application/json:
schema:
type: object
properties:
error:
type: string
retry_after:
type: integer
components:
securitySchemes:
ApiKey:
type: apiKey
in: header
name: x-api-key
description: Create keys in your dashboard.