Cofferdock Validation API

Check emails, phones and IBANs.

Operations 7

POST /validate-email Validate an email address #
POST /validate-phone Validate and format a phone number #
POST /validate-iban Validate an IBAN #
POST /validate-card Validate a credit card number #
POST /validate-url Validate a URL #
POST /password-strength Measure password strength #
POST /validate-tax-id Validate a Spanish NIF, NIE or CIF #

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/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

cofferdock-com-validation-api-openapi.yml Raw ↑
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.