Messages
Send Contact
Send one or multiple contacts as vCard
POST
Send Contact
Auth:
Error envelope:
TokenAccount or TokenInstance • Rate-limit: Global (100/min) • Idempotent: no
Description
Sends one or more contacts as vCard. The recipient gets a clickable card that can add the contact directly to their address book. Thevcard field accepts an array of VCard objects (multi-send) or a single object (backward compatibility, the server accepts both formats). Supports replyTo, replyPrivate, delay (in seconds) and source. Does not support mentions.
Examples
Single contact
Sends a vCard with the bare minimum (fullName and phone). The recipient gets a single clickable card with the contact “João Silva” ready to be added to their address book.
Multiple contacts
Passes three contacts in thevcard array. The server sends everything as a single ContactsArrayMessage; the recipient sees a grouped card and chooses which names to add to their address book.
Contact with organization, email and website
Includes the optional fieldsorganization, email and url in the vCard. The resulting card displays the company, the contact email and the website below the name, ideal for presenting full business contacts.
Success response
Thevcard array in the response echoes exactly what you sent (with all contacts). When there is more than one contact, message becomes "X contacts sent successfully in one message".
200 OK
When
vcard contains a single item, the server sends it as ContactMessage. For multiple items, it is sent as ContactsArrayMessage (a single message grouping multiple cards).Path parameters
Instance name (e.g.,
$Instance_Name).Headers
TokenAccount or TokenInstance.application/jsonRequest body
Destination: phone (
5511999999999) or JID (@s.whatsapp.net, @lid, @g.us, @newsletter).Array of contacts to send. Each item follows the structure below. The handler also accepts a single
VCard object (without an array) for backward compatibility, internally converting it to a single-item array. At least one contact is required.Full name of the contact. Appears as the main label of the card.
Phone number of the contact (with country code, e.g.,
5511888888888).Contact organization/company (optional).
Contact email (optional).
Contact URL/website (optional).
Time in seconds to wait before sending. During the interval, the server sends the “typing…” indicator to the recipient and fires “paused” before the actual send.
ID of the message to be quoted (reply). The original message must belong to the same instance and have been saved in the database.
When
true and replyTo points to a message originating from a group, the reply is redirected to the original author’s private chat (keeping the quote). Ignored if the original message is not from a group. Advisory: this field is defined in the struct but the contacts handler does manual JSON parsing and is not extracting replyPrivate from the payload, so it is currently treated as false.Origin identifier for traceability (e.g.,
crm, bot-suporte, n8n). Saved on the message record in the database and propagated to webhooks. When omitted, defaults to "api".Notes
delayis in seconds, not milliseconds.- The
vcardfield accepts both an array and a single object. We recommend always using an array ([ {...} ]) to avoid ambiguity. - Each contact requires
fullNameandphone.organization,emailandurlare optional. - For multi-sends, WhatsApp groups the contacts into a single card in the chat, the recipient can choose which to add.
- Contact messages do not support
mentionormentionAll. - For BR numbers (starting with
55), the service automatically tries variations with and without the 9th digit. - Each contact in the array goes through individual validation; if item
Nfails, the response is400 Contact full name is required for contact Nor400 Contact phone number is required for contact N.
Errors
| HTTP | Internal status | Message |
|---|---|---|
| 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 |