> ## Documentation Index
> Fetch the complete documentation index at: https://docs.airscale.io/llms.txt
> Use this file to discover all available pages before exploring further.

# WhatsApp checker

> Check whether one phone number is available on WhatsApp. Rate limit: 60 requests per minute per workspace for POST, including replays.

Check one phone number in strict E.164 format: a leading `+` followed by 7–15 digits, without spaces. The body must contain exactly one `phone` field and fit within 16 KiB.

## Usage and credits

The limit is **60 requests per minute per workspace**, including POST retries. A definitive `yes` or `no` costs **1 credit**. HTTP `202` means `pending` or `unknown`; it does not confirm availability or a final credit amount.

## Retrying and reconciliation

`Idempotency-Key` is optional. Use a UUID (versions 1–5) and reuse the same key and phone for retries of one logical check. Changing the phone with the same key returns `409`. Without a key, the server generates an operation ID; save the returned `operation_id`.

After a `202` response, use [WhatsApp check status](/api-reference/miscale-news/whatsapp-check/status) to reconcile the operation before submitting another check. Repeating a headerless POST creates a new operation and can incur another charge.

A recorded insufficient-credit rejection returns `403`; a known unavailable check returns `503`. Both can include an `operation_id`. Reuse the original key when reconciling a lost response. Use bounded backoff for temporary errors and rate limits.

## Next step

[Look up the operation status](/api-reference/miscale-news/whatsapp-check/status) using the same workspace API key.


## OpenAPI

````yaml openapi.json POST /v1/whatsapp-check
openapi: 3.1.0
info:
  title: Airschool Public API
  version: '2026-09-11'
  description: Search, enrich, and resolve public business data with Airschool.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: Check WhatsApp availability, Meta ads, and email deliverability.
paths:
  /v1/whatsapp-check:
    post:
      tags:
        - Miscellaneous
      summary: Check WhatsApp availability
      description: >-
        Check one phone number. Definitive yes and no outcomes both cost one
        credit. An optional Idempotency-Key makes retries of the same phone
        reuse the operation; a different phone with the same key returns 409.
        When omitted, the server generates an operation ID. Save the returned ID
        for reconciliation.
      operationId: checkWhatsapp
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Optional UUID (versions 1–5). Reuse the same key and phone for
            retries of one logical check. The server trims whitespace and
            normalizes UUID case.
          schema:
            type: string
            pattern: >-
              ^\s*[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}\s*$
          example: 00000000-0000-4000-8000-000000000001
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phone:
                  type: string
                  pattern: ^\+[1-9]\d{6,14}$
                  description: >-
                    Strict E.164 number, with no spaces or punctuation other
                    than the leading +.
              required:
                - phone
              additionalProperties: false
            examples:
              request:
                value:
                  phone: '+12025550147'
      responses:
        '200':
          description: Definitive WhatsApp result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                  phone:
                    type: string
                    pattern: ^\+[1-9]\d{6,14}$
                    description: >-
                      Strict E.164 number, with no spaces or punctuation other
                      than the leading +.
                  whatsapp:
                    type: string
                    enum:
                      - 'yes'
                      - 'no'
                  credits_consumed:
                    type: integer
                    const: 1
                required:
                  - operation_id
                  - phone
                  - whatsapp
                  - credits_consumed
                additionalProperties: false
              examples:
                'yes':
                  value:
                    operation_id: 00000000-0000-4000-8000-000000000001
                    phone: '+12025550147'
                    whatsapp: 'yes'
                    credits_consumed: 1
                'no':
                  value:
                    operation_id: 00000000-0000-4000-8000-000000000001
                    phone: '+12025550147'
                    whatsapp: 'no'
                    credits_consumed: 1
        '202':
          description: >-
            The operation is pending or its outcome is uncertain. Look up this
            operation ID before retrying; do not infer a yes/no result or final
            charge.
          content:
            application/json:
              schema:
                type: object
                properties:
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                  status:
                    type: string
                    enum:
                      - pending
                      - unknown
                required:
                  - operation_id
                  - status
                additionalProperties: false
              examples:
                pending:
                  value:
                    operation_id: 00000000-0000-4000-8000-000000000001
                    status: pending
                unknown:
                  value:
                    operation_id: 00000000-0000-4000-8000-000000000001
                    status: unknown
        '400':
          description: >-
            Invalid request or UUID. POST requires exactly one strict E.164
            phone field and a JSON body of at most 16 KiB; oversized bodies also
            return 400.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                required:
                  - error
                additionalProperties: true
              examples: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            Insufficient credits. A durably recorded rejection includes
            operation_id.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                required:
                  - error
                additionalProperties: true
              examples: {}
        '409':
          description: The idempotency key belongs to a different request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                required:
                  - error
                additionalProperties: true
              examples: {}
        '429':
          description: Workspace POST rate limit exceeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                required:
                  - error
                additionalProperties: true
              examples: {}
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                required:
                  - error
                additionalProperties: true
              examples: {}
        '503':
          description: >-
            Authentication, rate limiting, operation storage, or WhatsApp
            checking is unavailable. A recorded unavailable operation includes
            operation_id. Reuse the same key when reconciling a request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  operation_id:
                    type: string
                    format: uuid
                    description: Operation UUID.
                required:
                  - error
                additionalProperties: true
              examples: {}
components:
  responses:
    Unauthorized:
      description: The Bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      additionalProperties: true
      properties:
        error:
          type: string
        message:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airschool workspace API key. Never expose the key in client-side
        code.

````