wbiztool-com WhatsApp numbers API

Connect numbers and check which are connected.

Operations 5

POST /whatsapp/connect/ Connect a WhatsApp number #
POST /whatsapp-client/create/ Connect a WhatsApp number (alias) #
POST /whatsapp-client/list/ List connected numbers #
POST /whatsapp-client/status/ Get connection status #
POST /whatsapp/accounts/ List all WhatsApp numbers #

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/wbiztool-com:wbiztool-com-whatsapp-numbers-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

wbiztool-com-whatsapp-numbers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: WbizTool WhatsApp numbers API
  version: 1.0.0
  summary: Send WhatsApp messages from your own number over a REST API.
  description: 'The WbizTool REST API sends WhatsApp messages (text, images and files, to numbers and groups, now or scheduled) from your own WhatsApp number, linked to WbizTool the way WhatsApp Web is linked to a phone. It is not the official WhatsApp Business API. Most endpoints authenticate with `client_id` and `api_key` sent in the request body (JSON or form fields), never in a header; the number verification endpoints use an `Authorization: Bearer` header instead. Always read the JSON body and check its `status` field, because some errors come back with HTTP 200. Guides, examples in cURL, Python, Node.js and PHP, and every error message: https://wbiztool.com/docs/'
  termsOfService: https://wbiztool.com/terms/
  contact:
    name: WbizTool support
    email: info@wbiztool.com
    url: https://wbiztool.com/contact-us/
servers:
- url: https://wbiztool.com/api/v1
  description: Production
tags:
- name: WhatsApp Numbers
  description: Connect numbers and check which are connected.
