Skip to content

How to cross-post to multiple platforms ​

Pass several connection slugs in one request and Socifyr fans the post out, one publish job per account. Each account succeeds or fails on its own, so one platform's outage does not block the others.

If you have not posted yet, start with Publish a text post.

How do I post the same caption everywhere? ​

bash
socifyr post "Hot take: monorepos are great if you have one tooling team." \
  --to linkedin-myhandle,x-myhandle,threads-myhandle,bluesky-myhandle-bsky-social --wait
typescript
await socifyr.uploads.text({
  connections: ['linkedin-myhandle', 'x-myhandle', 'threads-myhandle', 'bluesky-myhandle-bsky-social'],
  text: 'Hot take: monorepos are great if you have one tooling team.',
})
python
client.uploads.text(
    connections=["linkedin-myhandle", "x-myhandle", "threads-myhandle"],
    text="Hot take: monorepos are great if you have one tooling team.",
)
bash
curl -X POST https://api.socifyr.com/api/content/text \
  -H "Authorization: Bearer $SOCIFYR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connections":["linkedin-myhandle","x-myhandle"],"text":"Hot take: monorepos are great if you have one tooling team."}'
json
{ "tool": "post_text", "arguments": { "caption": "Hot take: monorepos are great if you have one tooling team.", "connections": ["linkedin-myhandle", "x-myhandle", "threads-myhandle"] } }

The shortest caption limit among your selected platforms is the one to write for. See platform constraints.

How do I use a different caption per platform? ​

platformOptions is keyed by connection slug. The text there overrides the post's text for that account only. The values are validated by each platform's adapter when it publishes.

typescript
await socifyr.uploads.photos({
  connections: ['instagram-mybrand', 'linkedin-myhandle', 'x-myhandle'],
  medias: ['6a04f715d3d7d93575e65d13'],
  text: 'Default caption for any account without an override',
  platformOptions: {
    'instagram-mybrand': { text: 'Longer Instagram caption with hashtags\n\n#design #branding' },
    'x-myhandle': { text: 'Short version. Link in bio.' },
  },
})

The same object works as platformOptions in REST JSON bodies. The CLI, Python SDK and MCP post tools have no per-platform override on create; edit the post with update_post or REST, or send separate posts.

How do I post to every account on one platform? ​

There is no wildcard. List the connections and filter by platform:

typescript
const all = await socifyr.workspaces.listConnections(workspaceId)
const instagram = all.filter((c) => c.platform === 'instagram').map((c) => c.slug)
await socifyr.uploads.text({ connections: instagram, text: 'Announcement for every brand account' })

How do I handle a partial failure? ​

typescript
const upload = await socifyr.uploads.text({ connections, text })
const result = await socifyr.uploads.waitForCompletion(upload.id!)

if (result.status === 'partial_failure') {
  const failed = result.channels.filter((c) => c.result?.status === 'failed')
  console.warn(failed.map((c) => `${c.platform}: ${c.result?.error}`))
  await socifyr.uploads.retry(upload.id!) // only failed channels are re-queued
}

Full walk-through: Check status and retry failures.

FAQ ​

Can some accounts get a Reel and others a feed video? ​

Set contentFormat for the post and override per account in platformOptions. Not every platform supports every format. See Content formats.

Does cross-posting count as one post against my plan? ​

The upload counter increases once per request, not once per account. X posts are counted per X account. See limits.

Next steps ​