Skip to main content

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​

A workflow in seven steps: the webhook answers at once, the signature is checked, the call is sorted by event and split per channel, each channel is posted through the service, and the post is reported back to Reelwire

  1. 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 into Webhook address and press Save; the Get your code card there has a working receiver to start a script from. Press Test delivery: the receiver should show a request with "event": "ping".

  2. Switch Handed over by webhook on for the channels whose posts should go this way, in each channel's Settings on Channels. From then on, each post due for them arrives as one request: see Webhooks for exactly what it carries.

  3. Check it came from Reelwire. Every request is signed with the workspace's signing secret, as Handed over by webhook describes; most automation tools can compute an HMAC too. At the very least, accept only requests whose x-reelwire-event is one you expect, and never act twice on the same x-reelwire-delivery id.

  4. 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 (the channels[].media item whose kind is video, a link that works for seven days), its text (channels[].text: the caption, the brand's description as disclaimer, hashtags, title and link as that platform takes them; on a channel on No specific platform, the length in captions that suits where the service posts it), its posting settings (channels[].posting, where the service can set 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 its sha256.

  5. Say it is up. When the service confirms the post, report it for that channel, with an API key, made on the API keys screen, 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/..." }

    postId is channels[].postId from 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 with Send update request on Posts, the receiver gets a post.update with the new text (and a new video, where it was replaced); when somebody sends a delete request, 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​

What went out on the Activity 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.