4dim / Notas

La API de WhatsApp no te da la foto de tu contacto

Dieciséis peticiones a la API de Meta para comprobar algo que no está escrito en su documentación: en WhatsApp, quien te escribe no es un nodo al que se le pueda pedir nada.

Lo que trae el webhook, y nada más

Cuando alguien te escribe por WhatsApp, la Cloud API te manda un webhook. Dentro, en contacts[], hay exactamente tres campos: profile, wa_id y user_id.

Y profile solo contiene name. No hay foto. No hay un campo vacío que se llene con un permiso: no existe el campo.

Esto no está dicho así en la documentación de Meta. Lo que hay es una ausencia, y una ausencia se puede confundir con un permiso que falta o con un endpoint que no encontraste. Así que lo comprobamos.

Qué se probó, una por una

Dieciséis peticiones contra un canal de WhatsApp real, el 16 de agosto de 2026, con token de usuario y con token de aplicación. Esto es lo que devuelve cada camino:

Lo que se pideRespuesta
{wa_id} como nodo de Graph400 — el número no es un nodo
{user_id}/picture?redirect=false400 — tampoco lo es
{user_id} pidiendo picture, profile_pic, profile_picture_url400 con los dos tokens
{phone_number_id}/contacts«campo inexistente»
{phone_number_id}/whatsapp_business_profile200 — pero es tu propio perfil, no el suyo

El user_id llega con prefijo de país —CO.1025808627292772— y eso induce a pensar que es direccionable. No lo es. Es lo único que devuelve 200 en toda la tabla, y devuelve el perfil del negocio que pregunta.

Por qué, y por qué en Instagram sí

No es un permiso que falte ni una versión de API que haya que subir. Es una decisión de privacidad de Meta, y se entiende mirando en qué se diferencian los tres canales.

En Instagram y en Messenger, quien te escribe tiene un identificador con ámbito de aplicación: es una entidad del grafo, con campos, y profile_pic es uno de ellos. En WhatsApp no. El interlocutor es un número de teléfono, y un número de teléfono no es un nodo al que se le pueda preguntar nada.

En WhatsApp no te falta un permiso para ver la foto: te falta el sujeto al que pedírsela.

Qué hacer entonces

Si estás montando una bandeja de WhatsApp y alguien pide que salga la foto del contacto, la respuesta honesta es que no se puede traer del canal. Las salidas reales son tres:

  • Que el negocio suba la foto a mano cuando la tenga.
  • Usar la inicial del nombre —que sí viene, en profile.name— como identidad visual. Es lo que hacemos nosotros.
  • Si el mismo contacto escribe también por Instagram o Messenger, traer la foto de ahí y asociarla a la persona, no al canal.

Lo que no hay que hacer es seguir buscando el endpoint. No existe, y esta nota es para que no gastes las dieciséis peticiones que gastamos nosotros.

Esta nota sale de nuestro trabajo en Agentes conversacionales.

← todas las notas