paths:
  /whatsapp/connect/:
    post:
      operationId: connectWhatsapp
      summary: Connect a WhatsApp number
      description: 'Start linking a WhatsApp number (Advanced and Enterprise plans). The call only starts it: the QR code (`login_method=qr`, default) or an 8-character pairing code (`login_method=phone`) arrives at `webhook_url` (see the `whatsappConnect` webhook), followed by `connected` or `not_connected`. A request not picked up within 10 minutes expires. The JSON body is served with `Content-Type: text/html`; parse it as JSON whatever the header says.'
      externalDocs:
        description: Full documentation
        url: https://wbiztool.com/docs/whatsapp-connect-api/
      tags:
      - WhatsApp Numbers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectWhatsappRequest'
            examples:
              qr:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
                  webhook_url: https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET
                summary: QR code
              phone:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
                  login_method: phone
                  whatsapp_number: '919876543210'
                  webhook_url: https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET
                summary: Phone (pairing) code
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConnectWhatsappRequest'
      responses:
        '200':
          description: 'Connection request created (`status: 1`) or refused (`status: 0`): `Auth Error` (also for an invalid JSON body), `Higher Subscription Required`, `WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit`, `Already Connected With Given Number`; a non-POST request returns `{}`.'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/WhatsappConnectStarted'
                - $ref: '#/components/schemas/ApiError'
              examples:
                created:
                  value:
                    message: Whatsapp Client Created
                    whatsapp_client_id: 678
                    login_method: qr
                    status: 1
                  summary: Created
                plan:
                  value:
                    status: 0
                    message: Higher Subscription Required
                  summary: Higher Subscription Required
        '400':
          description: '`login_method must be ''qr'' or ''phone''`, the phone-number format error for `login_method=phone`, `Auth Error: invalid api key` or `Invalid WhatsApp client`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                badKey:
                  value:
                    status: 0
                    message: 'Auth Error: invalid api key'
                  summary: 'Auth Error: invalid api key'
                badRow:
                  value:
                    status: 0
                    message: Invalid WhatsApp client
                  summary: Invalid WhatsApp client
        '403':
          description: '`client_id` is not a whole number.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                invalidClientId:
                  value:
                    status: 0
                    message: Invalid Client Id
                  summary: Invalid Client Id
        '500':
          description: '`webhook_url` longer than 250 characters.'
      security: []
  /whatsapp-client/create/:
    post:
      operationId: connectWhatsappAlias
      summary: Connect a WhatsApp number (alias)
      description: 'Identical alias of `POST /whatsapp/connect/`: same code, same responses. Used by the Python client.'
      externalDocs:
        description: Full documentation
        url: https://wbiztool.com/docs/whatsapp-connect-api/
      tags:
      - WhatsApp Numbers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectWhatsappRequest'
            examples:
              qr:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
                  webhook_url: https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET
                summary: QR code
              phone:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
                  login_method: phone
                  whatsapp_number: '919876543210'
                  webhook_url: https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET
                summary: Phone (pairing) code
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConnectWhatsappRequest'
      responses:
        '200':
          description: 'Connection request created (`status: 1`) or refused (`status: 0`): `Auth Error` (also for an invalid JSON body), `Higher Subscription Required`, `WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit`, `Already Connected With Given Number`; a non-POST request returns `{}`.'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/WhatsappConnectStarted'
                - $ref: '#/components/schemas/ApiError'
              examples:
                created:
                  value:
                    message: Whatsapp Client Created
                    whatsapp_client_id: 678
                    login_method: qr
                    status: 1
                  summary: Created
                plan:
                  value:
                    status: 0
                    message: Higher Subscription Required
                  summary: Higher Subscription Required
        '400':
          description: '`login_method must be ''qr'' or ''phone''`, the phone-number format error for `login_method=phone`, `Auth Error: invalid api key` or `Invalid WhatsApp client`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                badKey:
                  value:
                    status: 0
                    message: 'Auth Error: invalid api key'
                  summary: 'Auth Error: invalid api key'
                badRow:
                  value:
                    status: 0
                    message: Invalid WhatsApp client
                  summary: Invalid WhatsApp client
        '403':
          description: '`client_id` is not a whole number.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                invalidClientId:
                  value:
                    status: 0
                    message: Invalid Client Id
                  summary: Invalid Client Id
        '500':
          description: '`webhook_url` longer than 250 characters.'
      security: []
  /whatsapp-client/list/:
    post:
      operationId: listConnectedNumbers
      tags:
      - WhatsApp Numbers
      summary: List connected numbers
      description: 'The WhatsApp numbers (and Telegram accounts) of the workspace that are connected right now, with the IDs to pass as `whatsapp_client`. A non-POST request returns `{}`; an unexpected server problem an HTML 500 page. The JSON body is served with `Content-Type: text/html`; parse it as JSON whatever the header says.'
      externalDocs:
        description: Full documentation
        url: https://wbiztool.com/docs/whatsapp-client-list-api/
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Credentials'
            examples:
              credentials:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Credentials'
      responses:
        '200':
          description: 'Connected numbers (`status: 1`), or `{"message": "Auth Error", "status": 0}`.'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ConnectedNumbers'
                - $ref: '#/components/schemas/ApiError'
              examples:
                list:
                  value:
                    message: okay
                    whatsapp_clients:
                    - id: 678
                      whatsapp_client_id: 678
                      whatsapp_client_number: '919876543210'
                      platform: whatsapp
                      is_connected: true
                    - id: 702
                      whatsapp_client_id: 702
                      whatsapp_client_number: '919812345670'
                      platform: telegram
                      is_connected: true
                    status: 1
        '400':
          description: Invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                invalidKey:
                  value:
                    status: 0
                    message: 'Auth Error: invalid api key'
                  summary: 'Auth Error: invalid api key'
        '403':
          description: '`client_id` is not a whole number.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                invalidClientId:
                  value:
                    status: 0
                    message: Invalid Client Id
                  summary: Invalid Client Id
        '500':
          description: HTML error page instead of JSON (see the operation description).
          content:
            text/html:
              schema:
                type: string
      security: []
  /whatsapp-client/status/:
    post:
      operationId: getConnectionStatus
      tags:
      - WhatsApp Numbers
      summary: Get connection status
      description: 'Whether one WhatsApp number is connected. `Disconnected` also has `status: 0`, like an error, so check `message`. The JSON body is served with `Content-Type: text/html`; parse it as JSON whatever the header says.'
      externalDocs:
        description: Full documentation
        url: https://wbiztool.com/docs/whatsapp-client-status-api/
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhatsappClientRequest'
            examples:
              check:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
                  whatsapp_client: 678
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/WhatsappClientRequest'
      responses:
        '200':
          description: '`Connected` (`status: 1`), `Disconnected` (`status: 0`), or an error with `status: 0`: `Auth Error`, `Auth Error 2` (the ID is not in this workspace), `Demo Account can not access apis`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleResult'
              examples:
                connected:
                  value:
                    message: Connected
                    status: 1
                  summary: Connected
                disconnected:
                  value:
                    message: Disconnected
                    status: 0
                  summary: Disconnected
        '400':
          description: Invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                invalidKey:
                  value:
                    status: 0
                    message: 'Auth Error: invalid api key'
                  summary: 'Auth Error: invalid api key'
        '403':
          description: '`client_id` is not a whole number.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                invalidClientId:
                  value:
                    status: 0
                    message: Invalid Client Id
                  summary: Invalid Client Id
      security: []
  /whatsapp/accounts/:
    post:
      operationId: listWhatsappAccounts
      tags:
      - WhatsApp Numbers
      summary: List all WhatsApp numbers
      description: Every WhatsApp number of the workspace that has not been deleted, connected or not, sorted by ID. A successful response has no `message` field.
      externalDocs:
        description: Full documentation
        url: https://wbiztool.com/docs/whatsapp-accounts-api/
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Credentials'
            examples:
              credentials:
                value:
                  client_id: 12345
                  api_key: YOUR_API_KEY
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Credentials'
      responses:
        '200':
          description: The numbers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WhatsappAccounts'
              examples:
                accounts:
                  value:
                    whatsapp_clients:
                    - whatsapp_client_id: 678
                      whatsapp_number: '919876543210'
                      status: connected
                    - whatsapp_client_id: 702
                      whatsapp_number: '919812345678'
                      status: not_connected
                    status: 1
        '400':
          description: 'Refused: `Auth Error - Please send correct API key and Client id`, `Invalid client id.`, `Auth Error: invalid api key`, or `This API key is not linked to a workspace. Create a new API key in WbizTool.`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                badKey:
                  value:
                    status: 0
                    message: 'Auth Error: invalid api key'
                  summary: 'Auth Error: invalid api key'
        '405':
          description: Not a POST request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                method:
                  value:
                    status: 0
                    message: Method not allowed, use POST
                  summary: Method not allowed, use POST
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              examples:
                internal:
                  value:
                    status: 0
                    message: Internal error, please try again
                  summary: Internal error, please try again
      security: []
