X (formerly Twitter) connects via OAuth 2.0 with PKCE — the most secure browser handshake available. You never share your password with frik.io.
How to Connect
- Open Social Accounts in the sidebar.
- Click the X tile.
- A window opens on X's official authorization page. Log in and click Authorize app.
- You're returned to the Accounts page with a green Connected badge.
Permissions Requested
frik.io asks for these X scopes and nothing more:
- tweet.read / tweet.write — read and publish posts on your behalf
- users.read — read your handle, name, and avatar
- media.write — upload images and GIFs to attach to posts
- offline.access — keep the connection alive so you don't have to reconnect constantly
Publishing Specifics & Limits
- Character limit: 280 characters. The Composer's live counter turns red when you exceed it.
- Images: attached via X's v2 media upload. Photos over X's 5 MB simple-upload ceiling are automatically compressed to a JPEG that fits — you don't have to resize anything yourself.
- GIFs are uploaded as animated media; video support depends on your account's media entitlements.
Reconnecting an Expired Connection
X access tokens are refreshed proactively in the background (thanks to offline.access). If a refresh fails repeatedly, the account shows a Needs Attention badge. Click Reconnect on the account card and re-authorize — your scheduled posts resume automatically.
Disconnecting
Click the ⋯ menu on the X account card and choose Disconnect. This removes the token from frik.io. To fully revoke access, also remove frik.io from X → Settings → Security → Apps and sessions → Connected apps.
Troubleshooting
- "X is temporarily unavailable" / 503 errors: X's API returns transient 5xx and 429 errors more than any other network. frik.io automatically retries up to 4 times with exponential backoff (respecting X's
Retry-Afterheader on rate limits). A post only fails permanently after all retries are exhausted — check the Posts list and hit Retry if needed. - Post rejected with a 4xx: this is a permanent auth/permission problem, not a blip. Reconnect the account to refresh scopes.
- Image won't attach: confirm the file is a supported type. Oversized photos are compressed automatically, but corrupt files are rejected.