ChatKomodo Docs Home Sign in

API reference · WhatsApp features

Groups

Groups of a connected device: list, create, rename, members, admins, invite link, disappearing messages.

List groups

GET/v1/sessions/{sessionId}/groups

Groups the account participates in, sorted by name. The list is empty when the session has no live connection or WhatsApp does not answer within 8 seconds (such failures are not reported as errors).

Path parameters

  • sessionIdstringrequired
    Session (device) id

Responses

  • 200Groups
    Response fields
    • groupsarray of objectrequired
    • groups[].jidstringrequired
    • groups[].namestringrequired
    • groups[].sizeintegerrequired
      Number of participants
    • groups[].descstring | nullrequired
      Group description
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions
  • 404Unknown session, or a session of another tenant
Request
curl "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY"
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.get(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "groups": [
    {
      "jid": "[email protected]",
      "name": "Example",
      "size": 12,
      "desc": "string"
    }
  ]
}

Create a group

POST/v1/sessions/{sessionId}/groups/create

Creates a WhatsApp group with the given members.

Path parameters

  • sessionIdstringrequired
    Session (device) id

Request body

  • subjectstringrequired
    Group name
  • participantsarray of stringrequired
    JIDs of the initial members, <digits>@s.whatsapp.net

Responses

  • 200Group created
    Response fields
    • idstringrequired
      Group JID
    • subjectstringrequired
      Group name
    • ownerstring
    • creationinteger
      Creation time as reported by WhatsApp (Unix epoch)
    • descstring
      Group description
    • sizeinteger
    • restrictboolean
      Only admins can change group settings
    • announceboolean
      Only admins can write
    • ephemeralDurationinteger
      Disappearing-messages timer in seconds
    • participantsarray of objectrequired
    • participants[].idstringrequired
    • participants[].adminstring | null
      admin, superadmin or null
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/create" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "Support team",
  "participants": [
    "+447700900123",
    "+12025550123"
  ]
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/create', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "subject": "Support team",
    "participants": [
      "+447700900123",
      "+12025550123"
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/create",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "subject": "Support team",
        "participants": [
            "+447700900123",
            "+12025550123",
        ],
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/create', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'subject' => 'Support team',
        'participants' => [
            '+447700900123',
            '+12025550123',
        ],
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "id": "01JA5V6Q8M2H7G4K9P3T0R1S2X",
  "subject": "Support team",
  "owner": "string",
  "creation": 1,
  "desc": "string",
  "size": 12,
  "restrict": true,
  "announce": true,
  "ephemeralDuration": 604800,
  "participants": [
    {
      "id": "01JA5V6Q8M2H7G4K9P3T0R1S2X",
      "admin": "string"
    }
  ]
}

Get group details

GET/v1/sessions/{sessionId}/groups/{gid}/metadata

Returns the metadata WhatsApp holds for the group, including its participants.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Responses

  • 200Group metadata
    Response fields
    • idstringrequired
      Group JID
    • subjectstringrequired
      Group name
    • ownerstring
    • creationinteger
      Creation time as reported by WhatsApp (Unix epoch)
    • descstring
      Group description
    • sizeinteger
    • restrictboolean
      Only admins can change group settings
    • announceboolean
      Only admins can write
    • ephemeralDurationinteger
      Disappearing-messages timer in seconds
    • participantsarray of objectrequired
    • participants[].idstringrequired
    • participants[].adminstring | null
      admin, superadmin or null
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/metadata" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY"
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/metadata', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.get(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/metadata",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/metadata', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "id": "01JA5V6Q8M2H7G4K9P3T0R1S2X",
  "subject": "Support team",
  "owner": "string",
  "creation": 1,
  "desc": "string",
  "size": 12,
  "restrict": true,
  "announce": true,
  "ephemeralDuration": 604800,
  "participants": [
    {
      "id": "01JA5V6Q8M2H7G4K9P3T0R1S2X",
      "admin": "string"
    }
  ]
}

Rename a group

PUT/v1/sessions/{sessionId}/groups/{gid}/subject

Changes the group name.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • subjectstringrequired
    New group name

Responses

  • 200Renamed
    Response fields
    • okbooleanrequired
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X PUT "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/subject" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "Support team"
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/subject', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "subject": "Support team"
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.put(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/subject",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "subject": "Support team",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('PUT', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/subject', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'subject' => 'Support team',
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}

Change a group description

PUT/v1/sessions/{sessionId}/groups/{gid}/description

Changes the group description.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • descriptionstringrequired
    New description

Responses

  • 200Updated
    Response fields
    • okbooleanrequired
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X PUT "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/description" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Short description"
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/description', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "description": "Short description"
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.put(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/description",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "description": "Short description",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('PUT', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/description', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'description' => 'Short description',
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}

Set group disappearing messages

PUT/v1/sessions/{sessionId}/groups/{gid}/ephemeral

Turns the disappearing-messages timer of the group on or off on WhatsApp.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • expirationintegerrequired
    Timer in seconds: 0 turns it off; WhatsApp uses 86400 (24 hours), 604800 (7 days) and 7776000 (90 days)

