Skip to main content

API de Contactos

La API de Contactos permite gestionar la agenda de contactos del número de WhatsApp activo: listar, buscar, obtener, crear, actualizar el apodo, bloquear/desbloquear y exportar contactos. Con la introducción del BSUID (Business-Scoped User ID) por parte de Meta, cada contacto puede tener — además del teléfono (wa_id) — los campos user_id (BSUID), parent_user_id (parent BSUID) y username. Esto permite que un contacto exista incluso sin teléfono (por ejemplo, cuando el usuario adoptó un username). Comprende el concepto en BSUID e identificadores de usuario.
Los campos BSUID (user_id, parent_user_id, username) se devuelven en todos los endpoints de contacto y aparecen rellenos cuando están disponibles o como null cuando están ausentes. El campo wa_id (teléfono) se sigue devolviendo normalmente por compatibilidad retroactiva.

Autenticación y base URL

Todos los endpoints de esta página usan la base URL de producción y autenticación por Bearer Token: https://api.positus.global/v2

Headers

Los endpoints de listado, obtención, creación, apodo, bloqueo y desbloqueo operan sobre el número de WhatsApp activo de la sesión (el número seleccionado actualmente por el usuario autenticado). No reciben el código del número (chave) en la ruta. Solo el endpoint de exportación recibe el UUID del número en la ruta.

Listar contactos

GET https://api.positus.global/v2/messenger/contacts Lista los contactos del número activo, paginados (40 por página), ordenados por la fecha del último mensaje. Soporta búsqueda textual y filtros.

Headers

Query Parameters

Response

Devuelve 403 cuando no hay un número de WhatsApp activo asociado a la sesión.

Obtener contacto

GET https://api.positus.global/v2/messenger/contacts/{contact} Devuelve un contacto específico del número activo, identificado por su UUID (id).

Path Parameters

Headers

Response

Crear / actualizar contacto

POST https://api.positus.global/v2/messenger/contacts Crea un contacto en el número activo. Si ya existe un contacto con el mismo identificador de búsqueda, se actualiza en lugar de duplicarse (comportamiento update-or-create). El contacto puede identificarse por teléfono (phone) O por BSUID (user_id) — debes informar al menos uno de los dos. Esto permite crear contactos sin teléfono, solo con el BSUID.

Headers

Request Body

Clave de búsqueda (evita duplicidad):
  • Si se informa user_id, el contacto se busca/actualiza por user_id (prioridad BSUID). Si también viene phone, el teléfono se guarda en wa_id.
  • Si solo se informa phone, el contacto se busca/actualiza por wa_id.
El username no se usa como clave de identificación — lo rellenan los webhooks de Meta.
Números on-premises: al crear un contacto solo por phone (sin user_id), la API valida el número contra la WhatsApp API antes de guardar — si el número no existe, devuelve 404. Al crear solo por user_id (sin teléfono), esa validación se omite. En números Cloud API no hay validación previa.

Request Body (contacto tradicional — por teléfono)

Request Body (contacto por BSUID — sin teléfono)

Request Body (BSUID + teléfono)

Response

El campo recently_created indica si el contacto fue creado ahora (true) o si se actualizó un contacto existente (false).

Actualizar apodo

PUT https://api.positus.global/v2/messenger/contacts/{contact}/nickname Actualiza el apodo (nickname) de un contacto existente, identificado por su UUID.

Path Parameters

Request Body

Response

Bloquear contacto

POST https://api.positus.global/v2/messenger/contacts/{contact}/block Bloquea un contacto existente.

Path Parameters

Request Body

Response

Desbloquear contacto

POST https://api.positus.global/v2/messenger/contacts/{contact}/unblock Desbloquea un contacto bloqueado.

Path Parameters

Response

Exportar contactos

POST https://api.positus.global/v2/whatsapp/numbers/{number}/exports/contacts Exporta todos los contactos de un número (identificado por su UUID en la ruta) en CSV o XLSX. El archivo incluye columnas dedicadas para los campos BSUID (user_id, parent_user_id, username).

Path Parameters

Request Body

Response

Devuelve el archivo binario para descarga (CSV o XLSX) con las columnas: id, name, nickname, wa_id, user_id, parent_user_id, username, blocked, block_reason, blocked_at, created_at, updated_at.

Objeto contacto

Campos devueltos en el objeto contacto (endpoints de listado, obtención y creación):

Búsqueda por user_id o username

El parámetro query del listado de contactos hace una búsqueda textual (vía LIKE, coincidencia parcial) sobre los siguientes campos:
  • name
  • nickname
  • wa_id (teléfono)
  • user_id (BSUID)
  • username
Esto permite localizar contactos BSUID-only (sin teléfono) buscando por el BSUID o el username.
El username es solo un criterio de búsqueda textual — no es una clave única. No uses username para identificar unívocamente un contacto; usa el id (UUID) o el user_id (BSUID).