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

# Connect phone number

> Connect a WhatsApp number to this customer using Meta credentials.

Get credentials from Meta's App Dashboard after completing embedded signup or manual setup.




## OpenAPI

````yaml /api/platform/v1/openapi-platform.yaml post /customers/{customer_id}/whatsapp/phone_numbers
openapi: 3.1.0
info:
  title: Kapso Platform API
  version: 0.2.0
  description: >
    Build WhatsApp messaging into your product. Manage customers, connect phone
    numbers, send broadcasts, and handle conversations.
servers:
  - url: https://api.kapso.ai/platform/v1
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Customers
    description: Manage customer accounts
  - name: Setup Links
    description: WhatsApp onboarding via embedded signup
  - name: Phone Numbers
    description: Connect and manage WhatsApp numbers
  - name: Webhooks
    description: Subscribe to WhatsApp events
  - name: Display Names
    description: Update WhatsApp business display names
  - name: Broadcasts
    description: |
      Send template messages at scale

      **Alpha**: This API is in alpha and subject to change
  - name: Conversations
    description: Manage conversation state
  - name: Media
    description: Upload media files for WhatsApp messaging
  - name: Users
    description: Manage project team members
  - name: Inbox Embeds
    description: Create and manage embeddable inbox access links
  - name: Webhook Deliveries
    description: View webhook delivery attempts and their status
  - name: External API Logs
    description: View logs of external API calls made by the project
  - name: Log Search
    description: Search Logs V2 events across API, Meta, workflow, and webhook sources
  - name: Provider Models
    description: List available AI provider models
  - name: WhatsApp Flows
    description: Build interactive WhatsApp Flows for surveys and forms
  - name: Contacts
    description: Manage WhatsApp contacts
paths:
  /customers/{customer_id}/whatsapp/phone_numbers:
    parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
    post:
      tags:
        - Phone Numbers
      summary: Connect phone number
      description: >
        Connect a WhatsApp number to this customer using Meta credentials.


        Get credentials from Meta's App Dashboard after completing embedded
        signup or manual setup.
      operationId: createCustomerWhatsappPhoneNumber
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhatsappPhoneNumberCreateRequest'
            examples:
              production:
                summary: Production number
                value:
                  whatsapp_phone_number:
                    name: Support Line
                    kind: production
                    phone_number_id: '1234567890'
                    business_account_id: '98765432109'
                    access_token: EAABsbCS...long-lived-token
                    webhook_destination_url: https://yourapp.com/webhooks/whatsapp
                    webhook_verify_token: your-verify-token
                    inbound_processing_enabled: true
                    calls_enabled: false
              sandbox:
                summary: Test with sandbox
                value:
                  whatsapp_phone_number:
                    name: Test Number
                    kind: sandbox
                    phone_number_id: sandbox
                    business_account_id: sandbox
                    access_token: sandbox
      responses:
        '201':
          description: Phone number connected
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WhatsappPhoneNumberResponse'
              examples:
                created:
                  value:
                    data:
                      id: '1234567890'
                      internal_id: 4a5b6c7d-8e9f-0a1b-2c3d-4e5f6a7b8c9d
                      phone_number_id: '1234567890'
                      name: Support Line
                      business_account_id: '98765432109'
                      is_coexistence: false
                      inbound_processing_enabled: true
                      calls_enabled: false
                      webhook_verified_at: '2025-01-15T10:10:00Z'
                      created_at: '2025-01-15T10:00:00Z'
                      updated_at: '2025-01-15T10:10:00Z'
                      customer_id: 3f2e1d0c-9b8a-7f6e-5d4c-3b2a1f0e9d8c
                      display_name: Support Line
                      display_phone_number: +1 555-123-4567
                      display_phone_number_normalized: '15551234567'
                      verified_name: Acme Corp
                      quality_rating: GREEN
                      code_verification_status: COMPLETED
                      name_status: APPROVED
                      status: CONNECTED
                      throughput_tier: TIER_10K
                      whatsapp_business_manager_messaging_limit: '10000'
                      is_official_business_account: false
                      is_pin_enabled: true
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          description: Phone limit reached or duplicate
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    WhatsappPhoneNumberCreateRequest:
      type: object
      required:
        - whatsapp_phone_number
      properties:
        whatsapp_phone_number:
          type: object
          required:
            - name
            - phone_number_id
            - business_account_id
            - access_token
          properties:
            name:
              type: string
            kind:
              type: string
              enum:
                - production
                - sandbox
              default: production
              description: Production uses Meta credentials, sandbox uses test data
            phone_number_id:
              type: string
              description: From Meta
            business_account_id:
              type: string
              description: From Meta
            access_token:
              type: string
              description: Permanent token from Meta
            webhook_verify_token:
              type:
                - string
                - 'null'
            webhook_destination_url:
              type:
                - string
                - 'null'
              format: uri
              description: Your HTTPS endpoint for webhooks
            inbound_processing_enabled:
              type: boolean
              default: true
            calls_enabled:
              type: boolean
              default: false
    WhatsappPhoneNumberResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/WhatsappPhoneNumber'
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    WhatsappPhoneNumber:
      type: object
      required:
        - id
        - internal_id
        - phone_number_id
        - name
        - created_at
        - updated_at
      properties:
        id:
          type: string
          description: Meta phone number ID
        internal_id:
          type: string
          format: uuid
          description: Kapso configuration ID
        phone_number_id:
          type: string
          description: Meta phone number ID
        name:
          type: string
          description: Label for this number
        business_account_id:
          type:
            - string
            - 'null'
          description: WhatsApp Business Account ID
        is_coexistence:
          type:
            - boolean
            - 'null'
          description: Using with WhatsApp Business App
        inbound_processing_enabled:
          type: boolean
          description: Process incoming messages
        calls_enabled:
          type: boolean
          description: Handle voice calls
        webhook_verified_at:
          type:
            - string
            - 'null'
          format: date-time
          description: When Meta confirmed webhook
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        customer_id:
          type:
            - string
            - 'null'
          format: uuid
        display_name:
          type:
            - string
            - 'null'
          description: Customer-facing display name
        display_phone_number:
          type:
            - string
            - 'null'
          description: Formatted number from Meta
        display_phone_number_normalized:
          type:
            - string
            - 'null'
          description: Digits only
        verified_name:
          type:
            - string
            - 'null'
          description: Meta-verified business name
        quality_rating:
          type:
            - string
            - 'null'
          description: GREEN, YELLOW, or RED
        code_verification_status:
          type:
            - string
            - 'null'
        name_status:
          type:
            - string
            - 'null'
          description: Display name review status
        status:
          type:
            - string
            - 'null'
          description: Connection status (e.g., CONNECTED)
        throughput_tier:
          type:
            - string
            - 'null'
          description: Message rate limit tier
        whatsapp_business_manager_messaging_limit:
          anyOf:
            - type: integer
            - type: string
            - type: 'null'
        is_official_business_account:
          type:
            - boolean
            - 'null'
          description: Green checkmark verified
        is_pin_enabled:
          type:
            - boolean
            - 'null'
          description: Two-factor PIN enabled
  responses:
    UnauthorizedError:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFoundError:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ValidationError:
      description: Request validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````