> ## 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.

# Update business profile

> Update WhatsApp business profile information.

**Proxy endpoint**: Proxies directly to Meta Graph API /PHONE_NUMBER_ID/whatsapp_business_profile.

Use this endpoint to update:
- About text (1-139 characters, appears below profile image)
- Business address and description
- Contact email
- Profile picture (via handle from resumable upload)
- Business category (vertical)
- Website links (max 2)

**Restrictions**:
- About text: 1-139 chars, rendered emojis supported, hyperlinks won't be clickable, no markdown
- Address: max 256 characters
- Description: max 512 characters
- Email: max 128 characters, valid email format
- Websites: max 2 URLs, max 256 chars each, must include http:// or https://

**Note**: Sandbox configurations are blocked (returns 403).




## OpenAPI

````yaml /api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/whatsapp_business_profile
openapi: 3.1.0
info:
  title: Kapso Meta Proxy API
  version: 1.0.0
  description: >
    Kapso's Meta Proxy API provides a unified interface to WhatsApp Business
    Platform with enhanced features and Kapso-specific extensions.


    This API acts as a proxy layer between your application and WhatsApp,
    adding:

    - Simplified authentication with project-level API keys

    - Enhanced message metadata and tracking

    - Conversation management capabilities

    - Voice call integration

    - Extended contact and template management


    ## Base URL


    All API requests are made to: `https://api.kapso.ai/meta/whatsapp/v24.0`


    ## Authentication


    The API supports authentication via **X-API-Key header** (recommended):


    ```

    X-API-Key: your_project_api_key

    ```


    Alternative: Bearer token authentication is also supported for backward
    compatibility:


    ```

    Authorization: Bearer your_access_token

    ```


    Note: X-API-Key is the recommended authentication method for the Meta Proxy
    API.
  contact:
    name: Kapso Support
    url: https://kapso.ai
    email: dev@kap.so
servers:
  - url: https://api.kapso.ai/meta/whatsapp/v24.0
    description: Production server
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Messages
    description: Send and retrieve WhatsApp messages
  - name: Conversations
    description: Manage WhatsApp conversations
  - name: Contacts
    description: Manage WhatsApp contacts
  - name: Templates
    description: Manage message templates
  - name: Media
    description: Upload and retrieve media files
  - name: Calls
    description: Manage voice calls
  - name: Settings
    description: Account settings and configuration
  - name: Business Profile
    description: Business profile management
  - name: Phone Numbers
    description: Phone number management
  - name: Flows
    description: WhatsApp Flow management (Beta)
  - name: Block Users
    description: Block and unblock WhatsApp users
  - name: Usernames
    description: Reserve and manage WhatsApp business usernames
