There is no Reelspan app in Make yet. The built-in HTTP → Make a request module calls the Reelspan REST API directly: one module posts to every network you name.
Trigger → get the video → HTTP (publish) → Sleep → HTTP (status) → Router → notifyBefore you start
- In Reelspan, create a profile (for example
my-brand) and connect the networks you post to. - Create an API key under Developers → API keys. A test key (
rs_test_…) lets you build and run the scenario without posting anything.
Post a video
Get the video into the scenario first: a module such as Google Drive Download a file outputs the file's name and data, or you may already have a public https URL to it.
Add HTTP → Make a request and set:
| Field | Value |
|---|---|
| URL | https://api.reelspan.com/v1/posts/video |
| Method | POST |
| Headers | Authorization = Bearer rs_test_… (your key) |
| Body content type | multipart/form-data |
| Parse response | Yes |
Under Body content, add one item per field:
| Type | Key | Value |
|---|---|---|
| Text | user |
my-brand |
| Text | platform[] |
tiktok |
| Text | platform[] |
youtube |
| Text | platform[] |
instagram |
| Text | title |
the caption (YouTube uses it as the title) |
| Text | async_upload |
true |
| File | video |
map the file name and data from the download module |
Add one platform[] item per network. To send a URL instead of a file, make video a Text item with the URL as its value.
The module returns at once with a request_id to map into later modules:
{
"success": true,
"message": "Upload initiated successfully in background.",
"request_id": "9b1f6c2e8a3d4f50b7e1c9a2d6f3e8b1",
"total_platforms": 3
}Every other field from Post a video is another Text item: youtube_title and tiktok_title for per-network captions, privacy_level for TikTok, first_comment, and so on.
Post text
Text posts take JSON. In Make a request, set the URL to https://api.reelspan.com/v1/posts/text, Method POST, the same Authorization header, Body content type application/JSON, Body input method JSON string, Parse response Yes, and:
{
"user": "my-brand",
"platform": ["x", "bluesky", "threads"],
"title": "Your post text",
"async_upload": "true"
}Map the text from an earlier module into title. To try it without a connected account, use "platform": ["sandbox"]. See Post text.
Read the results
Poll the status
- Add Tools → Sleep to wait, for example a minute or two for a video.
- Add HTTP → Make a request:
GET https://api.reelspan.com/v1/posts/status, the same header, Parse response Yes, and a query parameterrequest_idmapped from the publish module. - Route on
status:pendingorin_progresswhile networks are still working, thencompleted(at least one network published) orfailed.
results lists each network that has finished, with its success, post_url and error_message. Poll no more often than every 5 seconds. For a scheduled post, query with job_id instead. See Post status.
Or get a webhook
Start a second scenario with Webhooks → Custom webhook, copy its address, and set it as your Reelspan webhook in the dashboard or with POST /v1/webhook. Reelspan sends an upload_completed event as each network finishes, so the scenario runs once per network with that network's result. See Webhooks.
Keep the key safe
The key sits in the module's header, so anyone who can edit the scenario can read it. Give it only the scopes the scenario needs (Publish and Read for this one), and use a separate key per scenario so you can revoke one without touching the others. See Authentication.
Troubleshooting
| What you see | Likely cause | Fix |
|---|---|---|
401 |
Missing or wrong key | The header must be Authorization with a value that starts with Bearer |
400 "Expected multipart/form-data" |
Wrong body type on the video module | Set Body content type to multipart/form-data |
400 about user or platform |
A required field is missing | Send user, at least one platform[], title and video |
A network shows skipped |
It isn't connected on that profile | Connect it, or drop it from the request |
| Posts show as done but nothing appears | You are using a test key | Switch to a live key (rs_live_…) |