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
- 200
- 403
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
- 200
- 404
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_idfor informado, o contato é procurado/atualizado poruser_id(prioridade BSUID). Sephonetambém vier, o telefone é gravado emwa_id. - Se apenas
phonefor informado, o contato é procurado/atualizado porwa_id.
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
- 200
- 404
- 422
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
- 200
Bloquear contato
POST https://api.positus.global/v2/messenger/contacts/{contact}/block
Bloqueia um contato existente.
Path Parameters
Request Body
Response
- 200
Desbloquear contato
POST https://api.positus.global/v2/messenger/contacts/{contact}/unblock
Desbloqueia um contato bloqueado.
Path Parameters
Response
- 200
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
- 200
- 422
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:
namenicknamewa_id(telefone)user_id(BSUID)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).