API Documentation

Channels

Use channel APIs to list, create, search, preview, and read channel messages. Sending text, media, voice, and poll messages to channels uses the existing message APIs with a channel ID ending in @newsletter.

Common rules

Authentication

Send Authorization: Bearer YOUR_API_KEY with every request.

Session

Use the dashboard session name or session ID as {session}.

Channel ID

Use channel IDs like {channel_id}@newsletter. URL-encode @ as needed in path values.

Endpoints

Method Endpoint Purpose
GET https://chatflow.zeltacode.com/api/v1/channels Return owned and subscribed channels for a connected session. Add role to filter by OWNER, ADMIN, or SUBSCRIBER.
POST https://chatflow.zeltacode.com/api/v1/channels Create a new channel from a connected session.
GET https://chatflow.zeltacode.com/api/v1/channels/{channel_id} Return channel details by channel ID.
GET https://chatflow.zeltacode.com/api/v1/channels/{invite_code} Return channel details by invite code from the channel URL.
POST https://chatflow.zeltacode.com/api/v1/channels/search/by-view Search public channels by a catalog view such as RECOMMENDED.
POST https://chatflow.zeltacode.com/api/v1/channels/search/by-text Search public channels by text.
GET https://chatflow.zeltacode.com/api/v1/channels/search/views Return available channel search views.
GET https://chatflow.zeltacode.com/api/v1/channels/search/countries Return available countries for channel search.
GET https://chatflow.zeltacode.com/api/v1/channels/search/categories Return available categories for channel search.
GET https://chatflow.zeltacode.com/api/v1/channels/{invite_code}/messages/preview Return preview messages for a public channel by invite code or channel ID.
GET https://chatflow.zeltacode.com/api/v1/channels/{channel_id}/messages Return messages from a channel by channel ID.

1. Get all channels

Return owned and subscribed channels for a connected session. Add role to filter by OWNER, ADMIN, or SUBSCRIBER.

API name

Get all channels

Purpose

Return owned and subscribed channels for a connected session. Add role to filter by OWNER, ADMIN, or SUBSCRIBER. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels?session={session}&role=OWNER" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}",
    "role": "OWNER"
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "list",
        "session": "{session}",
        "channel_id": null,
        "channel_response": [
            {
                "id": "{channel_id}@newsletter",
                "name": "Company Updates",
                "description": "Latest announcements",
                "invite": "https://whatsapp.com/channel/{invite_code}",
                "picture": null,
                "verified": false,
                "role": "OWNER"
            }
        ]
    }
}

2. Create channel

Create a new channel from a connected session.

API name

Create channel

Purpose

Create a new channel from a connected session. Use it when your application needs channel data without opening the dashboard.

Endpoint

POST https://chatflow.zeltacode.com/api/v1/channels
curl
curl -X POST "https://chatflow.zeltacode.com/api/v1/channels" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "{session}",
    "name": "Company Updates",
    "description": "Latest announcements",
    "picture": {
        "mimetype": "image/jpeg",
        "filename": "channel.jpg",
        "url": "https://example.com/channel.jpg"
    }
}'
JSON body
{
    "session": "{session}",
    "name": "Company Updates",
    "description": "Latest announcements",
    "picture": {
        "mimetype": "image/jpeg",
        "filename": "channel.jpg",
        "url": "https://example.com/channel.jpg"
    }
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "create",
        "session": "{session}",
        "channel_id": null,
        "channel_response": {
            "id": "{channel_id}@newsletter",
            "name": "Company Updates",
            "description": "Latest announcements",
            "invite": "https://whatsapp.com/channel/{invite_code}",
            "role": "OWNER"
        }
    }
}

3. Get channel by id

Return channel details by channel ID.

API name

Get channel by id

Purpose

Return channel details by channel ID. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/{channel_id}
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/{channel_id}@newsletter?session={session}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}"
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "get",
        "session": "{session}",
        "channel_id": "{channel_id}@newsletter",
        "channel_response": {
            "id": "{channel_id}@newsletter",
            "name": "Company Updates",
            "description": "Latest announcements",
            "invite": "https://whatsapp.com/channel/{invite_code}",
            "verified": false,
            "role": "OWNER",
            "subscribersCount": 120
        }
    }
}

4. Get channel by invite code

Return channel details by invite code from the channel URL.

API name

Get channel by invite code

Purpose

Return channel details by invite code from the channel URL. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/{invite_code}
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/{invite_code}?session={session}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}"
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "get",
        "session": "{session}",
        "channel_id": null,
        "channel_response": {
            "id": "{channel_id}@newsletter",
            "name": "Company Updates",
            "description": "Latest announcements",
            "invite": "https://whatsapp.com/channel/{invite_code}",
            "verified": false,
            "role": "SUBSCRIBER"
        }
    }
}

5. Search channels by view

Search public channels by a catalog view such as RECOMMENDED.

