Repost shares a post again from the profile's own account on the same network. The post can be one Reelspan published, one the account made elsewhere, or any public post on the network.
Repost a post
Name the post by the network's post_id with platform and the profile in user:
curl -X POST https://api.reelspan.com/v1/posts/repost \
-H "Authorization: Bearer $REELSPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform": "bluesky", "user": "my-brand", "post_id": "https://bsky.app/profile/partner.bsky.social/post/3kxyz2abcd"}'import { Reelspan } from 'reelspan';
const reelspan = new Reelspan();
const repost = await reelspan.request('POST', '/v1/posts/repost', {
json: { platform: 'bluesky', user: 'my-brand', post_id: 'https://bsky.app/profile/partner.bsky.social/post/3kxyz2abcd' },
});from reelspan import Reelspan
reelspan = Reelspan()
repost = reelspan.request("POST", "/v1/posts/repost", json_body={
"platform": "bluesky",
"user": "my-brand",
"post_id": "https://bsky.app/profile/partner.bsky.social/post/3kxyz2abcd",
}){
"success": true,
"platform": "bluesky",
"post_id": "https://bsky.app/profile/partner.bsky.social/post/3kxyz2abcd",
"repost_id": "at://did:plc:abc123/app.bsky.feed.repost/3kz…",
"url": "https://bsky.app/profile/mybrand.bsky.social",
"repost_uri": "at://did:plc:abc123/app.bsky.feed.repost/3kz…",
"subject": "at://did:plc:xyz789/app.bsky.feed.post/3kxyz2abcd"
}To repost something Reelspan published from the same account, send its request_id (and platform when it went to several networks) instead. post_id in the answer is the post that was reposted; repost_id is the new repost, where the network gives it one.
Which networks
| Network | What happens | post_id |
The answer adds |
|---|---|---|---|
A reshare: a new post on the member's profile that carries the original, with optional commentary above it (up to 3,000 characters). |
The post URN | repost_id and url of the new post, parent_post_id, author |
|
| X | A repost. X counts reposts against the account's daily write limit. | The post id | reposted: true; repost_id is the original's id, since X gives no new one |
| Threads | A repost. | The Threads post id | repost_id; url is the account's profile |
| Bluesky | A repost. | The at:// URI, or a bsky.app/profile/…/post/… link |
repost_uri, subject; url is the account's profile |
| Mastodon | A boost. | The status id on the account's own server | repost_id, url of the boosted post |
Other networks get 400 platform_not_supported, with the networks that work in supported_platforms.
A LinkedIn reshare with commentary:
curl -X POST https://api.reelspan.com/v1/posts/repost \
-H "Authorization: Bearer $REELSPAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"request_id": "9b1f6c2e8a3d4f50b7e1c9a2d6f3e8b1",
"platform": "linkedin",
"commentary": "In case you missed it last week: our Q3 report."
}'For a post Reelspan published, every repost is added to the network's result in Post status, under reposts.
Errors
| Status | error_code |
Why |
|---|---|---|
400 |
INVALID_REQUEST |
Neither request_id, nor platform with post_id, was sent. |
400 |
PLATFORM_REQUIRED |
The request went live on several networks; send platform. |
400 |
platform_not_supported |
The network can't repost through its API. |
400 |
invalid_post_id |
Bluesky: post_id is neither an at:// URI nor a bsky.app post link. |
404 |
NOT_FOUND, POST_NOT_FOUND |
No such request, no live post on that network, or the network can't find the post. |
404 |
profile_platform_mapping_invalid |
The profile has no account on that network. |
409 |
reauth_required |
The account must be reconnected first. |
502 |
the network's code | The network refused, for example a post already reposted or X's daily limit. message carries the network's reason. |
Reposting needs a key with the publish scope.