Mensajes
Enviar contacto
Envía uno o varios contactos como vCard
POST
Enviar contacto
Auth:
Envoltorio de error:
TokenAccount o TokenInstance • Rate-limit: Global (100/min) • Idempotente: no
Descripción
Envía uno o más contactos como vCard. El destinatario recibe una tarjeta clicable que puede agregar el contacto directamente a su libreta de direcciones. El campovcard acepta un array de objetos VCard (envío múltiple) o un único objeto (compatibilidad hacia atrás, el servidor acepta ambos formatos). Soporta replyTo, replyPrivate, delay (en segundos) y source. No soporta menciones.
Ejemplos
Contacto único
Envía un vCard con lo mínimo (fullName y phone). El destinatario recibe una única tarjeta clicable con el contacto “João Silva” listo para ser agregado a su libreta de direcciones.
Múltiples contactos
Pasa tres contactos en el arrayvcard. El servidor envía todo como un único ContactsArrayMessage; el destinatario ve una tarjeta agrupada y elige qué nombres agregar a su libreta de direcciones.
Contacto con organización, email y sitio web
Incluye los campos opcionalesorganization, email y url en el vCard. La tarjeta resultante muestra la empresa, el email de contacto y el sitio web debajo del nombre, ideal para presentar contactos comerciales completos.
Respuesta exitosa
El arrayvcard en la respuesta refleja exactamente lo que enviaste (con todos los contactos). Cuando hay más de un contacto, message se vuelve "X contacts sent successfully in one message".
200 OK
Cuando
vcard contiene un solo elemento, el servidor lo envía como ContactMessage. Para múltiples elementos, se envía como ContactsArrayMessage (un único mensaje agrupando varias tarjetas).Parámetros de ruta
Nombre de la instancia (p. ej.,
$Instance_Name).Cabeceras
TokenAccount o TokenInstance.application/jsonCuerpo de la solicitud
Destino: teléfono (
5511999999999) o JID (@s.whatsapp.net, @lid, @g.us, @newsletter).Array de contactos a enviar. Cada elemento sigue la estructura abajo. El handler también acepta un único objeto
VCard (sin array) por compatibilidad hacia atrás, convirtiéndolo internamente a un array de un solo elemento. Se requiere al menos un contacto.Nombre completo del contacto. Aparece como la etiqueta principal de la tarjeta.
Número de teléfono del contacto (con código de país, p. ej.,
5511888888888).Organización/empresa del contacto (opcional).
Email del contacto (opcional).
URL/sitio web del contacto (opcional).
Tiempo en segundos a esperar antes de enviar. Durante el intervalo, el servidor envía el indicador “escribiendo…” al destinatario y dispara “pausado” antes del envío real.
ID del mensaje a citar (respuesta). El mensaje original debe pertenecer a la misma instancia y haber sido guardado en la base de datos.
Cuando es
true y replyTo apunta a un mensaje originado en un grupo, la respuesta se redirige al chat privado del autor original (manteniendo la cita). Ignorado si el mensaje original no es de un grupo. Aviso: este campo está definido en la struct pero el handler de contactos hace parsing manual del JSON y no está extrayendo replyPrivate del payload, por lo que actualmente se trata como false.Identificador de origen para trazabilidad (p. ej.,
crm, bot-suporte, n8n). Guardado en el registro del mensaje en la base de datos y propagado a los webhooks. Cuando se omite, el default es "api".Notas
delayes en segundos, no milisegundos.- El campo
vcardacepta tanto un array como un objeto único. Recomendamos usar siempre un array ([ {...} ]) para evitar ambigüedad. - Cada contacto requiere
fullNameyphone.organization,emailyurlson opcionales. - Para envíos múltiples, WhatsApp agrupa los contactos en una única tarjeta en el chat, el destinatario puede elegir cuáles agregar.
- Los mensajes de contacto no soportan
mentionnimentionAll. - Para números BR (que comienzan con
55), el servicio prueba automáticamente variaciones con y sin el 9° dígito. - Cada contacto en el array pasa por validación individual; si el elemento
Nfalla, la respuesta es400 Contact full name is required for contact No400 Contact phone number is required for contact N.
Errores
| HTTP | Status interno | Mensaje |
|---|---|---|
| 400 | , | Instance name is required |
| 400 | , | Invalid JSON format: <detail> |
| 400 | , | Failed to read request body: <detail> |
| 400 | , | Number is required |
| 400 | , | At least one contact (vcard) is required |
| 400 | , | Contact full name is required for contact N |
| 400 | , | Contact phone number is required for contact N |
| 400 | invalid_number | Invalid phone number format: <detail> |
| 500 | send_failed | Failed to send message: <reason> |
| 404 | , | Instance not found |
| 503 | disconnected | Instance is not connected to WhatsApp |