Accounts
Connect a Bluesky account with an app password, see which other platforms are built but not switched on, and the monthly X post limits.
The Accounts screen shows the current workspace with a slot for each of the eight platforms. Bluesky is the only one you can connect and post to today. Instagram, Facebook Pages, Threads and X are built but not switched on, so their slots show "Built, not switched on" and have no Connect button. TikTok and YouTube are built too, and also not switched on, but they differ: Postwyre posts to TikTok and YouTube as private, for now. LinkedIn is a placeholder.
Connect Bluesky
Bluesky connects with a handle and an app password, not your main password. In Bluesky, open Settings, Privacy and security, App passwords, and create one. On Accounts, choose Connect Bluesky, then enter the handle and the app password.
- Workspace admins and owners can connect and disconnect accounts, from the signed-in app only. An API key can't.
- Postwyre signs in to Bluesky to check the password before it saves anything, then shows the account's handle, name and picture. A main password is refused.
- The app password is stored encrypted and is never shown again. Postwyre does not keep Bluesky's session tokens.
- A workspace can connect up to 50 accounts on Starter and up to 100 on Pro. A workspace with no plan connects none. Connecting more than the plan allows is refused, and a reconnect of a disconnected account counts as new. A workspace that already has more accounts than its plan allows, for example after moving to a smaller plan, keeps them but can't connect another until it is under the limit. The same Bluesky account can be connected in more than one workspace.
- If Bluesky stops accepting the saved password, for example because you revoked it, the account shows a Reconnect button. Posts waiting for that account fail until you reconnect.
- Disconnect deletes the saved password and marks posts still waiting for that account as failed. Posts already on Bluesky stay there.
If the Bluesky slot reads "Opens first" and has no Connect button, posting has not been turned on for the deployment you are using.
Instagram, Facebook Pages, Threads and X
The code for these four is written and tested against fake responses from each platform. None of it has run against the real platforms yet, and none of it is switched on. Nothing here is connectable today. A slot only gets a Connect button once the deployment has that platform's keys and the platform is turned on for it.
When one is switched on, connecting is a sign-in on the platform's own page, not a password in Postwyre:
- Instagram needs a professional account (Business or Creator). Posts need a picture or a video.
- Facebook Pages connects the Pages you pick on Facebook, not a personal profile. Every Page you grant counts toward your plan's account limit.
- Threads connects a Threads profile.
- X connects through X's own sign-in, using Postwyre's own X app when it is available, so there is nothing to paste. X bills the owner of an app for each post, so posts through Postwyre's X app have a monthly limit on every plan (see X posts each month).
- A workspace can use its own X app instead, as an optional setting: choose Use your own X app, and paste the app's client id and client secret from the X developer portal. The secret is stored encrypted and is never shown again. Accounts you connect afterwards go through your app, X bills you for their posts, and the monthly limit does not apply to them. Accounts connected before keep using Postwyre's X app until you connect them again. If Postwyre's X app is not available, your own X app is the only way to connect X.
Postwyre stores the access tokens it receives encrypted, refreshes them before they expire, and shows a Reconnect button if a platform stops accepting one. Only workspace admins and owners can connect, from the signed-in app.
Pictures and videos for posts are uploaded to Postwyre's own storage. They are never in a public bucket: Instagram and Threads fetch each file through a link that stops working after a short time. The compose screen cannot attach files yet.
X posts each month
Posts to X through Postwyre's X app count toward a monthly limit, per workspace, in UTC months. These are the default limits; a deployment can set its own, and the Accounts screen shows the numbers that apply to your workspace:
| Plan | X posts a month | Of those, with a link |
|---|---|---|
| Trial | 10 | 2 |
| Starter, billed monthly | 280 | 14 |
| Starter, billed yearly | 100 | 4 |
| Pro, billed monthly | 280 | 14 |
| Pro, billed yearly | 100 | 4 |
Yearly plans get fewer X posts than monthly ones, because a year of Starter or Pro costs ten months, not twelve. X charges much more for a post that has a link, so links have their own smaller limit. Anything that looks like a web address counts, including a bare domain like yourbrand.example. A post past either limit is not sent, its X delivery fails with a message saying so, and the same post still goes to every other platform. A post X refuses does not count. A post whose result is unknown (X did not confirm it) counts, because X may have published it. The Accounts screen shows how many you have used. To post more, use your own X app and connect X again.
TikTok and YouTube
The code for both is written and tested against fake responses. None of it has run against the real platforms yet, and neither is switched on, so neither is connectable today either. A slot only gets a Connect button once the deployment has that platform's keys and the platform is turned on for it.
Postwyre posts to TikTok and YouTube as private, for now. Both platforms keep an unreviewed app's posts private, and Postwyre's app has not been reviewed by either. Postwyre only ever asks for private, and it refuses a post that asks for any other visibility instead of changing it. Nothing posts publicly yet. When a post shows as sent, only you can see it on TikTok or YouTube.
- TikTok: posts go out as "Only me". While an app is unreviewed, TikTok also requires the connected TikTok account itself to be set to private, and allows the app to post for only five accounts a day.
- YouTube: uploads go out as private. Google may hold every upload from an unverified app as private, and Postwyre asks for private either way. Connecting asks to see your channel so Postwyre knows where the video goes.
- Each post needs one video. TikTok uses the post's text as the title. YouTube uses the first line as the title and the whole text as the description.
- YouTube gives an app a daily upload allowance, shared by every workspace. If it runs out, posts wait and go out after Google resets it, around midnight Pacific.
- The compose screen can attach one video, but only while a TikTok account is selected. For YouTube, and for pictures anywhere, files still come through the API.
The TikTok post screen
When a TikTok account is selected in the compose screen, a TikTok section opens above the buttons. TikTok requires it before an app may post for someone. It shows:
- Who the post goes out as, the account's TikTok name, loaded from TikTok each time the screen opens.
- A "Who can see this video" menu with nothing chosen. It lists what TikTok offers that account. While the app is unreviewed only "Only me" can be chosen, and the other choices are greyed out.
- Comment, Duet and Stitch boxes, all off until you turn them on. A box is greyed out when the TikTok account has that turned off.
- A "Content Disclosure Setting" switch, off by default. Turn it on and pick "Your brand" (the post is labeled "Promotional content"), "Branded content" (labeled "Paid partnership"), or both. You must pick one. Branded content cannot be private, so it is greyed out while every post is private.
- A preview of the video and the text, and TikTok's consent line above the buttons: by posting you agree to TikTok's Music Usage Confirmation, and with branded content also its Branded Content Policy. Pressing Post now or Schedule is the agreement.
Postwyre checks the video's length against what TikTok allows that account, and does not enable the buttons while the account cannot post, for example after TikTok's daily limit. TikTok can take a few minutes to process a video before it shows on the profile.
An API caller sends the same choices as options on the TikTok account in the post: privacyLevel (SELF_ONLY), allowComment, allowDuet, allowStitch, contentDisclosure, yourBrand, brandedContent and consent (true). A TikTok post without a privacyLevel and consent: true is refused, and a draft can be saved without them.
Making posts public is a separate step. It needs TikTok's audit and Google's verification, and a change to Postwyre's code.
Platform status
The card for a workspace reads "N of 8 platforms connected", counting platforms with at least one connected account. The character limits are what the compose preview counts against. For Bluesky, the 300 limit is also enforced when a post is sent.
| Platform | Status on the Accounts screen | Characters per post (compose preview) |
|---|---|---|
| Bluesky | Opens first | 300 |
| X | Built, not switched on | 280 |
| Coming soon | 3000 | |
| Built, not switched on | 2200 | |
| Facebook Pages | Built, not switched on | 63206 |
| Threads | Built, not switched on | 500 |
| TikTok | Waiting on platform approval | 2200 |
| YouTube | Waiting on platform approval | 5000 |
- Opens first: Bluesky, the platform that posts today.
- Built, not switched on: the code is written and tested, and connecting opens once the platform's keys are added to the deployment and the platform is turned on.
- Coming soon: connecting opens once posting to that platform is built.
- Waiting on platform approval: the code is built, and posts stay private until the platform approves the app. TikTok and YouTube need that approval before they can post publicly.
The slots are per workspace, so each brand gets its own set. To add another brand, use Add a brand; see Workspaces.
The Accounts screen also has a Connect your agent card. For admins it links to the Team page, where you can create an agent key.