> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polymorfa.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recursos por número

> Veja quais recursos do WhatsApp o WhatsApp ativou para cada um dos seus números e os limites que ele aplica.

> [!NOTE]
>
> Os recursos por número estão em beta. Na página **Números** do Console, um
> proprietário ou administrador da equipe seleciona **Participar** na linha do beta
> Number capabilities, revisa os termos e seleciona **Aceitar e participar**. Até a
> equipe participar e o beta ser oferecido a ela, toda solicitação de recursos retorna
> `403 permission_denied`.

O WhatsApp não ativa todos os recursos para todas as contas ao mesmo tempo. Ele
libera recursos por conta, país e versão do app, e define limites como por quanto
tempo uma mensagem enviada continua editável. O endpoint de recursos informa quais
controles de configuração estão ativados para um dos seus números. O seu app também
precisa verificar os requisitos do cliente e tratar as operações que o WhatsApp
rejeita.

## Como os valores são produzidos

A Polymorfa lê a configuração do WhatsApp de cada número conectado como
dispositivo vinculado quando o número
se conecta pela primeira vez, a cada acesso em que o WhatsApp informa uma alteração,
quando o WhatsApp pede uma atualização e no intervalo de atualização que o WhatsApp
define para o número (um dia por padrão). Cada recurso avalia os controles de
configuração identificados no WhatsApp Web. Esses valores não verificam requisitos
do ambiente do cliente nem garantem que o servidor do WhatsApp vai aceitar uma
operação.

* **Os valores vêm de uma conexão de dispositivo vinculado.** Um número que nunca
  teve uma (conectado apenas pela API oficial) informa `status` `unknown`. Um
  número cuja conexão de dispositivo vinculado foi removida mantém os últimos
  valores sincronizados.
* **Os valores refletem a configuração do WhatsApp em `syncedAt`.** Eles não são
  uma verificação ao vivo. Uma alteração feita pelo WhatsApp aparece depois da
  próxima sincronização do número.
* **Os valores descrevem a última conta do WhatsApp vinculada ao número**, esteja
  ela conectada agora ou não. Leia a sessão do número para saber o status da
  conexão.
* **`status` é `unknown` e todo `value` é `null`** antes da primeira sincronização
  do número e quando outra conta do WhatsApp é vinculada ao número: desde a
  primeira tentativa de sincronização dessa conta até a configuração dela ser
  sincronizada. A Polymorfa reconhece outra conta pelo horário de criação da conta
  que o WhatsApp informa quando o número acessa o WhatsApp. Se o WhatsApp não
  informar esse horário para a conta recém-vinculada, a troca não é detectada, e os
  valores continuam sendo os da conta para a qual foram sincronizados até a próxima
  sincronização. Quando a Polymorfa não consegue saber se a configuração armazenada
  pertence à conta vinculada agora, `status` também fica `unknown` até a
  configuração do WhatsApp ser sincronizada de novo para essa conta; tentativas de
  sincronização com falha não mudam isso.
* **Um recurso diz o que o WhatsApp permite ao número.** Ele não significa que a
  API da Polymorfa oferece uma operação para esse recurso.
* `source` é `server` apenas quando todas as configurações usadas para avaliar um
  valor foram enviadas pelo WhatsApp e usadas como foram enviadas; caso contrário,
  o padrão ou o limite do próprio WhatsApp entrou na avaliação, e `source` é
  `client_default`.

## Antes de começar

* **A sua equipe participa do beta.** Sair do beta faz as leituras de recursos
  serem recusadas; os números e todas as outras APIs não são afetados.
* **Você chama a partir do seu servidor com uma chave de organização ou um token
  de projeto** que tenha o escopo `sessions:read`. Um token de projeto alcança
  apenas os números do próprio projeto. Tokens de cliente são rejeitados.

| Método | Escopo |
| - | - |
| [Get session capabilities](/api-reference/platform/sessions/get-session-capabilities) `GET /platform/sessions/{sessionId}/capabilities` | `sessions:read` |

`sessionId` é o nome da sessão ou o ID dela.

## Ler os recursos de um número

```bash theme={null}
curl "https://api.polymorfa.com/platform/sessions/support-line/capabilities" \
  -H "Authorization: Bearer $POLYMORFA_PROJECT_TOKEN"
```