Responses

  • 200Updated
    Response fields
    • okbooleanrequired
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X PUT "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/ephemeral" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "expiration": 604800
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/ephemeral', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "expiration": 604800
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.put(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/ephemeral",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "expiration": 604800,
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('PUT', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/ephemeral', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'expiration' => 604800,
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}

Get the group invite link

GET/v1/sessions/{sessionId}/groups/{gid}/invite

Returns the current invite link of the group.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Responses

  • 200Invite link
    Response fields
    • invite_linkstringrequired
      https://chat.whatsapp.com/<code>
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/invite" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY"
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/invite', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.get(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/invite",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/invite', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "invite_link": "https://example.com/file.jpg"
}

Leave a group

POST/v1/sessions/{sessionId}/groups/{gid}/leave

Makes the account leave the group.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Responses

  • 200Left
    Response fields
    • okbooleanrequired
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/leave" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY"
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/leave', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/leave",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/leave', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}

Add group members

POST/v1/sessions/{sessionId}/groups/{gid}/participants/add

Adds members to the group. The per-member outcome returned by WhatsApp is passed through in result.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • participantsarray of stringrequired
    Member JIDs, <digits>@s.whatsapp.net

Responses

  • 200Outcome per member
    Response fields
    • resultarray of objectrequired
    • result[].statusstringrequired
      Status code per member as returned by WhatsApp
    • result[].jidstring
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/add" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "participants": [
    "+447700900123"
  ]
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/add', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "participants": [
      "+447700900123"
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/add",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "participants": [
            "+447700900123",
        ],
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/add', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'participants' => [
            '+447700900123',
        ],
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "result": [
    {
      "status": "active",
      "jid": "[email protected]"
    }
  ]
}

Remove group members

POST/v1/sessions/{sessionId}/groups/{gid}/participants/remove

Removes members from the group. The per-member outcome returned by WhatsApp is passed through in result.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • participantsarray of stringrequired
    Member JIDs, <digits>@s.whatsapp.net

Responses

  • 200Outcome per member
    Response fields
    • resultarray of objectrequired
    • result[].statusstringrequired
      Status code per member as returned by WhatsApp
    • result[].jidstring
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/remove" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "participants": [
    "+447700900123"
  ]
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/remove', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "participants": [
      "+447700900123"
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/remove",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "participants": [
            "+447700900123",
        ],
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/remove', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'participants' => [
            '+447700900123',
        ],
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "result": [
    {
      "status": "active",
      "jid": "[email protected]"
    }
  ]
}

Make members group admins

POST/v1/sessions/{sessionId}/groups/{gid}/participants/promote

Promotes members to group admin.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • participantsarray of stringrequired
    Member JIDs, <digits>@s.whatsapp.net

Responses

  • 200Done
    Response fields
    • okbooleanrequired
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/promote" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "participants": [
    "+447700900123"
  ]
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/promote', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "participants": [
      "+447700900123"
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/promote",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "participants": [
            "+447700900123",
        ],
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/promote', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'participants' => [
            '+447700900123',
        ],
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}

Remove group admin rights

POST/v1/sessions/{sessionId}/groups/{gid}/participants/demote

Demotes group admins to regular members.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • participantsarray of stringrequired
    Member JIDs, <digits>@s.whatsapp.net

Responses

  • 200Done
    Response fields
    • okbooleanrequired
  • 400The body is not valid JSON
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp operation failed: WhatsApp or the library rejected the call. The gateway does not validate this body, so missing or malformed fields end up here too
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/demote" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "participants": [
    "+447700900123"
  ]
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/demote', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "participants": [
      "+447700900123"
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/demote",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "participants": [
            "+447700900123",
        ],
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants/demote', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'participants' => [
            '+447700900123',
        ],
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}

Change group members

POST/v1/sessions/{sessionId}/groups/{gid}/participants

Adds, removes, promotes or demotes members with one endpoint. The same actions exist as separate …/participants/add|remove|promote|demote calls; the add and remove variants return the per-member result, this one only ok.

Path parameters

  • sessionIdstringrequired
    Session (device) id
  • gidstringrequired
    Group JID, <id>@g.us

Request body

  • actionstringrequired
    One of: add, remove, promote, demote
  • participantsarray of stringrequired
    Member JIDs, <digits>@s.whatsapp.net

Responses

  • 200Done
    Response fields
    • okbooleanrequired
  • 401Missing or invalid credentials
  • 403The API key is restricted to other sessions, or the operation is not available to CS-agent logins
  • 404Unknown session, or a session of another tenant
  • 409The session is not connected
  • 500WhatsApp refused the call, for example because of an invalid action (code is usually INTERNAL)
Request
curl -X POST "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants" \
  -H "Authorization: Bearer $CHATKOMODO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "action": "add",
  "participants": [
    "+447700900123"
  ]
}'
const res = await fetch('https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHATKOMODO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "action": "add",
    "participants": [
      "+447700900123"
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
console.log(data);
import os
import requests

res = requests.post(
    "https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants",
    headers={
        "Authorization": f"Bearer {os.environ['CHATKOMODO_API_KEY']}",
    },
    json={
        "action": "add",
        "participants": [
            "+447700900123",
        ],
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())
<?php
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.chatkomodo.com/v1/sessions/YOUR_DEVICE_ID/groups/120363012345678901%40g.us/participants', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('CHATKOMODO_API_KEY'),
    ],
    'json' => [
        'action' => 'add',
        'participants' => [
            '+447700900123',
        ],
    ],
]);

print_r(json_decode((string) $res->getBody(), true));
Response 200
{
  "ok": true
}