Post through a posting service's API
Posting on a schedule, to several accounts on several platforms, is a job posting services already do well, and most of them offer an API for it. This guide sends each hand-over from your webhook straight to that API, so every post reaches the service with nobody in between: your own script, or an automation platform such as Make, n8n or Zapier, sits in the middle.
To put posts into a service by hand from the email instead, see Post through a posting service.
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.
Which service
What a posting service is, and the services with what each is good at and what to watch out for, including going without one, are compared in Post through a posting service. Reelwire is not affiliated with any of them, and works with any whose API can post a video from a link or a file. For this guide, check on the service's own site that its API posts video to each platform you need, in the shapes your channels use (a 9x16 Reel is not a 1x1 feed post), and what its plan costs for your volume.
Step by step
-
Point Reelwire at your receiver. In an automation tool, create a webhook trigger and copy its address; with a script, use the address it listens on. On the Webhook screen in Reelwire (under Connections), paste it as the address and save. Press Test delivery: the receiver should show a request with
"event": "ping". -
Switch Webhook on for the channels whose posts should go this way, under When a post is due on each channel. From then on, each post due for them arrives as one request: see Webhooks for exactly what it carries.
-
Check it came from Reelwire. Every request is signed, as Handed over by webhook describes; most automation tools can compute an HMAC too. At the very least, accept only requests whose
x-reelwire-eventis one you expect, and never act twice on the samex-reelwire-deliveryid. -
Give each channel to the service. A hand-over carries a list of
channels, one per channel of the post that goes by webhook. For each one, take the video's address (channels[].media[0].url, a link that works for seven days), its text (channels[].text: the caption, hashtags, title and link as that platform takes them) and the channel's id, and call the service's API to make a post for the account you map that channel to. Most services take a video by link; if yours wants the file itself, download it first and check itssha256. -
Say it is up. When the service confirms the post, report it for that channel, with an API key that holds Posts write:
POST https://app.reelwire.io/v1/posts/{postId}/report
Authorization: Bearer rw_...
Content-Type: application/json
{ "status": "published", "url": "https://www.instagram.com/reel/..." }postIdischannels[].postIdfrom the hand-over. If the service could not post it, report"failed"with a"reason": Posts then shows the reason, and somebody can post it by hand. A service that schedules the post for later may only tell you once it is out, through its own webhook: report then.
Answer Reelwire's request quickly, with any 2xx, and call the service afterwards: an answer that takes more than 30 seconds counts as a failure, and Reelwire sends it again. The answer only says the request arrived; publishing is what the report says.
Changes and take-downs
Changes follow the same road. When somebody updates a post in Reelwire, the receiver gets a
post.update with the new text (and a new video, where it was replaced); when somebody deletes one,
a post.delete. Pass them on to the service where its API can edit or delete, or turn them into a
task for a person where it cannot, and report "deleted" once a post is gone.
If something does not arrive
The delivery log on the Webhook screen lists every request Reelwire sent, what the receiver answered, and Details with the whole of what it carried. A request that was refused is retried after 10 seconds, a minute, five minutes, a quarter of an hour, an hour and two hours, then given up; Deliver again sends it once more.