```json theme={null}
{
  "data": {
    "session": "support-line",
    "projectId": "0198a2cb-0000-7000-8000-000000000002",
    "status": "synced",
    "syncedAt": "2026-09-24T10:00:00.000Z",
    "checkedAt": "2026-09-24T11:00:00.000Z",
    "accountType": "business",
    "capabilities": [
      { "key": "channels", "kind": "feature", "unit": null, "value": true, "source": "server" },
      { "key": "messageEdit.windowSeconds", "kind": "limit", "unit": "seconds", "value": 1200, "source": "client_default" },
      { "key": "polls.maxOptions", "kind": "limit", "unit": "count", "value": 12, "source": "client_default" }
    ]
  }
}
```

O exemplo mostra três das entradas. A resposta sempre contém todos os recursos,
na mesma ordem.

| Campo | Significado |
| - | - |
| `status` | `synced` quando os valores refletem a última conta vinculada ao número; caso contrário, `unknown`. |
| `syncedAt` | Quando a configuração refletida pelos valores foi lida do WhatsApp. `null` enquanto `status` é `unknown`. |
| `checkedAt` | Quando a Polymorfa pediu a configuração ao WhatsApp pela última vez, tenha havido alteração ou não. |
| `accountType` | `business` ou `personal`: o tipo de conta para o qual os valores foram avaliados. `null` quando não é conhecido. |
| `capabilities[].kind` | `feature`: `value` é `true` ou `false`. `limit`: `value` é um número inteiro em `unit`. Um limite é `null` em um número sincronizado quando a configuração do WhatsApp para ele não é um número utilizável. |
| `capabilities[].source` | `server`: todas as configurações do WhatsApp usadas para avaliar o valor foram enviadas pelo WhatsApp e usadas como foram enviadas. `client_default`: o padrão ou o limite do próprio WhatsApp entrou na avaliação, porque uma configuração não foi enviada ou não era utilizável, ou porque o WhatsApp limita ou substitui o valor que enviou. `account_type`: o recurso não se aplica a este tipo de conta. `null` quando `value` é `null`. |

Ignore as chaves que o seu app não reconhece. Novos recursos podem ser
adicionados; uma chave existente nunca muda de significado.

## Recursos

| Chave | Tipo | Significado |
| - | - | - |
| `usernames.display` | feature | O WhatsApp mostra os nomes de usuário de outras pessoas para este número. |
| `usernames.search` | feature | O número pode encontrar pessoas pelo nome de usuário. |
| `usernames.contactlessChat` | feature | O número pode iniciar uma conversa com alguém pelo nome de usuário, sem o número de telefone da pessoa. `true` apenas quando os dois recursos de nome de usuário acima estão ativos. |
| `channels` | feature | Os canais estão ativados nos dispositivos vinculados do número. |
| `channels.creation` | feature | O número pode criar canais a partir de um dispositivo vinculado. `true` apenas quando `channels` é `true`. |
| `metaAi` | feature | O WhatsApp ativou a Meta AI para o número. Em uma conta pessoal, o WhatsApp também exige um idioma de exibição compatível, a menos que ative todos os idiomas; o idioma não é verificado. `null` quando `accountType` é `null`, porque contas comerciais e pessoais usam configurações diferentes. |
| `calling.linkedDevice` | feature | Chamadas de voz e de vídeo estão ativadas nos dispositivos vinculados do WhatsApp Web do número. O WhatsApp também exige um navegador compatível, o que isto não verifica. |
| `calling.linkedDeviceGroup` | feature | Chamadas em grupo estão ativadas nos dispositivos vinculados do WhatsApp Web do número. `true` apenas quando `calling.linkedDevice` é `true`. O WhatsApp também exige um navegador compatível, o que isto não verifica. |
| `events` | feature | Mensagens de evento (convites com data e respostas) estão ativadas nos dispositivos vinculados do número. |
| `polls.endTime` | feature | O número pode enviar enquetes com horário de encerramento em todas as conversas. Quando é `false`, o WhatsApp ainda pode permitir isso em grupos específicos; use a leitura de recursos do grupo para um grupo. |
| `polls.hideVoters` | feature | O número pode enviar enquetes que escondem quem votou, em todas as conversas. Use a leitura de recursos do grupo para um grupo. |
| `polls.creatorEdit` | feature | O número pode editar as enquetes que criou, em todas as conversas. Use a leitura de recursos do grupo para um grupo. |
| `polls.maxOptions` | limit, count | O número máximo de opções de uma enquete. Nunca mais que 20. |
| `polls.maxQuestionLength` | limit, characters | O tamanho máximo da pergunta de uma enquete. Nunca mais que 500. |
| `polls.maxOptionLength` | limit, characters | O tamanho máximo de uma opção de enquete. Nunca mais que 255. |
| `messageEdit.windowSeconds` | limit, seconds | Por quanto tempo depois do envio de uma mensagem o WhatsApp aceita uma edição dela, fora dos canais. |
| `messageEdit.offerSeconds` | limit, seconds | Por quanto tempo depois do envio de uma mensagem o app do WhatsApp oferece a opção de editá-la, fora dos canais. |
| `groups.maxSize` | limit, members | O número máximo de membros em um grupo, exceto em um grupo de avisos de comunidade. |
| `communities.maxGroups` | limit, count | O número máximo de grupos que uma comunidade pode conter. |
| `pinnedMessages.maxPins` | limit, count | O número máximo de mensagens que o número pode fixar em uma conversa. |
| `business.chatAssignment` | feature | O número comercial pode atribuir conversas a pessoas que usam os dispositivos vinculados dele. `false` com `source` `account_type` para uma conta pessoal. |

