POST
You can send a private reply to a Facebook post comment, which opens a Messenger conversation with the commenter (text-only; still limited to 1 private reply per comment within 7 days).
Use
View documentation
/v1/inbox/comments/{postId}/{commentId}/private-reply now supports Facebook in addition to Instagram.You can send a private reply to a Facebook post comment, which opens a Messenger conversation with the commenter (text-only; still limited to 1 private reply per comment within 7 days).
Use
accountId (Instagram or Facebook) and message in the JSON body. The response platform is now instagram or facebook.View documentation
π₯2
Instagram photo tagging now supports tagging specific slides in carousel posts via
This lets you place tags on any image within a carousel. Tags without
Use:
β’
Notes:
β’ Not supported for stories or videos; tags targeting video items (or out-of-range indices) are ignored.
View documentation
mediaIndex in platformSpecificData.userTags.This lets you place tags on any image within a carousel. Tags without
mediaIndex still default to the first image (index 0).Use:
β’
userTags[].mediaIndex (integer, 0-based)Notes:
β’ Not supported for stories or videos; tags targeting video items (or out-of-range indices) are ignored.
View documentation
β€1
New endpoint:
You can now delete a previously published post from a specific social platform while keeping the Late post record (platform status becomes
Request body:
Notes: Instagram/TikTok/Snapchat deletion isnβt supported. Telegram deletions may fail for messages older than 48h. YouTube deletion permanently removes the video.
View documentation
POST /v1/posts/{postId}/unpublish.You can now delete a previously published post from a specific social platform while keeping the Late post record (platform status becomes
cancelled).Request body:
platform = threads | facebook | twitter | linkedin | youtube | pinterest | reddit | bluesky | googlebusiness | telegram.Notes: Instagram/TikTok/Snapchat deletion isnβt supported. Telegram deletions may fail for messages older than 48h. YouTube deletion permanently removes the video.
View documentation
π₯4
Facebook publishing now supports Reels via
Set
New field for reels:
β’
Note:
View documentation
FacebookPlatformData.contentType.Set
contentType to story or reel (omit for a feed post). Reels require a single vertical video (9:16, 3β60s).New field for reels:
β’
title β Reel title (only when contentType=reel)Note:
firstComment applies to feed posts only (not stories or reels).View documentation
π₯3β€1
API keys can now be created with restricted access using
This lets you issue keys limited to specific profiles and/or make keys read-only for safer analytics/integration use.
New request fields:
β’
β’
β’
Key responses now include
View documentation
scope, profileIds, and permission on POST /v1/api-keys.This lets you issue keys limited to specific profiles and/or make keys read-only for safer analytics/integration use.
New request fields:
β’
scope: full | profiles (default full)β’
profileIds: required when scope=profilesβ’
permission: read-write | read (default read-write)Key responses now include
scope, profileIds (populated profile objects when scoped), and permission (e.g., in GET /v1/api-keys and create responses).View documentation
π₯2π1
LinkedIn document (PDF/carousel) posts now let you control the displayed document title via
LinkedIn requires a title for document posts; if omitted, Late will fall back to the media item title, then the filename.
Use:
β’
β’
View documentation
platformSpecificData.linkedin.documentTitle.LinkedIn requires a title for document posts; if omitted, Late will fall back to the media item title, then the filename.
Use:
β’
platformSpecificData.linkedin.documentTitleβ’
media[].title (used as the LinkedIn document title if documentTitle is not set; otherwise falls back to filename)View documentation
β€5
Real-time Webhooks are live π
Get notified instantly when someone comments on your posts or sends you a DM.
New events:
β’
β’
View documentation
Get notified instantly when someone comments on your posts or sends you a DM.
New events:
β’
message.received β Instagram, Facebook, WhatsApp, Twitter, Bluesky, Reddit β’
comment.received β Instagram, Facebook, Threads, Twitter, YouTube, Bluesky, Reddit, LinkedInView documentation
Zernio
Overview - Platforms
Complete guide to all social media platforms supported by Zernio API
β€4
New Analytics endpoints are available for aggregated reporting and scheduling optimization (requires the Analytics add-on).
Daily aggregated metrics:
β’ Filters:
β’ Returns:
Best times to post:
β’ Filters:
β’ Returns:
Content performance decay:
β’ Filters:
β’ Returns:
Posting frequency vs engagement:
β’ Filters:
β’ Returns:
View documentation
Daily aggregated metrics:
GET /v1/analytics/daily-metricsβ’ Filters:
platform, profileId, fromDate, toDateβ’ Returns:
dailyData + platformBreakdown with summed metrics (impressions, reach, likes, comments, shares, saves, clicks, views)Best times to post:
GET /v1/analytics/best-timeβ’ Filters:
platform, profileIdβ’ Returns:
slots grouped by day_of_week (0=Monday..6=Sunday) and hour (UTC 0-23) with avg_engagementContent performance decay:
GET /v1/analytics/content-decayβ’ Filters:
platform, profileIdβ’ Returns:
buckets with bucket_label and avg_pct_of_finalPosting frequency vs engagement:
GET /v1/analytics/posting-frequencyβ’ Filters:
platform, profileIdβ’ Returns:
frequency rows with posts_per_week, avg_engagement_rate, weeks_countView documentation
β€6π₯3
New validation endpoints are available under
Validate weighted character counts per platform with
Dry-run the full post validation pipeline (same body as
Validate a public media URL and compare against per-platform size limits with
Check subreddit existence/info with
View documentation
/v1/tools/validate to preflight-check content before publishing.Validate weighted character counts per platform with
POST /v1/tools/validate/post-length (body: { text }) and get per-platform { count, limit, valid }.Dry-run the full post validation pipeline (same body as
POST /v1/posts) with POST /v1/tools/validate/post. Target platforms via platforms[].platform: twitter, instagram, tiktok, youtube, facebook, linkedin, bluesky, threads, reddit, pinterest, telegram, snapchat, googlebusiness. Returns valid plus errors[] and/or warnings[].Validate a public media URL and compare against per-platform size limits with
POST /v1/tools/validate/media (body: { url }). Returns contentType, size, type (image/video/unknown), and platformLimits when available.Check subreddit existence/info with
GET /v1/tools/validate/subreddit using query name.View documentation
β€3π₯1
Late CLI is now available.
npm install -g late
Docs: https://docs.getlate.dev/resources/cli
Source: https://github.com/getlate-dev/late-cli
npm install -g late
Docs: https://docs.getlate.dev/resources/cli
Source: https://github.com/getlate-dev/late-cli
π₯3β€1π1
New endpoint
Query params:
β’
β’
β’
Response includes
View documentation
GET /v1/analytics/post-timeline returns a daily analytics timeline for a specific post (per platform for multi-platform Late posts), showing how metrics evolve day-by-day since publishing. Requires the Analytics add-on.Query params:
β’
postId (required) β accepts ExternalPost ID, platformPostId, or Late Post IDβ’
fromDate (optional, ISO 8601; default 90 days ago)β’
toDate (optional, ISO 8601; default now)Response includes
timeline[] rows with date, platform, platformPostId, and metrics like impressions, reach, likes, comments, shares, saves, clicks, views.View documentation
β€7
You can now authenticate the Late CLI directly from the browser.
Running
An API key is created automatically and saved to the CLI config.
Running
late auth:login opens a browser window where users verify a confirmation code and authorize access. An API key is created automatically and saved to the CLI config.
β€2π2
Posts can now be recycled (auto-reposted on a schedule) via
After the original post is published, Late will create new scheduled copies at a weekly/monthly interval until an expiration condition is met.
Configure with
β’
β’
β’
β’
β’
β’
Webhooks: a new event
View documentation
recycling on POST /v1/posts and PUT /v1/posts/{postId}.After the original post is published, Late will create new scheduled copies at a weekly/monthly interval until an expiration condition is met.
Configure with
recycling:β’
gap (int)β’
gapFreq: week | monthβ’
startDate (date-time, optional)β’
expireCount (int, optional)β’
expireDate (date-time, optional)β’
contentVariations (string[], optional)Webhooks: a new event
post.recycled is available in POST/PUT /v1/webhooks/settings and filterable in GET /v1/webhooks/logs.View documentation
π₯3
GET /v1/connect/{platform} redirect behavior now includes accountId in standard mode.After a successful connect, Lateβs standard redirect to
redirect_url now appends ?connected={platform}&profileId=X&accountId=Y&username=Z (previously no accountId).In headless mode (
headless=true), the redirect includes raw OAuth data only when a post-OAuth selection step is required (e.g. LinkedIn orgs, Facebook pages). If no selection is needed, the account is created directly and the redirect includes accountId.View documentation
π₯1
New endpoint
Currently supported only for organization/company page accounts (personal profile reaction data is restricted by LinkedIn).
Required params:
Optional:
Response includes
View documentation
GET /v1/accounts/{accountId}/linkedin-post-reactions returns who reacted to a LinkedIn post, including reactor profile details.Currently supported only for organization/company page accounts (personal profile reaction data is restricted by LinkedIn).
Required params:
accountId (path), urn (query, LinkedIn post URN)Optional:
limit (1-100, default 25), cursorResponse includes
reactions[] with reactionType (LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT), reactedAt, and from (name, headline, profileUrl), plus pagination.View documentation
π₯2
Twitter posts now support replying to an existing tweet via
Set
View documentation
replyToTweetId in TwitterPlatformData.Set
replyToTweetId to publish the first tweet (or the root of a thread) as a reply; subsequent thread items chain normally.replySettings also adds verified (now: following, mentionedUsers, subscribers, verified). Note: replySettings cannot be combined with replyToTweetId.View documentation
β€2
GBP endpoints now support overriding the target location via optional
This lets you fetch/update reviews, media, attributes, place actions, food menus, and location details for a specific GBP location without changing the accountβs selected location.
Use
β’
β’
β’
β’
β’
β’
View documentation
locationId.This lets you fetch/update reviews, media, attributes, place actions, food menus, and location details for a specific GBP location without changing the accountβs selected location.
Use
locationId (query) on:β’
GET /v1/accounts/{accountId}/gmb-reviewsβ’
GET/PUT /v1/accounts/{accountId}/gmb-food-menusβ’
GET/PUT /v1/accounts/{accountId}/gmb-location-detailsβ’
GET/POST/DELETE /v1/accounts/{accountId}/gmb-mediaβ’
GET/PUT /v1/accounts/{accountId}/gmb-attributesβ’
GET/POST/DELETE /v1/accounts/{accountId}/gmb-place-actionsView documentation
β€2π1
The
Use
View documentation
GET /v1/usage-stats response now includes billingAnchorDay.Use
billingAnchorDay (1β31) to determine the day of the month when the billing cycle resets, which can help align usage tracking and reset expectations.View documentation
β€2π1
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