Repurpose one post for every platform with AI
Send one source text and get a version for each network, checked against its rules. Preview them first, or adapt and publish in one call.
Updated · 6 min read
Writing one good post is work. Rewriting it six times to fit six networks is the part people skip, and it shows: a LinkedIn essay squeezed into X, or a hashtag pile pasted onto LinkedIn. SocialCannon’s repurpose endpoint does that rewriting for you. Send one source text and the networks you want, and get back a version for each, checked against that network’s rules. You can review the versions first or publish them in the same call.
What repurposing does
For each target network, the model rewrites your source to suit that network’s length, tone and conventions. It is instructed to keep names and titles exactly as written, to keep every date, price, place and link accurate (links character for character), never to add facts or links of its own, and to write in the same language and regional variety as your source. The result is then edited to remove common AI-writing patterns, and its text is checked against the network’s length and format rules. For X, Instagram, TikTok, LinkedIn and YouTube, a version that is still too long gets up to two best-effort shortening passes when at least 40 characters of room remain, dropping the least important details first. If it still does not fit, its validation result says so. A model can make mistakes, so check that the details you care about survived; that is why previewing is the default.
| Network | What the rewrite aims for |
|---|---|
| X (Twitter) | Up to 280 characters including links (aiming for 250 or fewer), punchy, one to three hashtags. |
| Short and conversational, keeping every date, time, price, venue and link. | |
| Caption up to 2,200 characters, a few relevant hashtags, no reliance on links. | |
| Professional, up to 3,000 characters, with line breaks for easy reading. | |
| TikTok | Short, direct caption with two to five hashtags. |
| YouTube | A video description whose short first sentence can serve as the title. |
In requests, X is written as twitter. The other networks use their lowercase names: facebook, instagram, linkedin, tiktok and youtube. The same names are the keys of accountIds, mediaUrls and platformOptions.
Step 1: Preview the variants
Preview is the default mode. It returns the versions and publishes nothing.
curl -X POST https://socialcannon.app/api/v1/posts/repurpose \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sourceContent": "Our spring workshop is on 14 March at 18:00 in Leeds. Tickets are £12 at example.com/workshop and include a printed field guide.",
"targetPlatforms": ["linkedin", "instagram"],
"tone": "friendly and concise"
}'The response lists one variant per platform with its content, characterCount and a validation result, plus allValid for the whole set. Preview validation runs without media, so Instagram, TikTok and YouTube variants are reported as needing media, and allValid is false. That error is expected: it clears when you publish with suitable mediaUrls (a video file for YouTube), and TikTok also needs a privacy level in platformOptions. Look at the other errors, such as length, to judge the text. If the model cannot produce a usable version for every network you asked for, the whole request fails and names the missing networks in details.missingPlatforms; send it again without them.
Shape the output
- tone is a short free-text description, up to 100 characters, such as
professionalorplayful, no emojis. - appendToAll adds the same text to every variant, for a sign-off or a campaign hashtag.
- appendContent sets the appended text per network, for example a different link per network. A non-empty value for a network replaces
appendToAllthere; an empty one falls back to it. - mediaUrls attaches media per network, which Instagram, TikTok and YouTube need.
Appended text is added after the rewrite, so the model never rewords it. Where possible, the rewrite is shortened to leave room for it within the network’s limit; if too little room is left, validation reports the variant as too long.
Step 2: Publish in one call
When you trust the output, or after you have checked a preview, switch to post mode and name the account for each network. Post mode publishes immediately; the endpoint has no scheduledAt, and one sent here is ignored.
curl -X POST https://socialcannon.app/api/v1/posts/repurpose \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sourceContent": "Our spring workshop is on 14 March at 18:00 in Leeds. Tickets are £12 at example.com/workshop.",
"targetPlatforms": ["linkedin", "facebook"],
"mode": "post",
"accountIds": { "linkedin": "LINKEDIN_ACCOUNT_ID", "facebook": "FACEBOOK_ACCOUNT_ID" },
"appendToAll": "#SpringWorkshop"
}'Post mode generates fresh variants, so the published text can differ from an earlier preview. If you need exactly the previewed wording, take each variant’s content from the preview and publish it with POST /api/v1/posts instead, optionally with a scheduledAt.
"platformOptions": { "tiktok": { "privacyLevel": … } } with a value from GET /api/v1/accounts/ACCOUNT_ID/tiktok/creator-info, or they are skipped.Plans and limits
| Plan | Repurpose requests per billing period | Public networks per request |
|---|---|---|
| Free | 5 | 2 |
| Pro | 100 | 5 |
| Agency | 500 | All six |
| Enterprise | 1,500 | All six |
Network access follows your plan as well: X needs a paid plan. On Free, a preview that includes X is refused before any text is generated; in post mode the X target fails while the other networks can still publish. See the pricing page for details.
Repurposing from an AI agent
The MCP tool repurpose_content runs the preview, so an assistant can draft versions for each network and show them to you. Once you approve, it publishes each one with create_post. The tool takes text only, so for Instagram, TikTok and YouTube the assistant must add the media (and TikTok’s privacy level) to each create_post call. Set it up with the MCP server guide. For a manual alternative that sends the same text everywhere, see cross-posting from one API, and the API reference documents the endpoint.
Frequently asked questions
- Is AI repurposing on the Free plan?
- Yes, with 5 repurpose requests per billing period and up to 2 target platforms per request. Pro raises that to 100 requests and 5 targets.
- Can I review the text before it is published?
- Yes. The default preview mode returns each variant with its validation result and character count and publishes nothing. Use post mode only when you want to adapt and publish in one step.
- Can I control the tone?
- Pass a short tone description such as "professional" or "friendly and concise". Each variant also follows the target platform's length and style conventions.
- What if one platform fails in post mode?
- Repurpose takes no Idempotency-Key. A reconciliation code stops retries until support resolves it. Never resend the whole request after any target published or may have published, even when none reports success. Check each result: providerPublished or reconciliationRequired, a published post status, platformPostId, platformPostUrl or a recovery object means stop and reconcile, not retry. Before retrying a missing target, follow the full repurpose recovery rule to identify any saved post or draft, including a draft whose acknowledgement was lost. Retry a failed post or delete it before replacing that target, never both; a draft cannot be retried. Any required deletion must succeed first. If the state is unclear, scopes are missing or deletion fails, contact support instead of retrying. Before you publish this content again, check whether the owner already published it as the account recovery check post: if that content is now live, do not publish it again. Follow the full rule at https://socialcannon.app/docs/errors#repurpose-recovery before retrying.
Start with a free account
Free includes two connected accounts, unlimited posts and scheduling, and a sandbox for testing. Some features in this guide need Pro; the pricing page lists what each plan includes.