Connected accounts do not stay connected forever. Chirio keeps them alive as long as the
networks allow, but every platform eventually forces the user back through authorisation. This
page is about noticing that before a publish fails.
Statuses
Status
Meaning
What to do
`active`
Usable for publishing
Nothing
`expired`
The token lapsed and could not be refreshed
Send the user through connect again
`revoked`
The user removed Chirio in their platform settings
Send the user through connect again
Publishing to a non-active account fails that target with account_not_active. Other
targets in the same request are unaffected.
How long a connection lasts
Platform
Lifetime
Refreshed automatically
Instagram
60 days
Yes
Threads
60 days
Yes
X
2 hours
Yes, at publish time
LinkedIn
60 days
Only where LinkedIn issues a refresh token
Refreshes happen without you doing anything. What you should plan for is the case where they
run out: a LinkedIn connection typically needs re-authorising roughly every 60 days, because
LinkedIn only issues refresh tokens to apps it has specifically approved for it.
Poll for expiry rather than waiting for a failure
GET /api/v1/accounts returns every account's status. Checking it on a schedule — or before a scheduled campaign — lets you prompt the user to reconnect at a convenient moment instead of discovering it when a launch post fails.
Reconnecting
Reconnecting is just running the connect flow again for the same
platform. It replaces the stored credentials, and the account returns to active.Beyond expiry and revocation, a reconnect is also what fixes an account whose authorisation
predates a capability:
Instagram or Threads first comments — an older connection may not carry comment
permission. The failure names this remedy explicitly in commentError.
X media — an older connection may not be able to upload media, which surfaces as a media
failure on an otherwise valid post.
Permissions are fixed at the moment a user authorises, so an existing connection cannot gain
one; only a fresh authorisation can.
One failure reconnecting does not fix
A LinkedIn first comment refused for permissions is not the user's connection — it is an authorisation Chirio holds with LinkedIn. Publishing keeps working; contact support rather than sending your user round the loop for nothing.
Designing for it
Show connection status in your own UI, sourced from GET /api/v1/accounts.
Treat expired and revoked identically — both mean "ask the user to reconnect".
Keep your profileId mapping stable so a reconnected account can be matched back to the
same user without a manual step.
Do not cache accountId as permanently valid; a disconnect and reconnect issues a new one.