| Characters | 2,000 | 3,000 |
| Media | optional | optional |
| Hashtags | 1-3 hashtags | 3 hashtags (5 max) at the end |
| Links in body | fine | suppress reach |
| Needs platform approval | yes | yes |
Facebook: 1-3 hashtags. LinkedIn: 3 hashtags (5 max) at the end. Carrying the tag block across is the single most obvious sign of an automated cross-post.
Links are fine on Facebook. On LinkedIn they cut distribution — the link belongs in a comment, not in the post.
Facebook is warm and community-toned; 40-80 characters peaks engagement. LinkedIn is professional and first-person; the hook must fit in 210 characters. Those are different jobs, so the same words cannot do both well — and every algorithm here demotes text that obviously was not written for it. The fix is not to skip cross-posting; it is to send a native version to each network.
curl -X POST https://postwire.io/api/post \
-H "Authorization: Bearer $POSTWIRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["facebook", "linkedin"],
"text": "Your post",
"per_platform": {
"facebook": { "text": "The Facebook version" },
"linkedin": { "text": "The LinkedIn version" }
}
}'
PostWire's /api/generate writes those per-platform versions for you from a single prompt, respecting
every limit in the table above. From an AI agent it is one MCP tool call.
PostWire takes one idea and publishes a version written for each network — the right length, hashtags and format per platform. It also refuses posts that would fail, like a video network with no video, before they are queued.
Free for one brand — 30 posts a month, no card. Starter is $9/month for three brands and 300 posts. There is a REST API and an MCP server if you would rather automate it.
Start free — no card →Other pairs: LinkedIn to Facebook · all combinations · which APIs need approval
Doing this at any volume usually means an API. Which social APIs let you post programmatically covers what each one allows.