List contacts
List contacts with their channels. A repeated tag means all of them.
Authorization
AuthorizationheaderrequiredBearer YOUR_API_KEY. Create a key in the dashboard.
Query parameters
searchstringLimitsmax length 200bsuidstringExact WhatsApp business-scoped user ID (e.g.
CO.13491208655302741918). Returns the contact that holds it, or an empty list. Combines withphoneNumberandtagas a filter, and cannot be combined withsearch(400). A value that is not shaped like a BSUID returns 400.tagstring[]limitintegerDefault50Limitsmax 100cursorstringOpaque
nextCursorfrom the previous page.
Responses
200Contacts.
itemsobject[]required15 properties
idstringrequireddisplayNamestringDisplay name for the contact.
phoneNumberstringDEPRECATED: Use primaryPhone instead. Primary phone number in E.164 format.
primaryPhonestringPrimary phone number in E.164 format.
primaryEmailstring<email>Primary email address.
countryCodestringprofileNamestringContact's WhatsApp profile name. Only available for WhatsApp contacts.
whatsappobjectWhatsApp identity. Present when Zavu has a business-scoped user ID (BSUID) for the contact, and absent otherwise. A contact with a username can be reached under its BSUID, its phone number, or both; they are the same contact. Look one up by BSUID with the
bsuidquery parameter of the list endpoint.2 properties
bsuidstringrequiredBusiness-scoped user ID. Can be used as
towhen sending.usernamestringThe WhatsApp username, when Meta reported one.
availableChannelsstring[]requiredList of available messaging channels for this contact.
defaultChannelstringPreferred channel for this contact.
One ofsmswhatsapptelegramemailinstagrammessengervoiceverifiedbooleanrequiredWhether this contact has been verified.
channelsobject[]All communication channels for this contact.
12 properties
idstringrequiredchannelstringrequiredChannel type.
One ofsmswhatsappemailtelegraminstagrammessengervoiceidentifierstringrequiredChannel identifier (phone number or email address).
countryCodestringISO country code for phone numbers.
labelstringOptional label for the channel.
isPrimarybooleanrequiredWhether this is the primary channel for its type.
verifiedbooleanrequiredWhether this channel has been verified.
metricsobjectDelivery metrics for this channel.
5 properties
successCountintegerfailureCountintegertotalAttemptsintegeravgDeliveryTimeMsnumberlastSuccessAtstring<date-time>
lastInboundAtstring<date-time>Last time a message was received on this channel.
metadataobject1 properties
{key}string
createdAtstring<date-time>requiredupdatedAtstring<date-time>
metadataobjectrequired1 properties
{key}string
createdAtstring<date-time>requiredupdatedAtstring<date-time>
nextCursorstring
400Unknown tag.
codestringrequiredmessagestringrequireddetailsobjectMachine-readable context. Keys that mean the same thing everywhere: -
errors: present on every400 invalid_requestfor an invalid body or query parameter,[{path, message, ...}],pathnaming the field (["to"],["contacts", 2, "recipient"],["limit"]). -recommendation: one sentence saying what to do next. -dashboardUrl: the dashboard screen that fixes it. -connect: on409 no_channel, the channels this project can connect to reach the recipient, each{type, request, note, available, dashboardUrl?};requestis the exact call (POST /v2/channelswith its body, orPOST /v2/numbers), or null for a channel connected from the dashboard (WhatsApp, Instagram, Messenger).available: falsesays why innote(one-way SMS closed until business verification is approved). -address/from: the address the error is about, under the name the request used for it.1 properties
errorsobject[]3 properties
pathobject[]requiredmessagestringrequiredcodestring
401Unauthorized.
codestringrequiredmessagestringrequireddetailsobjectMachine-readable context. Keys that mean the same thing everywhere: -
errors: present on every400 invalid_requestfor an invalid body or query parameter,[{path, message, ...}],pathnaming the field (["to"],["contacts", 2, "recipient"],["limit"]). -recommendation: one sentence saying what to do next. -dashboardUrl: the dashboard screen that fixes it. -connect: on409 no_channel, the channels this project can connect to reach the recipient, each{type, request, note, available, dashboardUrl?};requestis the exact call (POST /v2/channelswith its body, orPOST /v2/numbers), or null for a channel connected from the dashboard (WhatsApp, Instagram, Messenger).available: falsesays why innote(one-way SMS closed until business verification is approved). -address/from: the address the error is about, under the name the request used for it.1 properties
errorsobject[]3 properties
pathobject[]requiredmessagestringrequiredcodestring