Platform guides

Bluesky and Mastodon posting API guide

Bluesky and Mastodon are the two open-protocol platforms you can post to with a simple credential instead of an OAuth app. For Bluesky you give a handle and an app password, for Mastodon an instance URL and an access token. Limits are 300 characters on Bluesky (long text auto-threads) and 500 on Mastodon, with 4 images per post on both.
Published 4 min read

How do I connect Bluesky and Mastodon?

BlueskyMastodon
CredentialsHandle and an app passwordInstance URL and an access token
Where to create themSettings, Privacy and security, App passwordsPreferences, Development, New Application (tick read and write)
ExpirySession tokens rotate and Socifyr refreshes themPersonal access tokens do not expire
RevokeDelete the app password in BlueskyDelete the application in Mastodon

Use an app password for Bluesky and never your main password. Slugs follow the handle, for example bluesky-myhandle-bsky-social and mastodon-myaccount. Quick references are on the Bluesky and Mastodon pages.

What are the Bluesky API posting limits?

Bluesky limits as enforced by Socifyr
LimitBluesky
Post length300 characters, longer text is split into a thread
ImagesUp to 4 per post, 1 MB each
Image formatsJPG, PNG, GIF, WebP
Video100 MB, 60 seconds
Posts per rolling 24 hours50
First commentSupported

The 1 MB image limit is the one that catches people. Bluesky's lexicon rejects image blobs of 1,000,000 bytes or more when the record is created, so a normal phone photo fails. Socifyr checks every image before upload: a file already under the limit passes through untouched, and a larger one is re-encoded as a JPEG with progressively smaller dimensions and quality until it fits under roughly 976 KB. You send the original and the post publishes.

Text over 300 characters becomes a thread. The splitter prefers paragraph breaks, then sentences, then words, so each post reads on its own.

What are the Mastodon API posting limits?

Mastodon limits as enforced by Socifyr
LimitMastodon
Post length500 characters
ImagesUp to 4 per post, 8 MB each
Image formatsJPG, PNG, GIF, WebP
Video40 MB
Posts per rolling 24 hours100
Visibilitypublic (default), unlisted, private (followers only), direct

Mastodon posts do not auto-thread. Text beyond 500 characters is not split for you, so shorten it or split it yourself and post the parts in order.

How do I post to both with one call?

bash
curl -X POST https://api.socifyr.com/api/content/text \
  -H "Authorization: Bearer sk_your_key" \
  -H "X-Workspace-Id: <workspaceId>" \
  -H "Content-Type: application/json" \
  -d '{
    "connections": ["bluesky-myhandle-bsky-social", "mastodon-myaccount"],
    "text": "Hello from the open social web"
  }'
Set Mastodon visibility per post
typescript
await socifyr.uploads.text({
  connections: ['bluesky-myhandle-bsky-social', 'mastodon-myaccount'],
  text: 'Quiet announcement for followers',
  platformOptions: {
    'mastodon-myaccount': { visibility: 'private' },
  },
})

When you cross-post, write for the tighter limit. For this pair that is 300 characters. Socifyr exposes getEffectiveCaptionLimit in @socifyr/shared to compute the minimum across a set of platforms. More patterns in cross-posting to multiple platforms with one API call.

What goes wrong most often?

  • Using the main Bluesky password. Create an app password and revoke it in Bluesky if you need to cut access.
  • Wrong instance URL. The Mastodon connection is tied to one instance. A token from another server will not work.
  • A token without write scope. Tick both read and write when you create the Mastodon application.
  • Oversized media on a small instance. Use the instance's own limit if it is lower than 8 MB images or 40 MB video.
  • Hitting the daily cap. Both platforms are capped in Socifyr (50 and 100 posts per rolling 24 hours). See daily posting limits per platform.

Which of the two should I connect first?

Bluesky is the lower-friction start if you want threading handled for you: write a long post and it becomes a connected thread. Mastodon is the better fit if you want per-post visibility control or you already belong to an instance. Many teams connect both and treat them as one open-web channel, writing to the 300-character limit so the same text fits either. Both connect with simple credentials, neither requires an OAuth app review, and neither needs a scheduled reconnect in the way Instagram does, which makes them good first platforms for an agent you are still testing.

Frequently asked questions

Does Bluesky have an API for posting?

Yes. You authenticate with a handle and an app password, and Socifyr posts through it. Text up to 300 characters, up to 4 images of 1 MB each, and video up to 100 MB and 60 seconds.

What is the Bluesky image size limit?

1 MB per image. Socifyr re-encodes larger images to fit under roughly 976 KB before uploading.

What is the Mastodon character limit?

500 characters in Socifyr's constants, with up to 4 images of 8 MB. Your instance may set stricter limits.

Do Mastodon tokens expire?

No. Personal access tokens do not expire. Revoke one by deleting the application in Preferences, Development.

Can I post a long thread to Bluesky?

Yes. Text over 300 characters is split into a thread automatically.

Related pages

Try it with your own accounts

One API key, 18 platforms, and your agent never sees a platform token. The free plan needs no card.