Skip to main content

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.

For Discord, Slack and Telegram, and for Facebook, Instagram, LinkedIn, Pinterest, Threads, TikTok, X and YouTube, there is no script to write: switch on the channel's platform connector, and Reelwire posts there itself, with your own credentials on the first three and through its posting service, with a number of connected accounts on every paid plan, on the rest.

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:

platformWhere to look
instagramMeta'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. surface says instagram-reels or instagram-feed.
facebookMeta's Graph API for Pages, which publishes Reels and videos to a Page you manage. surface says facebook-reels or facebook-feed.
youtubeThe 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. surface says youtube-shorts or youtube-video (YouTube Long-form).
tiktokTikTok's Content Posting API. Until TikTok has audited your app, what it posts is visible only to the account itself.
linkedinLinkedIn's Posts API, with the video uploaded first, for a member or an organisation page you manage. surface says linkedin for a profile and a company page alike (linkedin-company in hand-overs made before 2026-10-29); a company page needs LinkedIn's review of your app.
telegramThe Telegram Bot API's video message, to a channel where your bot is an administrator.
threads, pinterestMeta's Threads API and Pinterest's API, each for an app the platform has reviewed; Pinterest's video Pins also need a business account.
xThe X API, on plans X charges for; posting a video asks more of an app than posting text.
discord, slackA Discord channel's webhook, or a Slack app of your own with a bot token: both are what the platform connector uses, so the connector is usually simpler.

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, each with its length (tiny, short, medium or long) and a label naming the platforms it suits.

Facebook, Instagram and YouTube can have a text of their own there, without links, so a length can come twice: choose by each entry's surfaces as well as its length. On a channel that names one of the three, text already follows its Posting settings: where the account may post no links, it carries none.

The shape of the script​

  1. Receive, check and answer as Handed over by webhook describes, and queue the work.
  2. Find the account. Map each channels[].channelId to the account and the stored token it posts to. The channelName is your own name for it, which is handy in logs; the id is what to key on.
  3. Take the text as it is. channels[].text is already written for that platform: the caption, the brand's description (disclaimer), the link (linkUrl, with linkLabel; left out on a platform that does not make links clickable, such as Instagram and TikTok), the hashtags and, where the platform has one, the title. Join them the way the platform shows them; the caption was written short enough for the rest to fit. channels[].posting carries the channel's Posting settings, such as visibility, allowComments and brandedContent where the platform has them, hashtagsAsFirstComment (post the hashtags as the first comment instead of in the caption) and shareToFeed on Instagram, allowDuetStitch on TikTok, notifySubscribers on YouTube, or silent and protectContent on Telegram; a setting the platform does not offer comes at its default. Apply the ones the platform's API lets you set.
  4. Send the video. channels[].media holds the clip (kind video) and its cover still (kind still), each with a signed url that works for seven days from each send. Pass the link where the API fetches it; otherwise download it, check it against sha256, and upload the file. Use the still where the API takes a cover.
  5. Report back for each channel: published with the post's url and the platform's own id as platformPostId, or failed with the platform's error as the reason, so a person can pick it up from Posts.

Changes and take-downs​

A later post.update carries a channel's new text, its posting settings 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 Handed over by email on for a channel as well is a cheap safety net while the script is new.