Ozan Soft Phone API

The Phone API from Ozan Soft — 1 operation(s) for phone.

Operations 2

GET /api/phone Validate and format a phone number using query parameters #
POST /api/phone Validate and format a phone number #

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/ozan-soft-phone-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

ozan-soft-phone-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GenderAPI Public Phone API
  version: 1.0.0
  summary: Gender inference and phone validation endpoints.
  description: API-owner-approved contract derived from the public English documentation and verified backend handlers. Gender values are probabilistic inferences, not verified identity. Publication remains controlled by the separate GEO release gate.
  termsOfService: https://www.genderapi.io/terms
  contact:
    url: https://www.genderapi.io/contact
servers:
- url: https://api.genderapi.io
  description: Production API
tags:
- name: Phone
paths:
  /api/phone:
    get:
      tags:
      - Phone
      operationId: validatePhoneWithQuery
      summary: Validate and format a phone number using query parameters
      description: POST with Bearer authentication is preferred for secret handling.
      security:
      - apiKeyQuery: []
      parameters:
      - name: number
        in: query
        required: true
        schema:
          type: string
      - name: address
        in: query
        required: false
        schema:
          type: string
      x-documentation-url: https://www.genderapi.io/docs-phone-validation-formatter-api
      x-credit-cost: Confirm current usage accounting in account and pricing documentation.
      responses:
        '200':
          description: Application response. Inspect status before reading result fields; live verification observed validation and authentication errors inside HTTP 200 responses.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/PhoneResponse'
                - $ref: '#/components/schemas/Error'
              example:
                status: true
                remaining_credits: 15709
                expires: 0
                duration: 18ms
                regionCode: US
                countryCode: 1
                country: United States
                national: (212) 867-5309
                international: +1 212-867-5309
                e164: '+12128675309'
                isValid: true
                isPossible: true
                numberType: FIXED_LINE_OR_MOBILE
        '400':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
      - Phone
      operationId: validatePhone
      summary: Validate and format a phone number
      description: 'Canonical documentation: https://www.genderapi.io/docs-phone-validation-formatter-api'
      security:
      - bearerAuth: []
      x-documentation-url: https://www.genderapi.io/docs-phone-validation-formatter-api
      x-credit-cost: Confirm current usage accounting in account and pricing documentation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
              - number
              properties:
                number:
                  type: string
                  minLength: 1
                address:
                  type: string
            example:
              number: +1 212 867 5309
              address: US
      responses:
        '200':
          description: Application response. Inspect status before reading result fields; live verification observed validation and authentication errors inside HTTP 200 responses.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/PhoneResponse'
                - $ref: '#/components/schemas/Error'
              example:
                status: true
                remaining_credits: 15709
                expires: 0
                duration: 18ms
                e164: '+12128675309'
                isValid: true
        '400':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Request rejected. Branch on errno rather than errmsg text.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PhoneResponse:
      type: object
      required:
      - status
      properties:
        status:
          type: boolean
          const: true
        remaining_credits:
          type: integer
          minimum: 0
        expires:
          type: integer
        duration:
          type: string
        regionCode:
          type: string
          pattern: ^[A-Z]{2}$
          description: ISO 3166-1 alpha-2 country code used as regional context.
          examples:
          - US
        countryCode:
          type: integer
        country:
          type: string
        national:
          type: string
        international:
          type: string
        e164:
          type: string
        isValid:
          type: boolean
        isPossible:
          type: boolean
        numberType:
          type: string
          enum:
          - FIXED_LINE
          - MOBILE
          - FIXED_LINE_OR_MOBILE
          - TOLL_FREE
          - PREMIUM_RATE
          - SHARED_COST
          - VOIP
          - PERSONAL_NUMBER
          - PAGER
          - UAN
          - VOICEMAIL
          - UNKNOWN
        nationalSignificantNumber:
          type: string
        rawInput:
          type: string
        isGeographical:
          type: boolean
        areaCode:
          type: string
        location:
          type: string
    Error:
      type: object
      additionalProperties: true
      required:
      - status
      - errno
      - errmsg
      properties:
        status:
          type: boolean
          const: false
        errno:
          type: integer
          enum:
          - 50
          - 90
          - 91
          - 92
          - 93
          - 94
          - 99
        errmsg:
          type: string
      example:
        status: false
        errno: 94
        errmsg: invalid or missing key
      x-error-catalog:
      - errno: 50
        message: access denied
        action: Review API-key IP or referrer restrictions.
      - errno: 90
        message: invalid country code
        action: Validate an ISO 3166-1 alpha-2 country code.
      - errno: 91
        message: required input not set
        action: Add the endpoint's required name, email, or username.
      - errno: 92
        message: batch limit exceeded
        action: Split input according to the documented endpoint limit.
      - errno: 93
        message: query limit reached
        action: Pause lookups and review the account quota.
      - errno: 94
        message: invalid or missing key
        action: Check server-side credential injection.
      - errno: 99
        message: API key has expired
        action: Review or renew the package before retrying.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Recommended server-side API-key transport.
    apiKeyQuery:
      type: apiKey
      in: query
      name: key
      description: Supported by documented GET endpoints; keep requests server-side.
x-lifecycle-policy:
  approvedAt: '2026-09-15'
  canonicalTransport: Bearer authentication on POST operations; query-key on documented GET compatibility operations.
  compatibility: Existing legacy GET, authentication transports, JSONP or alternate response shapes, HTTP error mappings, and errno values remain operational until measured, announced, and migrated.
  breakingChange: Removing or changing an accepted request transport, operation, response shape, field type, HTTP/application-error mapping, or errno value is a breaking change.
  minimumNoticeMonths: 6
  criticalEnterpriseNoticeMonths: 12
  noticeChannels:
  - developer documentation
  - account email
  sunsetSignaling:
  - documentation deprecation notice
  - Sunset HTTP header where technically applicable