GET /v1/analytics now returns richer media metadata for analytics results.You can render previews and handle carousels consistently using the new fields on both single-post and list responses.
New fields:
β’
thumbnailUrlβ’
mediaType = image | video | gif | document | carousel | text (single-post also supports image | video | carousel | text)β’
mediaItems (array of { type: image|video, url, thumbnail }; carousel posts include one entry per slide)View documentation
π₯°1
Late API now supports X/Twitter engagement actions: retweet, bookmark, and follow (plus undo/remove/unfollow).
Use:
β’ Retweet:
β’ Undo retweet:
β’ Bookmark:
β’ Remove bookmark:
β’ Follow:
β’ Unfollow:
Inbox comment moderation also adds X/Twitter support:
β’
β’
For X/Twitter, the reply must be in a conversation started by the authenticated user and requires
View documentation
Use:
β’ Retweet:
POST /v1/twitter/retweet with accountId, tweetIdβ’ Undo retweet:
DELETE /v1/twitter/retweet with accountId, tweetIdβ’ Bookmark:
POST /v1/twitter/bookmark with accountId, tweetIdβ’ Remove bookmark:
DELETE /v1/twitter/bookmark with accountId, tweetIdβ’ Follow:
POST /v1/twitter/follow with accountId, targetUserId (response may include pending_follow for protected accounts)β’ Unfollow:
DELETE /v1/twitter/follow with accountId, targetUserIdInbox comment moderation also adds X/Twitter support:
β’
POST /v1/inbox/comments/{postId}/{commentId}/hideβ’
DELETE /v1/inbox/comments/{postId}/{commentId}/hideFor X/Twitter, the reply must be in a conversation started by the authenticated user and requires
tweet.moderate.write + X API Basic tier (or higher). Bookmark/follow also require bookmark.write / follows.write scopes, and X API Basic tier (or higher).View documentation
β€1π₯1
GET
Single-post lookups can return
Key changes:
β’ Date defaults/limits:
β’ Sorting:
β’ Single post response adds
β’ Per-platform analytics now include
β’ List responses add
View documentation
/v1/analytics now supports richer analytics sync states and more sorting options.Single-post lookups can return
202 when analytics sync is still pending, or 424 when analytics are unavailable because the post failed on all platforms.Key changes:
β’ Date defaults/limits:
fromDate defaults to 90 days ago, toDate defaults to today, max range 366 daysβ’ Sorting:
sortBy now supports date, engagement, impressions, reach, likes, comments, shares, saves, clicks, viewsβ’ Single post response adds
latePostId, syncStatus (synced/pending/partial/unavailable) and message; status can be published/failed/partialβ’ Per-platform analytics now include
syncStatus (synced/pending/unavailable), platformPostUrl, and errorMessage; analytics may be nullβ’ List responses add
posts[].latePostId, posts[].profileId, and overview.dataStalenessView documentation
π₯2π₯°1
Late is now Zernio.
New name. Same API. Same mission: one integration to publish across Instagram, TikTok, LinkedIn, YouTube, X, Facebook, WhatsApp, and 6 more platforms.
What changes:
β’ getlate.dev permanently redirects to zernio.com
β’ New name, new domain, new look
What doesn't change:
β’ Your API keys, endpoints, and integrations all keep working
β’ Zero code changes required
β’ Same team, same support, same reliability
Why rebrand?
"Late" is a common English word. That made us nearly impossible to search for, hard to recommend by name, and easy to confuse. Zernio is distinctive, memorable, and ours.
Watch the announcement: zernio.com/rebrand
Spotted something off during the transition? Hit us up in the support chat. We're monitoring everything closely.
Thanks for building with us βοΈ
New name. Same API. Same mission: one integration to publish across Instagram, TikTok, LinkedIn, YouTube, X, Facebook, WhatsApp, and 6 more platforms.
What changes:
β’ getlate.dev permanently redirects to zernio.com
β’ New name, new domain, new look
What doesn't change:
β’ Your API keys, endpoints, and integrations all keep working
β’ Zero code changes required
β’ Same team, same support, same reliability
Why rebrand?
"Late" is a common English word. That made us nearly impossible to search for, hard to recommend by name, and easy to confuse. Zernio is distinctive, memorable, and ours.
Watch the announcement: zernio.com/rebrand
Spotted something off during the transition? Hit us up in the support chat. We're monitoring everything closely.
Thanks for building with us βοΈ
Zernio
Late is now Zernio
Same team, same API, same reliability. Zero breaking changes.
π₯5β€3π2
New endpoint:
You can now fetch TikTok creator details plus the allowed posting options for an account (privacy levels, interaction settings, posting limits, and commercial content disclosures). Useful for validating post settings before publishing.
Key params:
β’
β’
Also added to
View documentation
GET /v1/accounts/{accountId}/tiktok/creator-info.You can now fetch TikTok creator details plus the allowed posting options for an account (privacy levels, interaction settings, posting limits, and commercial content disclosures). Useful for validating post settings before publishing.
Key params:
β’
accountId (path)β’
mediaType (query, default video): video, photoAlso added to
TikTokPlatformData for video posts: videoCoverImageUrl (custom thumbnail URL). When set, it overrides videoCoverTimestampMs.View documentation
π₯3β€1
TikTok video posts now support a custom cover image via
Provide a thumbnail image URL (JPG/PNG/WebP, max 20MB). When set, it overrides
Use:
β’
β’
View documentation
videoCoverImageUrl in TikTokPlatformData.Provide a thumbnail image URL (JPG/PNG/WebP, max 20MB). When set, it overrides
videoCoverTimestampMs.Use:
β’
videoCoverImageUrl - custom thumbnail image URLβ’
videoCoverTimestampMs - frame timestamp (ms), ignored if videoCoverImageUrl is providedView documentation
π₯4β€1
Instagram Analytics now supports account-level insights and audience demographics.
Fetch account performance totals or daily reach via
Key params:
Fetch audience breakdowns via
Key params:
View documentation
Fetch account performance totals or daily reach via
GET /v1/analytics/instagram/account-insights.Key params:
accountId (required), metrics, since, until, metricType (time_series | total_value), breakdown (total_value only). Note: time_series only works with reach. Max range: 90 days (default last 30). Data may be delayed up to 48 hours. Requires Analytics add-on.Fetch audience breakdowns via
GET /v1/analytics/instagram/demographics.Key params:
accountId (required), metric (follower_demographics | engaged_audience_demographics), breakdown (age, city, country, gender), timeframe (this_week | this_month). Requires 100+ followers, returns top 45 per dimension, and may be delayed up to 48 hours. Requires Analytics add-on.View documentation
π₯4
You can now send inbox attachments by URL when calling
Provide
Twitter posts now support polls via
Set
View documentation
POST /v1/inbox/conversations/{conversationId}/messages (JSON body), without using multipart upload.Provide
attachmentUrl (publicly accessible) and optionally attachmentType (image, video, audio, file).Twitter posts now support polls via
TwitterPlatformData.poll.Set
poll.options (2-4 items, max 25 chars each) and poll.duration_minutes (5-10080). Polls are mutually exclusive with media attachments and threads.View documentation
β€1π₯1
Analytics endpoints now support filtering by social account via
This lets you scope results to a specific connected account (useful when a
New query parameter:
β’
β’
View documentation
accountId.This lets you scope results to a specific connected account (useful when a
profileId contains multiple accounts).New query parameter:
β’
GET /v1/analytics: accountIdβ’
GET /v1/analytics/daily-metrics: accountIdView documentation
π₯4
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