API name

Search channels by view

Purpose

Search public channels by a catalog view such as RECOMMENDED. Use it when your application needs channel data without opening the dashboard.

Endpoint

POST https://chatflow.zeltacode.com/api/v1/channels/search/by-view
curl
curl -X POST "https://chatflow.zeltacode.com/api/v1/channels/search/by-view" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "{session}",
    "view": "RECOMMENDED",
    "countries": [
        "US"
    ],
    "categories": [],
    "limit": 50,
    "startCursor": ""
}'
JSON body
{
    "session": "{session}",
    "view": "RECOMMENDED",
    "countries": [
        "US"
    ],
    "categories": [],
    "limit": 50,
    "startCursor": ""
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "search-by-view",
        "session": "{session}",
        "channel_id": null,
        "channel_response": {
            "page": {
                "startCursor": null,
                "endCursor": "next_cursor",
                "hasNextPage": true
            },
            "channels": [
                {
                    "id": "{channel_id}@newsletter",
                    "name": "Public Channel",
                    "invite": "https://whatsapp.com/channel/{invite_code}",
                    "verified": true,
                    "subscribersCount": 1200
                }
            ]
        }
    }
}

6. Search channels by text

Search public channels by text.

API name

Search channels by text

Purpose

Search public channels by text. Use it when your application needs channel data without opening the dashboard.

Endpoint

POST https://chatflow.zeltacode.com/api/v1/channels/search/by-text
curl
curl -X POST "https://chatflow.zeltacode.com/api/v1/channels/search/by-text" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "{session}",
    "text": "news",
    "categories": [],
    "limit": 50,
    "startCursor": ""
}'
JSON body
{
    "session": "{session}",
    "text": "news",
    "categories": [],
    "limit": 50,
    "startCursor": ""
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "search-by-text",
        "session": "{session}",
        "channel_id": null,
        "channel_response": {
            "page": {
                "endCursor": null,
                "hasNextPage": false
            },
            "channels": [
                {
                    "id": "{channel_id}@newsletter",
                    "name": "News Channel",
                    "invite": "https://whatsapp.com/channel/{invite_code}"
                }
            ]
        }
    }
}

7. Get search views

Return available channel search views.

API name

Get search views

Purpose

Return available channel search views. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/search/views
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/search/views?session={session}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}"
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "search-views",
        "session": "{session}",
        "channel_id": null,
        "channel_response": [
            {
                "value": "RECOMMENDED",
                "name": "Explore"
            }
        ]
    }
}

8. Get search countries

Return available countries for channel search.

API name

Get search countries

Purpose

Return available countries for channel search. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/search/countries
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/search/countries?session={session}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}"
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "search-countries",
        "session": "{session}",
        "channel_id": null,
        "channel_response": [
            {
                "code": "US",
                "name": "United States"
            }
        ]
    }
}

9. Get search categories

Return available categories for channel search.

API name

Get search categories

Purpose

Return available categories for channel search. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/search/categories
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/search/categories?session={session}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}"
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "search-categories",
        "session": "{session}",
        "channel_id": null,
        "channel_response": [
            {
                "value": "BUSINESS",
                "name": "Business"
            }
        ]
    }
}

10. Get channel preview messages

Return preview messages for a public channel by invite code or channel ID.

API name

Get channel preview messages

Purpose

Return preview messages for a public channel by invite code or channel ID. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/{invite_code}/messages/preview
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/{invite_code}/messages/preview?session={session}&downloadMedia=0&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}",
    "downloadMedia": false,
    "limit": 100
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "preview-messages",
        "session": "{session}",
        "channel_id": null,
        "channel_response": [
            {
                "reactions": {
                    "like": 10
                },
                "viewCount": 100,
                "message": {
                    "id": "false_{channel_id}@newsletter_MESSAGE_ID",
                    "body": "Preview message"
                }
            }
        ]
    }
}

11. Get channel messages

Return messages from a channel by channel ID.

API name

Get channel messages

Purpose

Return messages from a channel by channel ID. Use it when your application needs channel data without opening the dashboard.

Endpoint

GET https://chatflow.zeltacode.com/api/v1/channels/{channel_id}/messages
curl
curl -X GET "https://chatflow.zeltacode.com/api/v1/channels/{channel_id}@newsletter/messages?session={session}&downloadMedia=1&limit=100&offset=0" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Query parameters
{
    "session": "{session}",
    "downloadMedia": true,
    "limit": 100,
    "offset": 0
}
Example response
{
    "success": true,
    "message": "Channel action completed.",
    "data": {
        "action": "messages",
        "session": "{session}",
        "channel_id": "{channel_id}@newsletter",
        "channel_response": [
            {
                "id": "false_{channel_id}@newsletter_MESSAGE_ID",
                "from": "{channel_id}@newsletter",
                "fromMe": true,
                "body": "Channel message"
            }
        ]
    }
}