Use cases

WhatsApp group API for developers

WaGate gives you a REST API for WhatsApp groups. From your own code you can create a group, add, remove, promote or demote people, rename it, set its description and settings, and fetch its invite link. Each request is authenticated with the token of one linked number, and a free sandbox is included.

Facts (as of October 2026, API v1)

  • One request changes up to 50 people. A group subject is 1 to 25 characters.
  • A group add answers one result per person, so one refusal does not fail the others.
  • The free sandbox channel allows 5 group adds a day, counted in Bangkok time.
  • Prices: from $25 per number per month, with a free sandbox and no per-message fees.

What you can automate

A first call

Create a group, then add a person. The number you call from must be linked to a channel. The same two calls in curl and Node (set GROUP_JID in curl to the jid the first call returns):

curl
API=https://api.wagate.dev/v1
BASE="$API/sessions/$CHANNEL_ID"
AUTH="Authorization: Bearer $CHANNEL_TOKEN"

curl -s -X POST "$BASE/groups" \
  -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{"subject":"Team","participants":[]}'

curl -s -X POST "$BASE/groups/$GROUP_JID/participants" \
  -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{"action":"add","participants":["66XXXXXXXXX"]}'
Node.js
const API = 'https://api.wagate.dev/v1';
const { CHANNEL_ID, CHANNEL_TOKEN } = process.env;
const BASE = `${API}/sessions/${CHANNEL_ID}`;
const headers = {
  Authorization: `Bearer ${CHANNEL_TOKEN}`,
  'Content-Type': 'application/json',
};

async function call(method, path, body) {
  const res = await fetch(`${BASE}${path}`, {
    method,
    headers,
    body: body === undefined ? undefined : JSON.stringify(body),
  });
  const data = await res.json();
  if (!res.ok) throw new Error(`${res.status} ${data.code}: ${data.error}`);
  return data;
}

const group = await call('POST', `/groups`, {"subject":"Team","participants":[]});
console.log(group);
const added = await call('POST', `/groups/${group.jid}/participants`, {"action":"add","participants":["66XXXXXXXXX"]});
console.log(added);

Every group route

MethodPathWhat it does
GET/v1/sessions/{channel}/groupsList groups
POST/v1/sessions/{channel}/groupsCreate a group
GET/v1/sessions/{channel}/groups/{group}Get a group
PUT/v1/sessions/{channel}/groups/{group}/descriptionSet or clear a group's description
GET/v1/sessions/{channel}/groups/{group}/invite-linkGet a group's invite link
POST/v1/sessions/{channel}/groups/{group}/participantsAdd, remove, promote or demote participants
PUT/v1/sessions/{channel}/groups/{group}/settingsChange a group's settings
PUT/v1/sessions/{channel}/groups/{group}/subjectSet a group's subject

Limits and honest caveats

Questions

Can I create a WhatsApp group with an API?
Yes. POST to /v1/sessions/{channel}/groups with a subject of 1 to 25 characters, and optionally up to 50 participants. The answer is the new group, including its jid.
How many people can I add in one request?
Up to 50 per request, for add, remove, promote and demote. The answer has one result per person.
Can I get the invite link?
Yes. GET /v1/sessions/{channel}/groups/{group}/invite-link returns an invite_link.
Can I try it without paying?
Yes. Every account has one free sandbox channel. It allows 5 group adds a day, so it is enough to build and test against.
Is this an official WhatsApp API?
No. WaGate is an independent API. You link your own number, and WhatsApp sets its own rules for each number.

Free sandbox, forever. Add a real number when you're ready.

Start in the free sandbox

WaGate is an independent WhatsApp API for developers: send and receive messages, automate groups and communities, and get signed webhooks with a free sandbox. Not affiliated with WhatsApp or Meta. You link your own number.