Skip to main content

API de Contatos

A API de Contatos permite gerenciar a agenda de contatos do número de WhatsApp ativo: listar, buscar, obter, criar, atualizar o apelido, bloquear/desbloquear e exportar contatos. Com a introdução do BSUID (Business-Scoped User ID) pela Meta, cada contato passa a poder ter — além do telefone (wa_id) — os campos user_id (BSUID), parent_user_id (parent BSUID) e username. Isso permite que um contato exista mesmo sem telefone (por exemplo, quando o usuário adotou um username). Entenda o conceito em BSUID e identificadores de usuário.
Os campos BSUID (user_id, parent_user_id, username) são retornados em todos os endpoints de contato e aparecem preenchidos quando disponíveis ou como null quando ausentes. O campo wa_id (telefone) continua sendo retornado normalmente para compatibilidade retroativa.

Autenticação e base URL

Todos os endpoints desta página usam a base URL de produção e autenticação por Bearer Token: https://api.positus.global/v2

Headers

Os endpoints de listagem, obtenção, criação, apelido, bloqueio e desbloqueio operam sobre o número de WhatsApp ativo da sessão (o número atualmente selecionado pelo usuário autenticado). Eles não recebem o código do número (chave) no path. Apenas o endpoint de exportação recebe o UUID do número no path.

Listar contatos

GET https://api.positus.global/v2/messenger/contacts Lista os contatos do número ativo, paginados (40 por página), ordenados pela data da última mensagem. Suporta busca textual e filtros.

Headers

Query Parameters

Response

Retorna 403 quando não há número de WhatsApp ativo associado à sessão.

Obter contato

GET https://api.positus.global/v2/messenger/contacts/{contact} Retorna um contato específico do número ativo, identificado pelo seu UUID (id).

Path Parameters

Headers

Response

Criar / atualizar contato

POST https://api.positus.global/v2/messenger/contacts Cria um contato no número ativo. Se já existir um contato com o mesmo identificador de lookup, ele é atualizado em vez de duplicado (comportamento update-or-create). O contato pode ser identificado por telefone (phone) OU por BSUID (user_id) — você precisa informar ao menos um dos dois. Isso permite criar contatos sem telefone, apenas com o BSUID.

Headers

Request Body

Chave de lookup (evita duplicidade):
  • Se user_id for informado, o contato é procurado/atualizado por user_id (prioridade BSUID). Se phone também vier, o telefone é gravado em wa_id.
  • Se apenas phone for informado, o contato é procurado/atualizado por wa_id.
O username não é usado como chave de identificação — ele é preenchido pelos webhooks da Meta.
Números on-premises: ao criar um contato apenas por phone (sem user_id), a API valida o número junto à WhatsApp API antes de gravar — se o número não existir, retorna 404. Ao criar apenas por user_id (sem telefone), essa validação é ignorada. Em números Cloud API não há validação prévia.

Request Body (contato tradicional — por telefone)

Request Body (contato por BSUID — sem telefone)

Request Body (BSUID + telefone)

Response

O campo recently_created indica se o contato foi criado agora (true) ou se um contato existente foi atualizado (false).

Atualizar apelido

PUT https://api.positus.global/v2/messenger/contacts/{contact}/nickname Atualiza o apelido (nickname) de um contato existente, identificado pelo UUID.

Path Parameters

Request Body

Response

Bloquear contato

POST https://api.positus.global/v2/messenger/contacts/{contact}/block Bloqueia um contato existente.

Path Parameters

Request Body

Response

Desbloquear contato

POST https://api.positus.global/v2/messenger/contacts/{contact}/unblock Desbloqueia um contato bloqueado.

Path Parameters

Response

Exportar contatos

POST https://api.positus.global/v2/whatsapp/numbers/{number}/exports/contacts Exporta todos os contatos de um número (identificado pelo UUID no path) em CSV ou XLSX. O arquivo inclui colunas dedicadas para os campos BSUID (user_id, parent_user_id, username).

Path Parameters

Request Body

Response

Retorna o arquivo binário para download (CSV ou XLSX) com as colunas: id, name, nickname, wa_id, user_id, parent_user_id, username, blocked, block_reason, blocked_at, created_at, updated_at.

Objeto contato

Campos retornados no objeto contato (endpoints de listagem, obtenção e criação):

Busca por user_id ou username

O parâmetro query da listagem de contatos faz busca textual (via LIKE, correspondência parcial) sobre os seguintes campos:
  • name
  • nickname
  • wa_id (telefone)
  • user_id (BSUID)
  • username
Isso permite localizar contatos BSUID-only (sem telefone) buscando pelo BSUID ou pelo username.
O username é apenas um critério de busca textual — não é uma chave única. Não use username para identificar unicamente um contato; use o id (UUID) ou o user_id (BSUID).