Subtitles, message requests and Google Ads
Captions on videos, Facebook and Instagram message requests, safer connects, sample webhooks and a big Google Ads release. Seven changes need a look.
A busy week, with 56 changes. Seven can affect an existing integration, so start with the box below.
In short:
- Videos can carry captions in several languages.
- Messages from strangers on Facebook and Instagram no longer go missing.
- Connect can refuse the wrong account before it's saved.
- Google Ads gained shared budgets, impression share bidding and image assets.
Check these if you use them: timeline follows can be null; Page lists add instagramAccount; Google Ads DELETEs and conversion actions changed; deleting a Meta ad can remove empty parents; ads reconnects can answer 409; iMessage orders can await payment.
Captions on your videos
Most social video is watched on mute, so captions decide whether people get the message. Attach up to 20 caption files (SRT or WebVTT) to a video, one per language, and Zernio converts them for each platform:
{
"mediaItems": [
{
"type": "video",
"url": "https://cdn.example.com/launch.mp4",
"subtitles": [
{ "url": "https://cdn.example.com/launch.en.vtt", "language": "en" },
{ "url": "https://cdn.example.com/launch.es.srt", "language": "es" }
]
}
]
}Files must be public links under 1 MB. A platform that can't take a track skips it with a warning; a broken file answers 400 INVALID_SUBTITLES.
Learn more: Create a post · Media uploads
Message requests stop going missing
When someone who doesn't follow the account sends a message, Facebook and Instagram put it in a separate requests folder. Until now your users never saw those, and they're often new customers. List them, then accept one by replying:
curl "https://zernio.com/api/v1/inbox/conversations?folder=requests" \
-H "Authorization: Bearer $ZERNIO_API_KEY"
curl -X POST "https://zernio.com/api/v1/inbox/conversations/CONVERSATION_ID/accept" \
-H "Authorization: Bearer $ZERNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "accountId": "ACCOUNT_ID", "message": "Thanks for reaching out!" }'The same release added the Messenger greeting and suggested questions, WhatsApp prompts and commands, and starting a workflow from your own code.
Learn more: Instagram inbox · Facebook inbox · Accept a request · Trigger a workflow
Connect the right account, not any account
A common support case: a user meant to connect their brand's Instagram but was logged into their personal one. Now you can say which account you expect. If they log in with another, nothing is saved and the flow returns error=account_mismatch, so you can ask them to switch:
curl "https://zernio.com/api/v1/connect/instagram?profileId=PROFILE_ID&expectedUsername=acmedental" \
-H "Authorization: Bearer $ZERNIO_API_KEY"Handles can change, so prefer expectedPlatformUserId when you have it. Every account now exposes that id as platformUserId.
Learn more: Connecting accounts
Test a webhook without waiting for it
Some events, like an account disconnecting, are rare enough that your handler may never have run before it matters. Send yourself a sample, with the real headers and signature:
curl -X POST "https://zernio.com/api/v1/webhooks/test" \
-H "Authorization: Bearer $ZERNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "webhookId": "WEBHOOK_ID", "event": "account.disconnected" }'Samples carry test: true and placeholder ids, never your data.
Learn more: Send a test webhook · Webhooks
Google Ads: one budget, many campaigns
If your users split spend across campaigns, they no longer have to guess each campaign's share. Several campaigns can now draw from one daily budget, and Google moves money to whichever performs:
curl -X POST "https://zernio.com/api/v1/ads/shared-budgets" \
-H "Authorization: Bearer $ZERNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "accountId": "ACCOUNT_ID", "name": "Q4 search", "amount": 150 }'Then PUT /v1/ads/campaigns/{campaignId} with the returned sharedBudgetId and allowSharedBudgetUpdate: true. Also new: Target Impression Share bidding (aim to show on a set share of searches), excluded locations, image assets, and each ad's review status.
Learn more: Manage Google Ads · Create a shared budget
Also this week
- Meta ads: carousel ads that open a chat (2 to 10 cards), live reads of campaigns and ad sets, video uploads that report when they're ready, and a clear
429withRetry-Afterwhen Meta throttles. - TikTok ads: live account reads, duplicate ad groups, target by interest keywords and hashtags, and how long people watched.
- Other ads: boost posts on X, browse Meta targeting categories, and LinkedIn ads created paused start as drafts.
- Instagram: when followers are online, hour by hour, look up any business account, and see where comments on ads came from.
- Analytics: error codes you can act on, sync status in account health, and a flag for Facebook posts you can't read.
- More: Whop Pixel tracking, Reddit post comments, call ring timeout, and the connect token moved out of the URL.
Want every detail? See every change, day by day.