## Erros

| Status | Código | Causa |
| - | - | - |
| `400` | `invalid_parameter` | `sessionId` está ausente ou é longo demais. |
| `403` | `permission_denied` | A equipe não está inscrita no beta ou o beta não é oferecido a ela, ou a solicitação usa um token de cliente. |
| `403` | `missing_scope` | A credencial não tem `sessions:read`. |
| `404` | `resource_not_found` | Não existe um número com este nome ou ID na equipe ou no projeto da credencial. |

## Recursos de grupo

A leitura de grupo e o evento de alteração de recursos não são oferecidos. A
inscrição no beta de recursos por número não ativa essas extensões.

O contrato da leitura de grupo é `GET /messaging/{session}/groups/{id}/capabilities`.
Use o identificador do grupo na Polymorfa e uma credencial de servidor com
`groups:read`. O número vinculado precisa ser membro atual do grupo. Conexões de
grupo pela API oficial não oferecem essa leitura.

A resposta inclui `status`, `syncedAt`, `checkedAt` e três chaves de recurso:
`polls.endTime`, `polls.hideVoters` e `polls.creatorEdit`. Um controle está
ativado quando o WhatsApp o ativa para o número ou para aquele grupo. O `source` de
um valor é `server` ou `client_default`; valores desconhecidos têm valor e origem
nulos.

Os valores continuam desconhecidos até o número concluir a primeira sincronização
de configuração no nível do número e uma sincronização de configuração do grupo ter
sido bem-sucedida para a conta vinculada ao número. Ler os recursos não abre a
conversa nem busca a configuração. `syncedAt` identifica a leitura de configuração
bem-sucedida; `checkedAt` inclui verificações posteriores que falharam. A troca de
conta torna desconhecidos os valores de grupo da conta anterior. Esses controles
descrevem a configuração e não dão permissão para editar a enquete de outro
participante.

A ferramenta MCP correspondente é `groups_capabilities`, com os argumentos
`session` e `id`. Ela segue as mesmas verificações de credencial de servidor,
escopo, participação no grupo e beta da API. A extensão não é oferecida por nenhuma
das duas interfaces.

Consulte [Read group capabilities](/api-reference/messaging/groups/get-group-capabilities).

## Eventos de alteração de recursos

O contrato `session.capabilities_updated` descreve alterações nos recursos
efetivos de um número em um webhook de projeto. A carga contém a resposta de recursos do número
e `changedKeys`, as chaves cujo valor ou origem mudou. Uma alteração de status ou
de tipo de conta também gera um evento, mesmo quando `changedKeys` está vazio.
Verificações de rotina e alterações de configuração que não mudam os recursos não
geram eventos. Alterações de recursos de grupo não geram este evento.

A publicação e a entrega exigem o mesmo acesso ao beta que uma leitura de recursos.
Quando o acesso é retirado ou fica indisponível, as alterações na fila esperam o
acesso voltar e expiram depois de sete dias. O histórico publicado segue a retenção
normal de eventos. As novas tentativas mantêm o ID do evento; elimine duplicatas por
esse ID. Consulte [Webhooks](/api/webhooks) para a verificação de assinatura e o
tratamento das entregas.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.