Post through the platforms' APIs
Your own script receives each hand-over and posts every channel of it through that platform's own developer API: no posting service in between and nobody pressing a button. It takes the most work to build and keep running, and it gives you the most control over what goes out and how.
Receiving, checking the signature, answering and reporting back are the same for every receiver and are on Handed over by webhook. This page is what comes after the answer.
Before you start: each platform's own rules
Every platform decides who may post through its API, and the rules are theirs, not Reelwire's. For each platform you post to, you will need a developer app registered with it, the account owner's permission for that app (usually through the platform's sign-in, giving you a token to store and renew), and often a review of your app before it may post in public. As of September 2026, these are the places to start; check each platform's developer documentation, because they change often:
platform | Where to look |
|---|---|
instagram | Meta's Instagram API, content publishing, for professional (business or creator) accounts. Instagram fetches the video itself from an address you give it, so the hand-over's video link can be passed on as it is. |
facebook | Meta's Graph API for Pages, which publishes Reels and videos to a Page you manage. |
youtube | The YouTube Data API's video upload, which takes the file itself, so download it first. Uploads count against a daily quota, and a project Google has not audited uploads as private. |
tiktok | TikTok's Content Posting API. Until TikTok has audited your app, what it posts is visible only to the account itself. |
linkedin | LinkedIn's Posts API, with the video uploaded first, for a member or an organisation page you manage. |
telegram | The Telegram Bot API's video message, to a channel where your bot is an administrator. |
A channel on No specific platform (download) names no platform: decide in your own mapping where
its posts go, and pick the caption length that suits it from captions.
The shape of the script
- Receive, check and answer as Handed over by webhook describes, and queue the work.
- Find the account. Map each
channels[].channelIdto the account and the stored token it posts to. ThechannelNameis your own name for it, which is handy in logs; the id is what to key on. - Take the text as it is.
channels[].textis already written for that platform: the caption, the brand's line (disclaimer), the link (linkUrl, withlinkLabel), thehashtagsand, where the platform has one, thetitle. Join them the way the platform shows them; the caption was written short enough for the rest to fit.channels[].postingcarries the channel's switches, such asvisibility,allowCommentsorhashtagsAsFirstComment(post the hashtags as the first comment instead of in the caption). - Send the video.
channels[].mediaholds the clip (kindvideo) and its cover still (kindstill), each with a signedurlthat works for seven days from each send. Pass the link where the API fetches it; otherwise download it, check it againstsha256, and upload the file. Use the still where the API takes a cover. - Report back for each channel:
publishedwith the post'surland the platform's own id asplatformPostId, orfailedwith the platform's error as thereason, so a person can pick it up from Posts.
Changes and take-downs
A later post.update carries a channel's new text and, where the video was replaced, a new video;
post.delete asks for a post to be taken down. Both name the channel with the platformPostId and
permalink you reported, so you can find the post again. Edit or delete it through the API where
the platform allows it; where it does not (several do not let a published video be replaced), post
the change as a new post or leave a task for a person, and report deleted once a post is gone.
Keep it running
Tokens expire and permissions get withdrawn; a platform changes its API a few times a year. Report
failed with the platform's own message whenever a post does not go out, rather than retrying for
ever: the Posts screen then shows it, and somebody can post it by hand while you fix the script.
Leaving Email on for a channel as well is a cheap safety net while the script is new.