---
title: "Assign Resource to WhatsApp number"
method: POST
path: "/api/fabric/resources/{id}/whatsapp_numbers"
tags: ["WhatsApp Routes"]
---

# Assign Resource to WhatsApp number

`POST /api/fabric/resources/{id}/whatsapp_numbers`

Assigns an existing Resource as a WhatsApp number's calling or messaging handler, so every inbound call or message to the number runs that Resource. Find the number's ID with [List WhatsApp numbers](/docs/apis/rest/whatsapp/list-whatsapp-numbers). A number that already has an Address for the chosen channel is re-pointed at the new Resource; an Address it holds for the other channel is removed, because a WhatsApp number holds one Address at a time. Calling also requires voice to be enabled on the number, as described in [Enable voice on a WhatsApp number](/docs/platform/voice/whatsapp/enable-voice).

#### Permissions

The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_, _Messaging_, _Fax_, or _Video_.

[Learn more about API scopes](/docs/platform/your-signalwire-api-space).

## Path parameters

- `id` string, uuid, required — Universal Unique Identifier.

## Request body

- WhatsAppRouteAssignRequest
  - `whatsapp_number_id` string, uuid, required — Universal Unique Identifier.
  - `handler` 'calling' | 'messaging', required — Sets the handler to handle incoming `calls` or `messages`.

## Response `201`

The request has succeeded and a new resource has been created as a result.

- union — The Address created for the WhatsApp number on the Resource. Its `type` is `app` for most handlers, `room` for a Video Room, and `call` for a Resource that connects the call to a SIP endpoint or connector.
  - FabricAddressApp
    - `id` string, uuid, required — Universal Unique Identifier.
    - `name` string, required — Name of the Fabric Address.
    - `display_name` string, required — Display name of the Fabric Address.
    - `cover_url` string, required — Cover url of the Fabric Address.
    - `preview_url` string, required — Preview url of the Fabric Address.
    - `locked` boolean, required — Locks the Fabric Address. This is used to prevent the Fabric Address from accepting calls.
    - `channels` union, required
      - AudioChannel
        - `audio` string, required — Audio Channel of Fabric Address
      - MessagingChannel
        - `messaging` string, required — Messaging Channel of Fabric Address
      - VideoChannel
        - `video` string, required — Video Channel of Fabric Address
    - `created_at` string, date-time, required — Fabric Address Creation Date.
    - `type` 'app', required — The display type of a fabric address pointing to an application.
  - FabricAddressRoom
    - `id` string, uuid, required — Universal Unique Identifier.
    - `name` string, required — Name of the Fabric Address.
    - `display_name` string, required — Display name of the Fabric Address.
    - `cover_url` string, required — Cover url of the Fabric Address.
    - `preview_url` string, required — Preview url of the Fabric Address.
    - `locked` boolean, required — Locks the Fabric Address. This is used to prevent the Fabric Address from accepting calls.
    - `channels` union, required
      - AudioChannel
        - `audio` string, required — Audio Channel of Fabric Address
      - MessagingChannel
        - `messaging` string, required — Messaging Channel of Fabric Address
      - VideoChannel
        - `video` string, required — Video Channel of Fabric Address
    - `created_at` string, date-time, required — Fabric Address Creation Date.
    - `type` 'room', required — The display type of a fabric address pointing to a Conference Room.
  - FabricAddressCall
    - `id` string, uuid, required — Universal Unique Identifier.
    - `name` string, required — Name of the Fabric Address.
    - `display_name` string, required — Display name of the Fabric Address.
    - `cover_url` string, required — Cover url of the Fabric Address.
    - `preview_url` string, required — Preview url of the Fabric Address.
    - `locked` boolean, required — Locks the Fabric Address. This is used to prevent the Fabric Address from accepting calls.
    - `channels` union, required
      - AudioChannel
        - `audio` string, required — Audio Channel of Fabric Address
      - MessagingChannel
        - `messaging` string, required — Messaging Channel of Fabric Address
      - VideoChannel
        - `video` string, required — Video Channel of Fabric Address
    - `created_at` string, date-time, required — Fabric Address Creation Date.
    - `type` 'call', required — The display type of a fabric address pointing to call.

## Other responses

- `401` — Access is unauthorized.
- `404` — The server cannot find the requested resource.
- `422` — The request contains invalid parameters. See errors for details.
- `500` — An internal server error occurred.

## Changes

> 161 revisions in range; 3 could not be searched.

- **2026-09-17** `8befc4893d45` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/signalwire/apis/signalwire-rest-api/changes/api/fabric/resources/:id/whatsapp_numbers/post.md)

---

[API](https://skmtc.dev/signalwire/apis/signalwire-rest-api.md) · [All operations](https://skmtc.dev/signalwire/apis/signalwire-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalwire/apis/signalwire-rest-api/revisions/20ee0f568ece?raw)
