Arrow
Get started with Wazzup
Arrow
How to connect a messenger
Arrow
How to use Wazzup chats
Arrow
How to pay for the service
Arrow
Bitrix24
Arrow
Kommo
Arrow
Zoho CRM
Arrow
HubSpot
Arrow
Pipedrive
Arrow
Other CRMs
Arrow
How to sell even easier
Arrow
All about WABA
Arrow
For partners
Arrow
Public API
For partners
Arrow

Channels

A channel is a messenger or social media account connected to Wazzup to communicate with customers.
It's important to distinguish between a channel and a channel type (transport):

  • Channel — a specific messenger account used for conversations within Wazzup. For example, a specific WhatsApp account with a particular phone number or a specific Telegram bot.
  • Channel type (transport) — the category or platform of the channel, such as WhatsApp, WABA, Instagram, Telegram Bot etc.

In other words, you can have multiple channels of the same transport. For example, if you have two connected WhatsApp numbers, you have two channels (two different numbers) but only one channel type/transport (WhatsApp).

When working with the methods listed above, use the end‑customer's client_access_token (obtained via simplified authorization or OAuth) in your request headers: simplified authorization or OAuth: Authorization: Bearer client_access_token

Before you start working with channels, subscribe to webhooks — some channels cannot be connected, and you won't be notified of channel status changes without them.

List of methods

Creating a channel

Telegram, WhatsApp, WABA, and VKontakte channels can be connected via iframe

Connect at least one channel so the end‑customer can start messaging.

The process for connecting different channel types varies. For some, webhooks and additional methods will be required. Therefore, it is recommended to first subscribe to webhooks and review the steps for adding channels in this section.

Method POST /v2/channels
POST /v2/channels
│
├── transport *
└── credentials *
    ├── Avito
    │   └── code *
    ├── Instagram API
    │   ├── username *
    │   ├── page_id *
    │   ├── inst_id *
    │   └── user_token *
    ├── Telegram Bot
    │   └── telegram_token *
    └── MAX bot
        └── access_token *
Body Parameter. Required are marked with * Type Description
transport* string

Transport type: whatsapp, wapi (for WABA), telegram (for Telegram Bot), tgapi (for Telegram Personal), instAPI, viber, avito, max, maxbot

To connect VKontakte, use the method POST /v2/iframe-links/channels

credentials* object credentials Transport-specific connection data. Leave this empty for tgapi, wapi, whatsapp, viber, max

credentials (object)

Body Parameter. Required are marked with * Type Description
For Avito
code* string Avito authorization code
For Instagram API
username* string Instagram username
page_id* string Facebook page ID
inst_id* string Instagram user ID
user_token* string User authorization token
For Telegram Bot
telegram_token* string Telegram bot token
For MAX bot
access_token* string MAX bot token

Request example:

curl -L 'https://tech.wazzup24.com/v2/channels' \
-H 'Authorization: Bearer <client_access_token>' \
-H 'Content-Type: application/json' \
-d '{
"transport": "telegram",
"credentials": {
"telegram_token": "6945215375:AAHffBHffYyCEeT7ffVv0ff8AKhfz4"
}
}'

Response example:

{
"data": [
{
"channel_id": "0b1f701-1e21-4ae8-b105-5028f6a",
"transport": "telegram"
}
],
"meta": {
"timestamp": 1759483774
}
}

Result: A Wazzup channel has been created, but depending on the channel type, additional actions may be required.

For whatsapp, tgapi, viber, max
The webhook will deliver a QR code as a base64 string. Convert it to PNG and scan it with your phone to link the messenger to Wazzup.

Example:

{
"event": "channel.qr_update",
"data": [
{
"channel_id": "656cc30c-7d6d-4ec4-a3d9-87abbeaf92",
"platform": "whatsapp",
"qr_code": "data:image/png;base64,iVBORw0KGg....."
}
],
"meta": {
"idempotency_key": "daa4e9e6-ca92-41a2-a91b-8cf212f687",
"timestamp": 1760947913
}
}

For wapi
Channel creation request example:

{
"transport": "wapi",
"credentials": {}
}

The response body will contain a url — a redirect link for the user. The user must follow this link to connect their WABA.

