Skip to content

Groups

Group chats: info, members, renaming, invite links. · 38 endpoints

The account's groups (from the DB, most recently active first)

GET/api/v1/accounts/{accountId}/groupsScope: chat:read

Parameters

accountId
path · required
string
max 200
Account ID (accounts.zalo_id). Facebook uses the Facebook ID, Telegram uses the Telegram account ID.
limit
query · optional
integer
≥ 1 · ≤ 200 · default 50
Maximum number of records (1–200)
offset
query · optional
integer
≥ 0 · default 0
Skip the first N records
search
query · optional
string
max 200

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups" \
  -H "Authorization: Bearer dpk_xxx"

Create a Zalo group

POST/api/v1/accounts/{accountId}/groupsScope: chat:manage

Parameters

accountId
path · required
string
max 200
Account ID (accounts.zalo_id). Facebook uses the Facebook ID, Telegram uses the Telegram account ID.

Request body (JSON)

name
required
string
max 200
member_ids
required
string[]
max 100 items

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","member_ids":[]}'

Group info from the channel (members, admins, settings)

GET/api/v1/accounts/{accountId}/groups/{groupId}Scope: chat:read

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}" \
  -H "Authorization: Bearer dpk_xxx"

Rename the group

PATCH/api/v1/accounts/{accountId}/groups/{groupId}Scope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

name
required
string
max 200

Example request

bash
curl -X PATCH "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'

Disband the group (Zalo; you must be the group owner)

DELETE/api/v1/accounts/{accountId}/groups/{groupId}Scope: chat:manage

Cannot be undone: ?confirm=true is required.

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)
confirm
query · optional
boolean
default false

Example request

bash
curl -X DELETE "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}" \
  -H "Authorization: Bearer dpk_xxx"

Group members (Zalo: the saved list; Telegram: fetched from the channel)

GET/api/v1/accounts/{accountId}/groups/{groupId}/membersScope: chat:read

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)
limit
query · optional
integer
≥ 1 · ≤ 1000 · default 200

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/members" \
  -H "Authorization: Bearer dpk_xxx"

Add members to the group

POST/api/v1/accounts/{accountId}/groups/{groupId}/membersScope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

user_ids
required
string[]
max 50 items

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/members" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"user_ids":[]}'

Remove a member from the group

DELETE/api/v1/accounts/{accountId}/groups/{groupId}/members/{userId}Scope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
userId
path · required
string
max 200

Example request

bash
curl -X DELETE "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/members/{userId}" \
  -H "Authorization: Bearer dpk_xxx"

Leave the group

POST/api/v1/accounts/{accountId}/groups/{groupId}/leaveScope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/leave" \
  -H "Authorization: Bearer dpk_xxx"

Grant admin rights (Zalo: group deputy)

POST/api/v1/accounts/{accountId}/groups/{groupId}/adminsScope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

user_id
required
string
max 200

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/admins" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"string"}'

Revoke admin rights

DELETE/api/v1/accounts/{accountId}/groups/{groupId}/admins/{userId}Scope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
userId
path · required
string
max 200

Example request

bash
curl -X DELETE "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/admins/{userId}" \
  -H "Authorization: Bearer dpk_xxx"

Transfer group ownership (Zalo)

POST/api/v1/accounts/{accountId}/groups/{groupId}/ownerScope: chat:manage

You will lose group ownership: confirm: true is required.

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

user_id
required
string
max 200
confirm
optional
boolean
default false

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/owner" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"string","confirm":false}'

Change the group photo (Zalo, Telegram)

PUT/api/v1/accounts/{accountId}/groups/{groupId}/avatarScope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

upload_id
optional
string
library_uuid
optional
string
url
optional
string (uri)

Example request

bash
curl -X PUT "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/avatar" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"upload_id":"string","library_uuid":"string","url":"https://example.com/file.jpg"}'

Zalo group settings (lock renaming, member approval, only admins can send messages…)

GET/api/v1/accounts/{accountId}/groups/{groupId}/settingsScope: chat:read

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/settings" \
  -H "Authorization: Bearer dpk_xxx"

