WhatsApp is now supported as a
You can now use
•
•
View documentation
platform for connecting accounts and checking account health.You can now use
whatsapp with:•
GET /v1/connect/{platform} (path param platform enum now includes whatsapp)•
GET /v1/accounts/health (query param platform enum now includes whatsapp)View documentation
❤2
Instagram now supports Stories retrieval + insights.
You can list currently-active stories and fetch metrics for a specific story, including a clear indicator of whether insights are live, cached, or unavailable.
New endpoints:
•
Returns active stories (24h window). Key fields:
•
Returns
View documentation
You can list currently-active stories and fetch metrics for a specific story, including a clear indicator of whether insights are live, cached, or unavailable.
New endpoints:
•
GET /v1/accounts/{accountId}/instagram/storiesReturns active stories (24h window). Key fields:
id, mediaType, mediaUrl (nullable), permalink, thumbnailUrl, timestamp•
GET /v1/accounts/{accountId}/instagram/stories/{storyId}/insightsReturns
data.source = live | cached | unavailable and data.metrics including views, reach, replies, shares, navigation, tapsForward, tapsBack, exits, swipesForward, profileVisits, follows, reposts, totalInteractions.View documentation
❤4🔥1
GET
This provides the Meta WhatsApp error code to help you classify and handle delivery failures (only populated when
New field:
View documentation
/v1/broadcasts/{broadcastId}/recipients now returns errorCode per recipient.This provides the Meta WhatsApp error code to help you classify and handle delivery failures (only populated when
status=failed).New field:
errorCode (integer, nullable) — e.g. 131049 (antispam), 131021 (invalid phone), 131026 (re-engagement required).View documentation
❤3
GET /v1/ads/audiences now supports fetching custom audiences for LinkedIn and X (Twitter) ad accounts.Use the
platform query param with one of:•
facebook, instagram, googleads, tiktok, tiktokads, pinterest, linkedin, linkedinads, twitter, xadsView documentation
🔥1
Webhooks now support message reaction events via the new
Subscribe by including
The
View documentation
reaction.received subscription.Subscribe by including
reaction.received in events when calling POST /v1/webhooks/settings or PUT /v1/webhooks/settings.The
reaction payload includes emoji, action (added | removed), platformMessageId, optional messageId, sender, and reactedAt.View documentation
❤2
Google Business Profile verification is now supported via new GMB Verifications endpoints.
You can fetch verification status/history, discover eligible methods, start a verification (SMS/call/email/postcard), and complete it by submitting the PIN.
New endpoints:
•
•
•
•
Note: service-area businesses may require
View documentation
You can fetch verification status/history, discover eligible methods, start a verification (SMS/call/email/postcard), and complete it by submitting the PIN.
New endpoints:
•
GET /v1/accounts/{accountId}/gmb-verifications (optional locationId) returns voiceOfMerchantState.hasVoiceOfMerchant and verifications[].state = PENDING/COMPLETED/FAILED•
POST /v1/accounts/{accountId}/gmb-verifications/options requires languageCode; returns options[].verificationMethod = ADDRESS/EMAIL/PHONE_CALL/SMS/AUTO/VETTED_PARTNER•
POST /v1/accounts/{accountId}/gmb-verifications starts verification with method (+ method-specific fields like phoneNumber/emailAddress)•
POST /v1/accounts/{accountId}/gmb-verifications/{verificationId}/complete completes with pinNote: service-area businesses may require
context (service address) when fetching options/starting verification.View documentation
❤1
GET
This lets you render a post preview in the inbox/comments view without an additional Reddit fetch.
Key fields in
View documentation
/v1/inbox/comments/{postId} now returns (Reddit only) post metadata alongside comments in a new post object.This lets you render a post preview in the inbox/comments view without an additional Reddit fetch.
post is null/absent for non-Reddit platforms and may be missing if the upstream post listing isn’t available.Key fields in
post: id, fullname, title, selftext, author, subreddit, permalink, url, score, numComments, createdUtc, over18, stickied, flairText, isGallery.View documentation
🔥1
New endpoint POST /v1/ads/targeting/reach-estimate returns a normalized pre-flight audience reach estimate for a targeting spec before creating a campaign.
Send
Response includes
GET /v1/ads/interests is now deprecated. Use GET /v1/ads/targeting/search with
GET /v1/ads/targeting/search is now cross-platform and normalized. Use
POST /v1/ads/create targeting now supports additional fields:
Audiences now support reusable targeting presets: POST /v1/ads/audiences accepts
View documentation
Send
accountId + spec (same shape as TargetingSpec used by ads create). Optionally pass optimizationGoal.Response includes
available, and when available: lower, upper, optional daily, currency, and Meta-only estimateReady.GET /v1/ads/interests is now deprecated. Use GET /v1/ads/targeting/search with
dimension=interest (the deprecated alias still returns the legacy { interests: [...] } shape).GET /v1/ads/targeting/search is now cross-platform and normalized. Use
dimension = geo | interest | behavior | income, and for geo also geoType = country | region | city | zip | metro. Results return { results: [{ id, name, type, path?, audienceSize? }] }.POST /v1/ads/create targeting now supports additional fields:
zips, metros, customLocations, behaviors, incomeTier (top_5 | top_10 | top_10_25 | top_25_50), languages, savedTargetingId, specialAdCategories (HOUSING | EMPLOYMENT | CREDIT | ISSUES_ELECTIONS_POLITICS).Audiences now support reusable targeting presets: POST /v1/ads/audiences accepts
type=saved_targeting with spec (no adAccountId), and GET /v1/ads/audiences adds type filter and returns spec when type is saved_targeting.View documentation
❤1
Meta Lead Gen is now supported end-to-end: you can manage Instant Forms and retrieve submitted leads via new Ads endpoints.
New endpoints:
• List all leads (cross-form CRM view):
• Manage forms:
• Form leads + testing:
Ad creation update (Meta only):
View documentation
New endpoints:
• List all leads (cross-form CRM view):
GET /v1/ads/leads with formId, accountId, since, limit, cursor• Manage forms:
GET /v1/ads/lead-forms, POST /v1/ads/lead-forms, GET /v1/ads/lead-forms/{formId}, DELETE /v1/ads/lead-forms/{formId}• Form leads + testing:
GET /v1/ads/lead-forms/{formId}/leads, POST /v1/ads/lead-forms/{formId}/test-leadsAd creation update (Meta only):
POST /v1/ads/create now accepts leadGenFormId. When goal is lead_generation, leadGenFormId is REQUIRED, and linkUrl is NOT required (the ad opens the form).View documentation
❤3
New webhook payload schema added for Meta Lead Gen / Instant Forms leads: lead.received via
This lets webhook consumers reliably parse incoming lead data (form, ad/campaign attribution when available, and submitted field answers).
Key properties:
•
•
•
•
•
•
•
View documentation
WebhookPayloadLead.This lets webhook consumers reliably parse incoming lead data (form, ad/campaign attribution when available, and submitted field answers).
Key properties:
•
event: lead.received•
lead.id, lead.leadgenId, lead.formId, lead.formName•
lead.adId, lead.adsetId, lead.campaignId (nullable)•
lead.fields: flattened key → value map•
lead.isOrganic, lead.createdAt•
account.platform: facebook, account.id•
timestampView documentation
😁2
PostAnalytics now includes Instagram Reels watch-time metrics.You can retrieve average and total watch time for Reels (values are
0 for non-Reels media and other platforms).New fields:
•
igReelsAvgWatchTime (ms)•
igReelsVideoViewTotalTime (ms)View documentation
🔥4❤2
POST /v1/inbox/conversations now supports starting conversations on X/Twitter, Bluesky, Reddit, and WhatsApp (previously X/Twitter only).You can initiate DMs across these platforms using
participantId or participantUsername (platform-dependent).WhatsApp requires an approved template to start a conversation: set
templateName, templateLanguage, and optional templateParams (freeform initial messages aren’t allowed). message is now optional when using a WhatsApp template.skipDmCheck remains X/Twitter only.View documentation
❤3
Inbox messages now include emoji reactions on supported platforms (WhatsApp / Telegram) via
This lets you display who reacted and when, alongside the message timeline.
New per-message field:
•
Sending messages now supports WhatsApp location and contact cards.
New request fields for
•
•
View documentation
reactions on each message.This lets you display who reacted and when, alongside the message timeline.
New per-message field:
•
reactions[]: { emoji, fromMe, reactedAt }Sending messages now supports WhatsApp location and contact cards.
New request fields for
POST /v1/inbox/conversations/{conversationId}/messages:•
location: { latitude, longitude, name?, address? }•
contacts[]: contact card objects (requires name.formatted_name; optional phones[], emails[])View documentation
Inbox messages now include platform-specific metadata on each message via
This lets you read extra context like quoted replies and WhatsApp interactive/tap details without relying only on webhooks.
New field:
•
WhatsApp multipart sends now support voice note uploads via
Set
New multipart field:
•
View documentation
messages[].metadata.This lets you read extra context like quoted replies and WhatsApp interactive/tap details without relying only on webhooks.
New field:
•
messages[].metadata (free-form object; commonly includes quotedMessageId, waInteractive, and inbound tap fields like interactiveType / interactiveId)WhatsApp multipart sends now support voice note uploads via
voiceNote.Set
voiceNote to true when uploading an in-browser recorded audio so it’s transcoded to WhatsApp-native ogg/Opus.New multipart field:
•
voiceNote: true (WhatsApp-only)View documentation
❤2
WhatsApp Flows now support flow previews and version history.
You can fetch Meta’s embeddable web preview URL for a flow (drafts included), and list Zernio-tracked versions for a flow’s clone lineage.
New endpoints:
•
•
Flow versioning metadata is now returned:
•
•
Cloning can now stay in the same lineage:
•
View documentation
You can fetch Meta’s embeddable web preview URL for a flow (drafts included), and list Zernio-tracked versions for a flow’s clone lineage.
New endpoints:
•
GET /v1/whatsapp/flows/{flowId}/preview with accountId and optional invalidate (mint a fresh link)•
GET /v1/whatsapp/flows/{flowId}/versions with accountIdFlow versioning metadata is now returned:
•
GET /v1/whatsapp/flows adds version and lineageId per flow•
POST /v1/whatsapp/flows response adds version and lineageIdCloning can now stay in the same lineage:
•
POST /v1/whatsapp/flows adds asVersion (only when using cloneFlowId)View documentation
👍2❤1
WhatsApp Flows now supports listing submitted flow responses via
This lets you fetch customer responses parsed from
Use:
•
•
•
Response items include
Also updated: when sending flows via
View documentation
GET /v1/whatsapp/flow-responses.This lets you fetch customer responses parsed from
nfm_reply webhook messages (newest first), and optionally scope them to a specific flow.Use:
•
accountId (required)•
flowId (optional)•
limit (optional, max 200, default 50)Response items include
id, receivedAt, from, senderName, conversationId, flowToken, data, raw.Also updated: when sending flows via
POST /v1/whatsapp/flows/send, if flow_token is omitted it is now auto-generated as <flowId>:<uuid> so responses can be attributed to that flow in the Flow Responses view.View documentation
❤1
New endpoint:
You can now look up a single pre-approved WhatsApp Template Library template by exact name to inspect its structure before importing—especially the
Required query params:
•
•
Response (
View documentation
GET /v1/whatsapp/template-library.You can now look up a single pre-approved WhatsApp Template Library template by exact name to inspect its structure before importing—especially the
buttons you must mirror when creating a template (e.g., URL/PHONE_NUMBER inputs).Required query params:
•
accountId (WhatsApp social account ID)•
name (exact library template name)Response (
200): template (object or null) with key fields like body_params and buttons where buttons[].type can be QUICK_REPLY, URL, PHONE_NUMBER, OTP, FLOW, ...View documentation
❤2
WhatsApp now supports managing the Meta CTWA conversions dataset via two new endpoints.
Use these to detect whether Conversions API reporting is configured for a WhatsApp account and to provision the required Meta dataset (idempotent).
Check current dataset:
Returns
Provision (or fetch existing) dataset:
Returns
If the account token is missing
View documentation
Use these to detect whether Conversions API reporting is configured for a WhatsApp account and to provision the required Meta dataset (idempotent).
Check current dataset:
GET /v1/whatsapp/dataset with accountId (query)Returns
datasetId (nullable).Provision (or fetch existing) dataset:
POST /v1/whatsapp/dataset with body accountIdReturns
datasetId and created (boolean).If the account token is missing
whatsapp_business_manage_events, provisioning returns 422 (reconnect required).View documentation
🔥1
Inbox webhooks now include a sender
This lets you link inbound messages/reactions directly to a Contact (via the ContactChannel mapping) without an extra Contacts API lookup. The field is omitted when no contact exists (and typically for outgoing/business sender).
New field:
•
•
•
View documentation
contactId when the sender matches a Zernio CRM Contact.This lets you link inbound messages/reactions directly to a Contact (via the ContactChannel mapping) without an extra Contacts API lookup. The field is omitted when no contact exists (and typically for outgoing/business sender).
New field:
•
message.sender.contactId in message.received and message.sent•
reaction.sender.contactId in reaction.received•
InboxWebhookMessage.sender.contactIdView documentation
🔥2
New endpoint:
You can now fetch recent WhatsApp conversion send events (from delivery logs, ~30-day retention) to power a “recent activity” view without maintaining your own persistence.
Required query:
Optional query:
Response includes per-event fields like
View documentation
GET /v1/whatsapp/conversions.You can now fetch recent WhatsApp conversion send events (from delivery logs, ~30-day retention) to power a “recent activity” view without maintaining your own persistence.
Required query:
accountIdOptional query:
limit (1–200, default 50)Response includes per-event fields like
timestamp, eventName (LeadSubmitted, Purchase, AddToCart, InitiateCheckout, ViewContent), conversationId, eventsReceived, eventsFailed, traceId, durationMs.View documentation
🔥2
POST
When sending an audio attachment, set
Key params:
•
•
•
Note: the audio must be
View documentation
/v1/inbox/conversations/{conversationId}/messages now supports WhatsApp voice messages (PTT) via voiceNote in the JSON body.When sending an audio attachment, set
voiceNote to true to send it as a WhatsApp voice note (waveform/voice-note UI) instead of a regular audio file.Key params:
•
attachmentType: audio•
attachmentUrl: public URL to the audio file•
voiceNote: true (WhatsApp only)Note: the audio must be
.ogg encoded with OPUS (mono); other formats will be rejected by WhatsApp.View documentation
❤3