Response example:

{
"data": [
{
"channel_id": "b7936d81-1053-4c1c-9b9c-6ef6cf2",
"transport": "wapi",
"url": "https://gs.tc.im/5GYyg"
}
],
"meta": {
"timestamp": 1762944046
}
}

For telegram and maxbot
To connect a Telegram Bot or MAX bot, you only need to provide the correct bot token.

Passing messenger 2FA

If two-factor authentication (2FA) is enabled on the messenger side, after the QR/login step, you will receive a channel.status_update webhook. It will contain channel_id: string, status: "init", reason: "wait_for_password".

In this case, submit the authentication code in the request below.

Method POST /v2/channels/{channel_id}/auth/2fa

Path parameters
channel_id — Channel ID.

Body Parameter. Required are marked with * Type Description
two_factor_code* string Authentication code
transport* string Transport type: whatsapp, wapi, telegram, tgapi, instAPI, viber, avito, max, maxbot

Request example:

curl -L 'https://tech.wazzup24.com/v2/channels/db72fd40-bc63-4d4b-9e14-a9a345712f/auth/2fa' \
-H 'Authorization: Bearer <client_access_token>' \
-H 'Content-Type: application/json' \
-d '{
"two_factor_code": "1234",
"transport": "tgapi"
}'

Response example:

{
"data": null,
"meta": {
"timestamp": 1759312346
}
}

Result: 2FA authentication has been passed. The channel is transitioning to the active status.

Channel reinitialization

Telegram, WhatsApp, WABA, and VKontakte channels can be reconnected via iframe

Use this method for channels already added to Wazzup that need to be reconnected — for example, when a channel's status changes to "Unauthorized".

You can monitor status changes via webhooks.

Method POST /v2/channels/{channel_id}/reinit

Path parameters
channel_id — Channel ID.

POST /v2/channels/{channel_id}/reinit
│
└── credentials *
    ├── Avito
    │   └── code *
    ├── Instagram API
    │   ├── username *
    │   ├── page_id *
    │   ├── inst_id *
    │   └── user_token *
    ├── Telegram Bot
    │   └── telegram_token *
    └── MAX bot
        └── access_token *
Body Parameter. Required are marked with * Type Description
credentials* object credentials

Transport-specific connection data. Leave this empty for tgapi, wapi, whatsapp, viber, max

To reconnect VKontakte, use the method POST /v2/iframe-links/channels

credentials (object)

Body Parameter. Required are marked with * Type Description
For Avito
code* string Avito authorization code
For Instagram API
username* string Instagram username
page_id* string Facebook page ID
inst_id* string Instagram user ID
user_token* string User authorization token
For Telegram Bot
telegram_token* string Telegram bot token
For MAX bot
access_token* string MAX bot token

Example:

curl -L 'https://tech.wazzup24.com/v2/channels/db72fd40-bc63-4d4b-9e14-a9a3457182f/reinit' \
-H 'Authorization: Bearer <client_access_token>' \
-H 'Content-Type: application/json' \
-d '{
"credentials": {
"telegram_token": "69321575:AAEOaVAKzUlTtkoSVVcciE3jIpgHd8"
}
}'

Response example:

{
"data": [
{
"channel_id": "db72fd40-bc63-4d4b-9e14-a9a3457182f",
"transport": "telegram",
"state": "active",
"phone": "just_a_test_bot",
"messenger_id": "just_a_test_bot",
"tariff": "max",
"name": "just_a_test_bot"
}
],
"meta": {
"timestamp": 1763041358
}
}

Result: The channel transitions to the active status or the init status, and in either case you may receive a webhook containing a QR for scanning.

Get channel information

This method lets you check if a channel is operational, see its current status, view its tariff plan, and retrieve other channel-related information.

Method GET /v2/channels/{channel_id}

Path parameters
channel_id — Channel ID.

Example:

curl -L 'https://tech.wazzup24.com/v2/channels/{channel_id}' \
-H 'Authorization: Bearer <client_access_token>'

Response example:

{
"data": [
{
"channel_id": "0b1f7601-1e21-4ae8-b105-51d028182a",
"transport": "telegram",
"state": "active",
"status": "active",
"reason": "null",
"phone": "My_Ferret2_Bot",
"messenger_id": "My_Ferret2_Bot",
"tariff": "max",
"name": "My_Ferret2_Bot"
}
],
"meta": {
"timestamp": 1759485254
}
}
data[]
├── channel_id *
├── transport *
├── state *
├── status *
├── reason *
├── phone *
├── username *
├── messenger_id *
├── name *
├── url
└── tier *
Response Parameter. Required are marked with * Type Description
data array(object) data List of channels

data (object)

Response Parameter. Required are marked with * Type Description
channel_id* string Channel ID
transport* string Channel transport
state* string Deprecated parameter. Previously used to show the channel state; this information is now provided in the status and reason parameters
status* string Channel status. Possible values: active, init, disabled
reason* string The reason why the channel is in a specific status. Possible values are described below the table
phone* string Channel phone number
username* string Channel username
messenger_id* string Channel identifier in the messenger
name* string Channel name
url string Channel URL or channel authorization URL
tier* string Channel WABA tier. Possible values: TIER_0, TIER_1K, TIER_10K, TIER_100K, TIER_50, TIER_250, TIER_UNLIMITED

Possible reason values depending on status:

  • With status: "active"reason is always null
  • With status: "init"reason: wait_for_password, wait_for_code, qr, sync or null
  • With status: "disabled"reason: blocked, not_enough_money, rejected, unauthorized, foreignphone, qridle, openelsewhere or null
Channel status Description
active Channel is active
init Channel is starting up
disabled Channel is disabled: removed from subscription or deleted while preserving messages
reason value Description
qridle, qr QR code needs to be scanned
openelsewhere Channel is authorized in another Wazzup account
not_enough_money Channel is unpaid
foreignphone QR scanned by a different account in the messenger (different phone number)
unauthorized Unauthorized
wait_for_password Two-factor authentication password required
blocked Facebook blocked the WABA channel
rejected WABA channel rejected

Result: You will receive information about a previously created channel.

Get a list of all channels

Method GET /v2/channels

Example:

curl -L 'https://tech.wazzup24.com/v2/channels' \
-H 'Authorization: Bearer <client_access_token>'

Response example:

{
"data": [
// Array of objects. See the example above with getting a channel by channel_id
],
"meta": {
"timestamp": 1759485254
}
}

Result: The response contains a list of all channels in the account.

Delete a channel by its channel_id

This method is used to delete a channel the end‑customer is no longer using for messaging. You can choose to keep the message history or delete it.

Method DELETE /v2/channels/{channel_id}

Path parameters
channel_id — Channel ID.

Query parameter
delete_chats — specify =true if chats should be deleted.

Example:

curl -X DELETE 'https://tech.wazzup24.com/v2/channels/{channel_id}' \
-H 'Authorization: Bearer <client_access_token>'

Response example:

{
"data": null,
"meta": {
"timestamp": 1759485643
}
}

Result: Channel channel_id has been deleted.

Generate a WhatsApp pairing code

This method allows you to connect a WhatsApp channel not via QR code, but using an 8‑digit pairing code to be entered in the WhatsApp app.

Send the request immediately after receiving the webhook with the QR code. If the QR code has expired, the method will return an error.

Method POST /v2/channels/{channel_id}/pairing-code

Path parameters
channel_id — Channel ID.

Body Parameter. Required are marked with * Type Description
pairing_phone string Must be provided without the plus sign ('+') (e.g., +1 (234) 567-8901 → 12345678901)
transport* string Channel transport: whatsapp

Request example for WhatsApp code:

curl -L 'https://tech.wazzup24.com/v2/channels/ab59105d-5e8d-487a-9ad1-e21bc6fe64a6/pairing-code' \
-H 'Authorization: Bearer <client_access_token>' \
-H 'Content-Type: application/json' \
-d '{
"pairing_phone": "79999999999",
"transport": "whatsapp"
}'

Response example:

{
"data": [
{
"pairing_code": "LYY1WZNL",
"pairing_phone": "79999999999"
}
],
"meta": {
"timestamp": 1759319225
}
}

Result: You have received the code for WhatsApp channel authorization. Enter it in the mobile WhatsApp application.