Update group settings (Zalo; Facebook: join_approval only)

PATCH/api/v1/accounts/{accountId}/groups/{groupId}/settingsScope: chat:manage

Send only the fields you want to change; other settings stay as they are (the current settings are read first, like toggling individual items in the app).

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

block_name
optional
boolean
sign_admin_msg
optional
boolean
set_topic_only
optional
boolean
enable_msg_history
optional
boolean
join_approval
optional
boolean
lock_create_post
optional
boolean
lock_create_poll
optional
boolean
lock_send_msg
optional
boolean
lock_view_member
optional
boolean

Example request

bash
curl -X PATCH "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/settings" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"join_approval":true,"lock_send_msg":false}'

People waiting for approval to join the group (Zalo)

GET/api/v1/accounts/{accountId}/groups/{groupId}/pending-membersScope: chat:read

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/pending-members" \
  -H "Authorization: Bearer dpk_xxx"

Approve or reject people asking to join the group (Zalo, Facebook)

POST/api/v1/accounts/{accountId}/groups/{groupId}/pending-members/reviewScope: chat:manage

Processes each person in turn, like the "Approve all" button (Duyệt tất cả) in the app; results tells you whether each one succeeded or failed.

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

user_ids
required
string[]
max 100 items
approve
required
boolean

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/pending-members/review" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"user_ids":[],"approve":false}'

Members blocked from the group (Zalo)

GET/api/v1/accounts/{accountId}/groups/{groupId}/blocked-membersScope: chat:read

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/blocked-members" \
  -H "Authorization: Bearer dpk_xxx"

Block a member from the group (Zalo; Telegram/Facebook: removes them)

POST/api/v1/accounts/{accountId}/groups/{groupId}/blocked-membersScope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

user_id
required
string
max 200

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/blocked-members" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"string"}'

Unblock a group member (Zalo, Telegram bot)

DELETE/api/v1/accounts/{accountId}/groups/{groupId}/blocked-members/{userId}Scope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
userId
path · required
string
max 200

Example request

bash
curl -X DELETE "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/blocked-members/{userId}" \
  -H "Authorization: Bearer dpk_xxx"

Preview a group from its invite link (Zalo): name, member count, a page of members

GET/api/v1/accounts/{accountId}/group-links/infoScope: chat:read

Parameters

accountId
path · required
string
max 200
Account ID (accounts.zalo_id). Facebook uses the Facebook ID, Telegram uses the Telegram account ID.
link
query · required
string
max 300
vd https://zalo.me/g/abcxyz
page
query · optional
integer
≥ 1 · ≤ 500 · default 1

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/group-links/info" \
  -H "Authorization: Bearer dpk_xxx"

Invite one person to several groups (Zalo)

POST/api/v1/accounts/{accountId}/users/{userId}/invite-to-groupsScope: chat:manage

Parameters

accountId
path · required
string
max 200
userId
path · required
string
max 200
User ID on the channel

Request body (JSON)

group_ids
required
string[]
max 50 items

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/users/{userId}/invite-to-groups" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"group_ids":[]}'

Create a poll in the group (Zalo, Facebook, Telegram bot)

POST/api/v1/accounts/{accountId}/groups/{groupId}/pollsScope: chat:send

The multiple/allow_add_option/hide_vote_preview/anonymous/expires_at options apply to Zalo only.

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

question
required
string
max 300
options
required
string[]
max 20 items
multiple
optional
boolean
default false
allow_add_option
optional
boolean
default true
hide_vote_preview
optional
boolean
default false
anonymous
optional
boolean
default false
expires_at
optional
integer
≥ 0
Epoch ms; empty = never expires

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/polls" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"question":"Chốt lịch họp tuần sau?","options":["Thứ 3","Thứ 5"],"multiple":false}'

Poll details: options, vote counts, voters (Zalo)

GET/api/v1/accounts/{accountId}/polls/{pollId}Scope: chat:read

Parameters

accountId
path · required
string
max 200
pollId
path · required
string
max 200

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/polls/{pollId}" \
  -H "Authorization: Bearer dpk_xxx"

