Four networks and one self-hosted hub platform, one API. The differences you have to design
around are limits, media rules and whether first comments work — everything else behaves
identically.
Side by side
Instagram
Threads
X
LinkedIn
Supa Hub
Text limit
2,200
500
280
3,000
2,500
Media
1–10 (required, JPEG)
0–10, optional
4 images or 1 video
10 images or 1 video
0–10 images, no video
Text-only post
no
yes
yes
yes
yes
Carousel
yes (2+)
yes (2+)
no
multi-image post
yes (2+ images)
First comment
yes, 2,200
yes, 500
not supported
yes, 1,250
not supported
Connection lasts
60 days
60 days
refreshed automatically
~60 days
until key revoked
Units per write
1
1
5, or 65 with a link
1
1
Platform rate limit
100 posts / 24h per account
250 posts / 24h per profile
account-level
account-level
hub-defined
A violation rejects the whole request, not one target
Content rules are checked before anything publishes. A 400-character caption sent to both Threads and LinkedIn fails the entire request rather than publishing on LinkedIn and failing Threads — so validate against the strictest target you are sending to.
Writing one post for several networks
The practical consequence of that table is that a single content string has to satisfy every
target you send it to. Two ways to handle it:
Write to the strictest limit. 280 characters satisfies every network.
Send separate requests per network. More calls, but each gets copy that fits — which is
usually what you want anyway, since a post that reads well on LinkedIn rarely does on
Threads.
firstComment is already per target, so the comment can differ even within one request.
Per-network detail
Instagram — professional accounts, JPEG only, Reels and carousels
Threads — text-only posts, carousels, replies as comments
X — no comments, and the one network where a link changes the price
Supa Hub — self-hosted Supa Social communities, connected with an API
key instead of OAuth
Reading engagement
Every published target's current engagement — views, likes, comments, shares, saves — is
readable live with GET /api/v1/posts/:id/metrics, with the same per-target result shape as
publishing. Support and caveats differ per platform (Instagram and Threads need reconnection
for insight permissions on older connections; X needs a read-capable API tier; Supa Hub has no
metrics surface) — see the Posts reference.
Availability
Every network above is available on Chirio. If one is ever unavailable — a platform outage, a
suspended integration — calls targeting it answer 501 platform_not_enabled rather than
failing silently, and existing connections are untouched.
Capabilities are fixed when a user authorises
A connection carries the permissions it was granted at the moment the user approved it. If a
capability is added later, existing connections do not gain it — the user has to reconnect.
This is the cause behind a few otherwise confusing failures, all covered in
Account lifecycle.