paths:
  /{phone_number_id}/whatsapp_business_profile:
    parameters:
      - name: phone_number_id
        in: path
        required: true
        description: WhatsApp Business Phone Number ID
        schema:
          type: string
        example: '110987654321'
    post:
      tags:
        - Business Profile
      summary: Update business profile
      description: >
        Update WhatsApp business profile information.


        **Proxy endpoint**: Proxies directly to Meta Graph API
        /PHONE_NUMBER_ID/whatsapp_business_profile.


        Use this endpoint to update:

        - About text (1-139 characters, appears below profile image)

        - Business address and description

        - Contact email

        - Profile picture (via handle from resumable upload)

        - Business category (vertical)

        - Website links (max 2)


        **Restrictions**:

        - About text: 1-139 chars, rendered emojis supported, hyperlinks won't
        be clickable, no markdown

        - Address: max 256 characters

        - Description: max 512 characters

        - Email: max 128 characters, valid email format

        - Websites: max 2 URLs, max 256 chars each, must include http:// or
        https://


        **Note**: Sandbox configurations are blocked (returns 403).
      operationId: updateBusinessProfile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessProfileUpdate'
            examples:
              basic_about:
                summary: Update About text
                value:
                  messaging_product: whatsapp
                  about: >-
                    Welcome to our store! We're here to help you 24/7 with all
                    your shopping needs.
              complete_profile:
                summary: Update all profile fields
                value:
                  messaging_product: whatsapp
                  about: Your trusted partner for quality products and services.
                  address: 123 Main Street, San Francisco, CA 94102
                  description: >-
                    Leading provider of premium products and services since
                    2010. We pride ourselves on exceptional customer service and
                    quality.
                  email: support@example.com
                  vertical: RETAIL
                  websites:
                    - https://www.example.com
                    - https://www.instagram.com/example
              with_profile_picture:
                summary: Update profile with picture
                description: Profile picture handle from resumable upload API
                value:
                  messaging_product: whatsapp
                  about: Premium spa and beauty services
                  vertical: BEAUTY
                  profile_picture_handle: h:resumable-upload-handle-abc123xyz789
              restaurant:
                summary: Restaurant profile
                value:
                  messaging_product: whatsapp
                  about: Authentic Italian cuisine in the heart of SF
                  address: 456 Market Street, San Francisco, CA 94103
                  description: >-
                    Family-owned Italian restaurant serving traditional recipes
                    passed down through generations. Reservations recommended.
                  email: reservations@restaurant.com
                  vertical: RESTAURANT
                  websites:
                    - https://www.restaurant.com
      responses:
        '200':
          description: Business profile updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessProfileUpdateResponse'
              examples:
                success:
                  summary: Successful update
                  value:
                    success: true
        '400':
          description: Bad request (validation errors)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalid_about_length:
                  summary: About text too long
                  value:
                    error:
                      message: About text must be between 1 and 139 characters
                      type: OAuthException
                      code: 400
                invalid_email:
                  summary: Invalid email format
                  value:
                    error:
                      message: Invalid email address format
                      type: OAuthException
                      code: 400
                too_many_websites:
                  summary: Too many URLs
                  value:
                    error:
                      message: Maximum of 2 websites allowed
                      type: OAuthException
                      code: 400
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden (sandbox configs blocked)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                sandbox_blocked:
                  summary: Sandbox configuration rejected
                  value:
                    error:
                      message: >-
                        Sandbox WhatsApp configurations cannot update business
                        profile
                      type: OAuthException
                      code: 403
        '404':
          description: Phone number not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    BusinessProfileUpdate:
      type: object
      required:
        - messaging_product
      properties:
        messaging_product:
          type: string
          enum:
            - whatsapp
          description: Always "whatsapp"
          example: whatsapp
        about:
          type: string
          minLength: 1
          maxLength: 139
          description: >
            Business About text (appears in profile beneath image and contact
            buttons).

            - Must be 1-139 characters

            - Rendered emojis supported (unicode values must be encoded)

            - Hyperlinks included but won't render as clickable

            - Markdown not supported
          example: Welcome to our store! We're here to help you 24/7.
        address:
          type: string
          maxLength: 256
          description: Business address (max 256 characters)
          example: 123 Main Street, San Francisco, CA 94102
        description:
          type: string
          maxLength: 512
          description: Business description (max 512 characters)
          example: >-
            Leading provider of premium products and services since 2010. We
            pride ourselves on exceptional customer service and quality.
        email:
          type: string
          format: email
          maxLength: 128
          description: Contact email address (max 128 characters)
          example: support@example.com
        profile_picture_handle:
          type: string
          description: Handle from resumable upload API for profile picture
          example: h:resumable-upload-handle-abc123xyz789
        vertical:
          $ref: '#/components/schemas/BusinessVertical'
        websites:
          type: array
          maxItems: 2
          items:
            type: string
            format: uri
            maxLength: 256
          description: >-
            URLs associated with business (max 2, 256 chars each, must include
            http:// or https://)
          example:
            - https://www.example.com
            - https://www.instagram.com/example
    BusinessProfileUpdateResponse:
      type: object
      required:
        - success
      properties:
        success:
          type: boolean
          description: Whether the update succeeded
          example: true
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - type
            - code
          properties:
            message:
              type: string
              description: Human-readable error message
              example: Invalid phone number format
            type:
              type: string
              description: Error category
              example: OAuthException
            code:
              type: integer
              description: Error code
              example: 400
            error_subcode:
              type: integer
              description: More specific error code
              example: 1001
            fbtrace_id:
              type: string
              description: Facebook trace ID for debugging
              example: AXk7s_8dR4eVHp9Kq2MmNlO
    BusinessVertical:
      type: string
      enum:
        - ALCOHOL
        - APPAREL
        - AUTO
        - BEAUTY
        - EDU
        - ENTERTAIN
        - EVENT_PLAN
        - FINANCE
        - GOVT
        - GROCERY
        - HEALTH
        - HOTEL
        - NONPROFIT
        - ONLINE_GAMBLING
        - OTC_DRUGS
        - OTHER
        - PHYSICAL_GAMBLING
        - PROF_SERVICES
        - RESTAURANT
        - RETAIL
        - TRAVEL
      description: |
        Business category displayed in WhatsApp profile:
        - ALCOHOL: Alcoholic Beverages
        - APPAREL: Clothing and Apparel
        - AUTO: Automotive
        - BEAUTY: Beauty, Spa and Salon
        - EDU: Education
        - ENTERTAIN: Entertainment
        - EVENT_PLAN: Event Planning and Service
        - FINANCE: Finance and Banking
        - GOVT: Public Service
        - GROCERY: Food and Grocery
        - HEALTH: Medical and Health
        - HOTEL: Hotel and Lodging
        - NONPROFIT: Non-profit
        - ONLINE_GAMBLING: Online Gambling & Gaming
        - OTC_DRUGS: Over-the-Counter Drugs
        - OTHER: Other
        - PHYSICAL_GAMBLING: Non-Online Gambling & Gaming
        - PROF_SERVICES: Professional Services
        - RESTAURANT: Restaurant
        - RETAIL: Shopping and Retail
        - TRAVEL: Travel and Transportation
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >
        Project API key for authentication. This is the recommended
        authentication method.


        Get your API key from the Kapso dashboard under Integrations > API keys.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |
        Bearer token authentication (alternative method).

        Note: X-API-Key authentication is recommended for the Meta Proxy API.

````