webhooks:
  whatsappConnect:
    post:
      operationId: whatsappConnectWebhook
      tags:
      - WhatsApp Numbers
      summary: WhatsApp connect event
      description: 'Sent to the `webhook_url` of Connect a WhatsApp number at each step: `qr_generated` (repeated every several seconds while waiting for a scan), `pairing_code` (once), then `connected` or `not_connected`. Not signed: put a secret in the URL and confirm with Connection status. Not retried; WbizTool waits up to 10 seconds.'
      externalDocs:
        description: Full documentation
        url: https://wbiztool.com/docs/whatsapp-connect-api/#webhook-events
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - status
              - whatsapp_client_id
              properties:
                status:
                  type: string
                  enum:
                  - qr_generated
                  - pairing_code
                  - connected
                  - not_connected
                whatsapp_client_id:
                  type: integer
                qr_image:
                  type: string
                  description: 'Only with `qr_generated`: a `data:image/png;base64,…` URL.'
                pairing_code:
                  type: string
                  description: 'Only with `pairing_code`: the 8-character code.'
                whatsapp_number:
                  type: string
                  description: 'Only with `connected`: the linked number with its country code.'
            examples:
              connected:
                value:
                  status: connected
                  whatsapp_client_id: 678
                  whatsapp_number: '919876543210'
              pairing:
                value:
                  status: pairing_code
                  whatsapp_client_id: 678
                  pairing_code: K5EWPGY5
      responses:
        '200':
          description: Any HTTP status is accepted.
      security: []
