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

# Start a hosted WhatsApp sign-up

> Answers 201 with a link to a page that runs Meta Embedded Signup for the business. The link works once, for 15 minutes. When the business finishes, the page sends it to the WhatsApp return URL that you set in the partner console, and the event `channel.connected` is sent to your webhook. A request without a return URL set answers 409 with code `no_return_url`. Needs the `channels:write` scope.



## OpenAPI

````yaml /openapi/partner.yaml post /api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/
openapi: 3.1.0
info:
  title: ImpelLabs Partner API
  version: '1'
  description: >-
    The Partner API provisions customer businesses (tenants) and runs their
    channels, conversations and templates from your own product. Call it from
    your server with a partner key. Every path ends with a slash.
servers:
  - url: https://api.impellabs.tech
security:
  - bearer: []
tags:
  - name: Keys
    description: Your partner API keys.
  - name: Tenants
    description: Customer businesses, their channels, conversations and templates.
  - name: Webhooks
    description: Where your tenants' events go.
  - name: WhatsApp sign-up
    description: The settings of the hosted WhatsApp sign-up.
paths:
  /api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/:
    post:
      tags:
        - Tenants
      summary: Start a hosted WhatsApp sign-up
      description: >-
        Answers 201 with a link to a page that runs Meta Embedded Signup for the
        business. The link works once, for 15 minutes. When the business
        finishes, the page sends it to the WhatsApp return URL that you set in
        the partner console, and the event `channel.connected` is sent to your
        webhook. A request without a return URL set answers 409 with code
        `no_return_url`. Needs the `channels:write` scope.
      operationId: >-
        post_api_v1_partner_tenants_external_ref_channels_whatsapp_signup_session
      parameters:
        - name: external_ref
          in: path
          required: true
          schema:
            type: string
          description: Your own id for the customer business, set when you created it.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                state:
                  type: string
                  description: >-
                    Text that you get back on the return address. 512 characters
                    at most.
            example:
              state: order-77
        required: false
      responses:
        '201':
          description: Success
          content:
            application/json:
              example:
                url: https://app.impellabs.tech/connect/TOKEN
                expires_at: '2026-01-15T09:45:00+00:00'
                session_id: 1a2b3c4d-0000-4000-8000-000000000000
        '400':
          $ref: '#/components/responses/Invalid'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        4XX:
          description: The request is not valid or not allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  responses:
    Invalid:
      description: >-
        A field is missing or wrong. The body names each field: {"field": "what
        to fix"}.
    Unauthorized:
      description: The credentials are missing, wrong, expired or revoked.
    Forbidden:
      description: These credentials may not do this.
    NotFound:
      description: There is no such row, or these credentials cannot see it.
  schemas:
    Error:
      type: object
      description: >-
        An error. Most errors carry `detail`. Some carry `error` with `code` and
        `message`.
      properties:
        detail:
          type: string
        code:
          type: string
        field:
          type: string
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.