Number capabilities are a beta. On the Numbers page of the Console, a team
owner or admin selects Join on the Number capabilities beta row, reviews
the terms and selects Accept and join. Until the team has joined and the
beta is offered to it, every capability request returns
403 permission_denied.How the values are produced
Polymorfa reads the WhatsApp configuration of each number connected as a linked device when the number first connects, at each login when WhatsApp reports a change, when WhatsApp asks for a refresh, and on the refresh interval WhatsApp sets for the number (one day by default). Each capability evaluates the configuration gates identified in WhatsApp Web. These values do not check client-environment requirements or guarantee that WhatsApp’s server will accept an operation.- Values come from a linked-device connection. A number that has never had
one (connected only through the Official API) reports
statusunknown. A number whose linked-device connection was removed keeps the values last synced. - Values reflect WhatsApp’s configuration at
syncedAt. They are not a live check. A change WhatsApp makes appears after the number’s next sync. - Values describe the WhatsApp account last linked to the number, whether or not it is connected now. Read the number’s session for its connection status.
statusisunknownand everyvalueisnullbefore the number’s first sync, and when another WhatsApp account is linked to the number: from that account’s first sync attempt until its configuration is synced. Polymorfa recognizes another account by the account creation time WhatsApp reports when the number logs in. If WhatsApp does not report it for the newly linked account, the change is not detected, and the values stay those of the account they were synced for until the next sync. When Polymorfa cannot tell whether the stored configuration belongs to the account linked now,statusis alsounknownuntil WhatsApp’s configuration is synced again for that account; failed sync attempts do not clear it.- A capability says what WhatsApp allows the number. It does not mean the Polymorfa API offers an operation for that feature.
sourceisserveronly when every setting a value was evaluated from was sent by WhatsApp and used as sent; otherwise WhatsApp’s own default or limit took part andsourceisclient_default.
Before you start
- Your team has joined the beta. Leaving it refuses capability reads; numbers and every other API are unaffected.
- You call from your server with an organization key or project token that
has the
sessions:readscope. A project token reaches only its own project’s numbers. Client tokens are rejected.
sessionId is the session name or its ID.
Read a number’s capabilities
Ignore keys your app does not recognize. New capabilities can be added; an
existing key never changes meaning.
Capabilities
Errors
Group capabilities
The group read and capability-change event are not offered. Number-capabilities beta enrollment does not enable these extensions. The group read contract isGET /messaging/{session}/groups/{id}/capabilities.
Use the group’s Polymorfa identifier and a server credential with groups:read.
The linked number must be a current member of the group. Official API group
connections do not provide this read.
The response includes status, syncedAt, checkedAt, and three feature keys:
polls.endTime, polls.hideVoters, and polls.creatorEdit. A gate is enabled
when WhatsApp enables it for the number or that group. A value’s source is
server or client_default; unknown values have a null value and source.
Values stay unknown until the number has completed its first number-level
configuration sync and a group configuration sync has succeeded for the
account linked to the number. Reading capabilities does not open the chat or
fetch configuration. syncedAt identifies the successful configuration read;
checkedAt includes later failed checks. Account replacement makes the former
account’s group values unknown. These gates describe configuration and do not
grant permission to edit another participant’s poll.
The corresponding MCP tool is groups_capabilities, with session and id
arguments. It follows the same server credential, scope, membership and beta
checks as the API. The extension is not offered through either interface.
See Read group capabilities.
Capability change events
Thesession.capabilities_updated contract describes changes to a number’s
effective capabilities on a project webhook. The payload contains the number capability
response and changedKeys, the keys whose value or source changed. A status or
account-type change also produces an event, even when changedKeys is empty.
Routine checks and configuration changes that leave capabilities unchanged do
not produce events. Group capability changes do not produce this event.
Publication and delivery require the same beta access as a capability read.
When access is withdrawn or unavailable, queued changes wait for access to
return and expire after seven days. Published history follows your ordinary
event retention. Retries retain the event ID; deduplicate by that ID. See
Webhooks for signature verification and delivery handling.