Threads posts now support an explicit topic tag via
Use this to categorize posts for discoverability on Threads; when provided, it overrides auto-extraction from content hashtags.
Set
β’ 1β50 characters
β’ cannot contain
View documentation
platformSpecificData.topic_tag.Use this to categorize posts for discoverability on Threads; when provided, it overrides auto-extraction from content hashtags.
Set
topic_tag (string):β’ 1β50 characters
β’ cannot contain
. or &View documentation
π1π₯1
Zernio now supports WhatsApp Business π
Build full WhatsApp integrations in 2 minutes.
Messaging
β’ Send text, images, video, audio, documents, stickers, contacts, and locations
β’ Interactive messages with buttons, lists, and CTA URLs
β’ Reactions and read receipts
β’ 24-hour conversation window handled automatically: freeform messages when open, template messages when not
Campaigns & Broadcasts
β’ Create and schedule broadcast campaigns to contact lists
β’ Per-recipient variable substitution for personalized templates
β’ Drip sequences with configurable delays between steps
β’ Real-time delivery stats: sent, delivered, read, failed
Template Management
β’ Create custom templates or use Meta's pre-approved library templates
β’ Full CRUD: create, update, delete, list
β’ Support for header media (image, video, document), body variables, buttons, and footers
Contact Management
β’ Import, group, and manage contacts via API
β’ Bulk operations for large lists
Phone Numbers
β’ Purchase and provision numbers directly through the API ($2/mo)
β’ Pre-verified number pool (skip OTP entirely)
β’ Manage business profile, display name, and profile photo
Requires de Inbox add-on. No markup on Meta's per-conversation pricing.
Docs: docs.zernio.com/platforms/whatsapp
Build full WhatsApp integrations in 2 minutes.
Messaging
β’ Send text, images, video, audio, documents, stickers, contacts, and locations
β’ Interactive messages with buttons, lists, and CTA URLs
β’ Reactions and read receipts
β’ 24-hour conversation window handled automatically: freeform messages when open, template messages when not
Campaigns & Broadcasts
β’ Create and schedule broadcast campaigns to contact lists
β’ Per-recipient variable substitution for personalized templates
β’ Drip sequences with configurable delays between steps
β’ Real-time delivery stats: sent, delivered, read, failed
Template Management
β’ Create custom templates or use Meta's pre-approved library templates
β’ Full CRUD: create, update, delete, list
β’ Support for header media (image, video, document), body variables, buttons, and footers
Contact Management
β’ Import, group, and manage contacts via API
β’ Bulk operations for large lists
Phone Numbers
β’ Purchase and provision numbers directly through the API ($2/mo)
β’ Pre-verified number pool (skip OTP entirely)
β’ Manage business profile, display name, and profile photo
Requires de Inbox add-on. No markup on Meta's per-conversation pricing.
Docs: docs.zernio.com/platforms/whatsapp
π₯4β€1
New endpoint:
Currently supported for YouTube videos only; the post must be
Request body:
View documentation
POST /v1/posts/{postId}/update-metadata to update metadata on an already-published post without re-uploading media.Currently supported for YouTube videos only; the post must be
published on the target platform and you must provide at least one updatable field.Request body:
platform (youtube) plus any of title, description, tags, categoryId, privacyStatus (public | private | unlisted).View documentation
β€1π₯1
POST /v1/posts/{postId}/update-metadata now supports updating YouTube video metadata even if the video was uploaded outside Zernio.
Use one of two modes:
β’ Post-based: call with the real
β’ Direct video ID: set
Key params:
β’
β’
β’
In direct mode, the 200 response may include
View documentation
Use one of two modes:
β’ Post-based: call with the real
{postId} and platformβ’ Direct video ID: set
{postId} to _ and include videoId + accountId + platformKey params:
β’
platform: youtubeβ’
videoId (direct mode)β’
accountId (direct mode)In direct mode, the 200 response may include
videoId.View documentation
π₯1
π‘ New API Endpoints
POST /v1/inbox/conversations/{id}/typing
β Typing indicators (Facebook Messenger, Telegram)
DELETE /v1/inbox/conversations/{id}/messages/{msgId}
β Delete messages (Telegram, X, Bluesky, Reddit)
POST/DELETE /v1/inbox/conversations/{id}/messages/{msgId}/reactions
β Emoji reactions (Telegram, WhatsApp)
docs.zernio.com
POST /v1/inbox/conversations/{id}/typing
β Typing indicators (Facebook Messenger, Telegram)
DELETE /v1/inbox/conversations/{id}/messages/{msgId}
β Delete messages (Telegram, X, Bluesky, Reddit)
POST/DELETE /v1/inbox/conversations/{id}/messages/{msgId}/reactions
β Emoji reactions (Telegram, WhatsApp)
docs.zernio.com
π1π₯1
YouTube posts now support adding a video to a playlist via
Use the new playlist endpoints to discover playlist IDs and (optionally) store a client-side default for an account.
New endpoints:
β’
β’
New field:
β’
View documentation
playlistId in YouTubePlatformData.Use the new playlist endpoints to discover playlist IDs and (optionally) store a client-side default for an account.
New endpoints:
β’
GET /v1/accounts/{accountId}/youtube-playlists β returns playlists[] and defaultPlaylistIdβ’
PUT /v1/accounts/{accountId}/youtube-playlists with defaultPlaylistId (optional defaultPlaylistName)New field:
β’
platformSpecificData.youtube.playlistId (string) β optional playlist to add the video to after uploadView documentation
π₯2β€1
YouTube metadata updates now support setting a custom thumbnail via
You can update the thumbnail without re-uploading, including for existing videos not published through Zernio (direct video ID mode).
Use
Key params:
View documentation
POST /v1/posts/{postId}/update-metadata.You can update the thumbnail without re-uploading, including for existing videos not published through Zernio (direct video ID mode).
Use
thumbnailUrl (public image URL) with platform youtube. In direct mode also include videoId + accountId.Key params:
platform (youtube), thumbnailUrl, videoId, accountIdView documentation
π₯2π₯°1
YouTube metadata updates now support additional fields on
You can now set COPPA compliance, disclose AI/synthetic media, and add a video to a playlist without re-uploading.
New optional properties:
β’
β’
β’
View documentation
POST /v1/posts/{postId}/update-metadata.You can now set COPPA compliance, disclose AI/synthetic media, and add a video to a playlist without re-uploading.
New optional properties:
β’
madeForKids (boolean)β’
containsSyntheticMedia (boolean)β’
playlistId (string)View documentation
π₯2
4 new Inbox APIs just shipped
1. Contacts
Auto-created from every DM across all your connected accounts. Add tags, custom fields, bulk import.
2. Broadcasts
Send one message to thousands of contacts. Segment by tag or custom field. Supports Instagram, Facebook, Telegram, WhatsApp, Twitter, Bluesky, Reddit. Schedule or send immediately. Real-time delivery + read tracking.
3. Sequences
Drip campaigns for social DMs. Set delays between steps (hours, days). Auto-exit on reply or unsubscribe.
4. Comment Automations
Set a keyword on any Instagram or Facebook post. When someone comments it, they get a DM instantly. Add an optional public reply too.
All official platform APIs. Requires the Inbox add-on.
https://docs.zernio.com/
1. Contacts
Auto-created from every DM across all your connected accounts. Add tags, custom fields, bulk import.
POST /v1/contacts Β· POST /v1/contacts/bulk Β· GET /v1/contacts Β· GET /v1/contacts/:id Β· PATCH /v1/contacts/:id Β· DELETE /v1/contacts/:id
2. Broadcasts
Send one message to thousands of contacts. Segment by tag or custom field. Supports Instagram, Facebook, Telegram, WhatsApp, Twitter, Bluesky, Reddit. Schedule or send immediately. Real-time delivery + read tracking.
POST /v1/broadcasts Β· POST /v1/broadcasts/:id/send Β· POST /v1/broadcasts/:id/schedule Β· POST /v1/broadcasts/:id/cancel Β· POST /v1/broadcasts/:id/recipients
3. Sequences
Drip campaigns for social DMs. Set delays between steps (hours, days). Auto-exit on reply or unsubscribe.
POST /v1/sequences Β· POST /v1/sequences/:id/activate Β· POST /v1/sequences/:id/pause Β· POST /v1/sequences/:id/enroll Β· GET /v1/sequences/:id/enrollments
4. Comment Automations
Set a keyword on any Instagram or Facebook post. When someone comments it, they get a DM instantly. Add an optional public reply too.
POST /v1/comment-automations Β· GET /v1/comment-automations/:id/logs
All official platform APIs. Requires the Inbox add-on.
https://docs.zernio.com/
β€3π₯3π1π1π1
YouTube analytics now supports audience demographics via
Fetch demographic insights for a YouTube channel broken down by age/gender (percentages) and country (view counts). Requires the Analytics add-on and YouTube Analytics scope.
Key params:
β’
β’
β’
WhatsApp now supports Flows (create/manage/publish and send interactive flow messages).
Manage flows:
β’
β’
β’
β’
β’
Flow JSON asset:
β’
β’
Lifecycle:
β’
β’
Send a flow message:
β’
β’ Optional
View documentation
GET /v1/analytics/youtube/demographics.Fetch demographic insights for a YouTube channel broken down by age/gender (percentages) and country (view counts). Requires the Analytics add-on and YouTube Analytics scope.
Key params:
β’
accountId (required)β’
breakdown = age, gender, country (comma-separated; defaults to all)β’
startDate, endDateWhatsApp now supports Flows (create/manage/publish and send interactive flow messages).
Manage flows:
β’
GET /v1/whatsapp/flows (accountId)β’
POST /v1/whatsapp/flows (accountId, name, categories, optional cloneFlowId)β’
GET /v1/whatsapp/flows/{flowId} (accountId, optional fields)β’
PATCH /v1/whatsapp/flows/{flowId} (accountId, name/categories; DRAFT only)β’
DELETE /v1/whatsapp/flows/{flowId} (accountId; DRAFT only)Flow JSON asset:
β’
GET /v1/whatsapp/flows/{flowId}/json (accountId)β’
PUT /v1/whatsapp/flows/{flowId}/json (accountId, flow_json; DRAFT only)Lifecycle:
β’
POST /v1/whatsapp/flows/{flowId}/publish (accountId; irreversible)β’
POST /v1/whatsapp/flows/{flowId}/deprecate (accountId; irreversible)Send a flow message:
β’
POST /v1/whatsapp/flows/send with accountId, to, flow_id, flow_cta, bodyβ’ Optional
flow_action = navigate | data_exchange, flow_token, flow_action_payload, draftView documentation
β€2π1π₯1π1
New Google Business Profile analytics endpoints are available.
Fetch daily performance metrics (impressions, clicks, calls, directions, etc.) via
Key params:
β’
β’
β’
Fetch monthly search keywords via
Key params:
β’
β’
Note: keywords below Googleβs minimum impression threshold are excluded.
View documentation
Fetch daily performance metrics (impressions, clicks, calls, directions, etc.) via
GET /v1/analytics/googlebusiness/performance. Requires accountId and the Analytics add-on; data may be delayed 2β3 days; up to 18 months history.Key params:
β’
accountId (required)β’
metrics (comma-separated; defaults to all): BUSINESS_IMPRESSIONS_DESKTOP_MAPS, BUSINESS_IMPRESSIONS_DESKTOP_SEARCH, BUSINESS_IMPRESSIONS_MOBILE_MAPS, BUSINESS_IMPRESSIONS_MOBILE_SEARCH, BUSINESS_CONVERSATIONS, BUSINESS_DIRECTION_REQUESTS, CALL_CLICKS, WEBSITE_CLICKS, BUSINESS_BOOKINGS, BUSINESS_FOOD_ORDERS, BUSINESS_FOOD_MENU_CLICKSβ’
startDate, endDate (YYYY-MM-DD)Fetch monthly search keywords via
GET /v1/analytics/googlebusiness/search-keywords. Requires accountId and the Analytics add-on; up to 18 months history.Key params:
β’
accountId (required)β’
startMonth, endMonth (YYYY-MM)Note: keywords below Googleβs minimum impression threshold are excluded.
View documentation
π₯2β€1
You can now edit a published X (Twitter) post via
This updates the post on X and stores edit history in Zernio. X constraints apply (Premium required, 1-hour edit window, max 5 edits, text-only).
Request body:
β’
β’
Response includes:
β’
β’
You can now start/send X DMs via
If a thread already exists, the message is appended. If the recipient doesnβt accept DMs, youβll get
Key fields:
β’
β’
β’
β’
Also added:
β’ Root-level
β’
View documentation
POST /v1/posts/{postId}/edit.This updates the post on X and stores edit history in Zernio. X constraints apply (Premium required, 1-hour edit window, max 5 edits, text-only).
Request body:
β’
platform: twitterβ’
content: new textResponse includes:
β’
id (new tweet ID after edit)β’
urlYou can now start/send X DMs via
POST /v1/inbox/conversations.If a thread already exists, the message is appended. If the recipient doesnβt accept DMs, youβll get
422 with code=DM_NOT_ALLOWED (or bypass the pre-check with skipDmCheck).Key fields:
β’
accountIdβ’
participantId or participantUsernameβ’
message (or attachment via multipart/form-data)β’
skipDmCheckAlso added:
β’ Root-level
facebookSettings on POST /v1/posts and PUT /v1/posts/{postId} (e.g. facebookSettings.draft=true to create an unpublished draft in Facebook Publishing Tools)β’
TwitterPlatformData.longVideo=true to enable long video uploads (requires X Premium; may require allowlisting).View documentation
β€2π₯2π―1
Facebook now supports posting an optional first comment for Reels as well as feed posts.
Use
Applies when
View documentation
Use
platformSpecificData.facebook.firstComment to add a comment immediately after publishing (not supported for contentType=story). Skipped when draft is true.Applies when
contentType is reel (or omitted for feed posts).View documentation
π₯3
We just released the official Zernio adapter for Vercel's Chat SDK
https://docs.zernio.com/resources/integrations/chat-sdk
https://docs.zernio.com/resources/integrations/chat-sdk
Zernio
Zernio Chat SDK Adapter - Build Multi-Platform Chatbots
Build chatbots that work across Instagram, Facebook, Telegram, WhatsApp, Twitter/X, Bluesky, and Reddit through a single Chat SDK adapter.
π₯5
Webhooks now support message sent events via
Use this to get notified when a message is sent via the API, including message + conversation context.
Subscribe by adding
You can also filter/view deliveries in logs with
Payload schema:
View documentation
message.sent.Use this to get notified when a message is sent via the API, including message + conversation context.
Subscribe by adding
message.sent to Webhook.events.You can also filter/view deliveries in logs with
GET /v1/webhooks/logs using event=message.sent.Payload schema:
WebhookPayloadMessageSent (includes message, conversation, account, timestamp).View documentation
β€2π2π1
Discord is now supported as a platform in several endpoints and response schemas.
You can now use
Updated enums:
β’
β’
β’
β’ Schemas:
View documentation
You can now use
platform=discord to connect accounts, validate content, and filter account health.Updated enums:
β’
GET /v1/connect/{platform}: {platform} includes discordβ’
POST /v1/tools/validate/post: platforms[].platform includes discordβ’
GET /v1/accounts/health: query platform includes discordβ’ Schemas:
SocialAccount.platform, PostLog.platform, ConnectionLog.platform include discordView documentation
β€2
Meta ads now return additional campaign/ad set details in ad reporting responses.
You can use these fields to display objective/optimization/bidding context and conversion event setup alongside metrics.
New fields:
β’ On
β’ On
β’ On
View documentation
You can use these fields to display objective/optimization/bidding context and conversion event setup alongside metrics.
New fields:
β’ On
Ad: platformObjective, optimizationGoal, bidStrategy, promotedObjectβ’ On
AdTreeCampaign and AdCampaign: platformObjective, optimizationGoal (can be string or string[]), bidStrategy, promotedObjectβ’ On
AdTreeAdSet: optimizationGoal, bidStrategy, promotedObjectpromotedObject may include custom_event_type, pixel_id, page_id (and on Ad also application_id, product_set_id). Fields are null when not applicable and are only present for Meta ads.View documentation
β€3π₯2
Campaign-level
If ad sets have different optimization goals, the API now returns a comma-separated string instead of an array.
Applies to:
β’
β’
Example:
View documentation
optimizationGoal is now always a string in ads campaign responses.If ad sets have different optimization goals, the API now returns a comma-separated string instead of an array.
Applies to:
β’
GET /v1/ads/campaigns (AdCampaign.optimizationGoal)β’
GET /v1/ads/tree (AdTreeCampaign.optimizationGoal)Example:
"OFFSITE_CONVERSIONS, VALUE, LEAD_GENERATION"View documentation
β€2
New Ads Conversions API endpoints are available:
You can now relay conversion events to Meta or Google Ads; platform is inferred from
Use
Send events via
Response includes
View documentation
POST /v1/ads/conversions and GET /v1/accounts/{accountId}/conversion-destinations.You can now relay conversion events to Meta or Google Ads; platform is inferred from
accountId. List valid destinations first, then send a batch of events.Use
GET /v1/accounts/{accountId}/conversion-destinations to get destinations[].id (use as destinationId) and destinations[].status (active/inactive). For Google, destinations[].type is present (event type locked to the conversion action).Send events via
POST /v1/ads/conversions with accountId, destinationId, events[] (each requires eventName, eventTime, eventId, user). Optional: testCode (Meta only) and batch-level consent (adUserData/adPersonalization: GRANTED/DENIED, Google only).Response includes
platform (metaads/googleads), eventsReceived, eventsFailed, failures[], and traceId. Requires the Ads add-on.View documentation
π₯4π1
Discord support has been added: you can now manage Discord account settings, list available guild channels, and post to Discord with Discord-specific options.
Manage Discord connection settings:
β’
β’
β’
Post to Discord via
β’ Required:
β’ Optional:
Analytics responses now include
Ads goals have been expanded in
View documentation
Manage Discord connection settings:
β’
GET /v1/accounts/{accountId}/discord-settings (read current channel/guild + webhook identity)β’
PATCH /v1/accounts/{accountId}/discord-settings (update webhookUsername/webhookAvatarUrl and/or switch channelId)β’
GET /v1/accounts/{accountId}/discord-channels (discover channels: type = 0/5/15)Post to Discord via
POST /v1/posts using platformSpecificData = DiscordPlatformData:β’ Required:
channelIdβ’ Optional:
embeds, poll, crosspost, forumThreadName, forumAppliedTags, threadFromMessage, tts, webhookUsername, webhookAvatarUrlAnalytics responses now include
platformPostId per platform in GET /v1/analytics.Ads goals have been expanded in
POST /v1/ads/boost and POST /v1/ads/create: goal now supports engagement, traffic, awareness, video_views, lead_generation, conversions, app_promotion (availability varies by platform).View documentation
β€2π₯2
Webhook comment.received payloads may now include
Handle missing internal IDs by relying on the platform IDs instead.
Fields that can now be
β’
β’
Use
View documentation
null for Zernio internal post IDs when the post was not published through Zernio.Handle missing internal IDs by relying on the platform IDs instead.
Fields that can now be
null:β’
comment.postIdβ’
post.idUse
comment.platformPostId / post.platformPostId as the stable identifiers in these cases.View documentation
β€1