components:
  schemas:
    WhatsappConnectStarted:
      type: object
      required:
      - status
      - message
      - whatsapp_client_id
      - login_method
      properties:
        status:
          type: integer
          enum:
          - 1
        message:
          type: string
          enum:
          - Whatsapp Client Created
        whatsapp_client_id:
          type: integer
        login_method:
          type: string
          enum:
          - qr
          - phone
    ConnectedNumbers:
      type: object
      required:
      - status
      - message
      - whatsapp_clients
      properties:
        status:
          type: integer
          enum:
          - 1
        message:
          type: string
          enum:
          - okay
        whatsapp_clients:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                description: Same as `whatsapp_client_id`.
              whatsapp_client_id:
                type: integer
              whatsapp_client_number:
                type: string
              platform:
                type: string
                enum:
                - whatsapp
                - telegram
              is_connected:
                type: boolean
                description: Always `true`.
    SimpleResult:
      type: object
      required:
      - status
      - message
      properties:
        status:
          type: integer
          enum:
          - 0
          - 1
          description: '`1` success, `0` failure.'
        message:
          type: string
    ApiError:
      type: object
      description: A failed request. `status` is `0` and `message` says why. (`Account Disabled` has no `status` field.)
      required:
      - message
      properties:
        status:
          type: integer
          enum:
          - 0
        message:
          type: string
    Credentials:
      type: object
      description: Your API credentials, sent in the request body (JSON or form fields) of every request that uses them. Both come from Settings → API keys in the dashboard. The API key decides which workspace the request acts on.
      required:
      - client_id
      - api_key
      properties:
        client_id:
          type: integer
          description: Your API Client ID from Settings → API keys.
          examples:
          - 12345
        api_key:
          type: string
          description: One of your API keys from the same page. Keep it secret.
          examples:
          - YOUR_API_KEY
    WhatsappClientRequest:
      allOf:
      - $ref: '#/components/schemas/Credentials'
      - type: object
        required:
        - whatsapp_client
        properties:
          whatsapp_client:
            $ref: '#/components/schemas/WhatsappClientId'
            description: ID of the number to check.
    WhatsappClientId:
      type: integer
      description: ID of the WhatsApp number (or Telegram account) to send from, shown as "ID …" on the number's card on WhatsApp numbers in the dashboard.
      examples:
      - 678
    ConnectWhatsappRequest:
      allOf:
      - $ref: '#/components/schemas/Credentials'
      - type: object
        properties:
          webhook_url:
            type: string
            format: uri
            maxLength: 250
            description: Receives the QR code or phone code and the result (see the `whatsappConnect` webhook). Without it you cannot get the QR code through the API.
          login_method:
            type: string
            enum:
            - qr
            - phone
            default: qr
            description: '`qr` sends a QR code to the webhook; `phone` an 8-character pairing code.'
          whatsapp_number:
            type: string
            description: 'Required with `login_method=phone`: full international number, country code first, no leading `0`. Ignored for `qr`.'
            examples:
            - '919876543210'
          whatsapp_client_id:
            type: integer
            description: Reconnect this existing, disconnected number (keeps its ID). Leave out to add a new number.
    WhatsappAccounts:
      type: object
      required:
      - status
      - whatsapp_clients
      properties:
        status:
          type: integer
          enum:
          - 1
        whatsapp_clients:
          type: array
          items:
            type: object
            properties:
              whatsapp_client_id:
                type: integer
              whatsapp_number:
                type: string
              status:
                type: string
                enum:
                - connected
                - not_connected
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Number verification endpoints only: `Authorization: Bearer YOUR_API_KEY` (a key from Settings → API keys). Other endpoints take `client_id` and `api_key` in the body (see the `Credentials` schema).'
    apiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: Alternative for the GET number verification endpoints; the header keeps the key out of logs.
externalDocs:
  description: WbizTool API documentation
  url: https://wbiztool.com/docs/