Vote (Zalo, Facebook). Empty array = withdraw your vote (Zalo)

POST/api/v1/accounts/{accountId}/polls/{pollId}/votesScope: chat:send

Parameters

accountId
path · required
string
max 200
pollId
path · required
string
max 200

Request body (JSON)

option_ids
required
integer | string[]
max 20 items

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/polls/{pollId}/votes" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"option_ids":[]}'

Lock the poll (Zalo, creator only)

POST/api/v1/accounts/{accountId}/polls/{pollId}/lockScope: chat:manage

Parameters

accountId
path · required
string
max 200
pollId
path · required
string
max 200

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/polls/{pollId}/lock" \
  -H "Authorization: Bearer dpk_xxx"

Add options to the poll (Zalo)

POST/api/v1/accounts/{accountId}/polls/{pollId}/optionsScope: chat:send

Parameters

accountId
path · required
string
max 200
pollId
path · required
string
max 200

Request body (JSON)

option
required
string
max 200

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/polls/{pollId}/options" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"option":"string"}'

Create a group note (Zalo), optionally pinned to the top

POST/api/v1/accounts/{accountId}/groups/{groupId}/notesScope: chat:send

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

title
required
string
max 2000
pin
optional
boolean
default false

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/notes" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","pin":false}'

Update a group note (Zalo)

PATCH/api/v1/accounts/{accountId}/groups/{groupId}/notes/{noteId}Scope: chat:send

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
noteId
path · required
string
max 200
The note's topicId

Request body (JSON)

title
required
string
max 2000
pin
optional
boolean
default true

Example request

bash
curl -X PATCH "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/notes/{noteId}" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","pin":true}'

Topics (forum topics) of a Telegram supergroup

GET/api/v1/accounts/{accountId}/groups/{groupId}/topicsScope: chat:read

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/topics" \
  -H "Authorization: Bearer dpk_xxx"

Create a topic (Telegram)

POST/api/v1/accounts/{accountId}/groups/{groupId}/topicsScope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
Group ID (thread_id)

Request body (JSON)

title
required
string
max 128
icon_color
optional
integer
≥ 0 · ≤ 16777215
icon_emoji_id
optional
string
max 64

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/topics" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","icon_color":0,"icon_emoji_id":"string"}'

Edit / close / pin a topic (Telegram)

PATCH/api/v1/accounts/{accountId}/groups/{groupId}/topics/{topicId}Scope: chat:manage

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
topicId
path · required
string
max 200
ID topic (root message id)

Request body (JSON)

title
optional
string
max 128
icon_emoji_id
optional
string
max 64
closed
optional
boolean
pinned
optional
boolean

Example request

bash
curl -X PATCH "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/topics/{topicId}" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","icon_emoji_id":"string","closed":false}'

Latest messages of a topic, fetched directly from Telegram

GET/api/v1/accounts/{accountId}/groups/{groupId}/topics/{topicId}/messagesScope: chat:read

Messages already saved in Deplao are read with GET …/conversations/{groupId}/messages?topic_id=.

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
topicId
path · required
string
max 200
ID topic (root message id)
limit
query · optional
integer
≥ 1 · ≤ 100 · default 50

Example request

bash
curl "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/topics/{topicId}/messages" \
  -H "Authorization: Bearer dpk_xxx"

Send a message to a topic (Telegram): text or one file

POST/api/v1/accounts/{accountId}/groups/{groupId}/topics/{topicId}/messagesScope: chat:send

Parameters

accountId
path · required
string
max 200
groupId
path · required
string
max 200
topicId
path · required
string
max 200
ID topic (root message id)

Request body (JSON)

text
optional
string
max 4096
Text; when a file is attached, it becomes the caption
upload_id
optional
string
library_uuid
optional
string
url
optional
string (uri)

Example request

bash
curl -X POST "http://127.0.0.1:9900/api/v1/accounts/{accountId}/groups/{groupId}/topics/{topicId}/messages" \
  -H "Authorization: Bearer dpk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"text":"string","upload_id":"string","library_uuid":"string"}'