Limits & Errors
What Bluesky's API does not expose and the common errors when publishing.
What you cannot do
Bluesky's API does not expose:
- Lists and starter packs
- Custom feeds
- Pinning a post to the profile
- Content warnings and labels
- DM attachments
- Follower counts and profile analytics
- Editing a published post
Common errors
| Error | Cause | Fix |
|---|---|---|
| "Bluesky posts cannot exceed 300 characters" | content is above the 300-character hard limit | Shorten it to 300 characters. Use customContent when cross-posting. |
| "Thread item N exceeds 300 characters" | One thread item is too long | Every item has its own 300-character limit. Split it into more items. |
| "Publishing failed due to max retries reached" | Every retry failed | Usually temporary. Retry the post. |
| App password invalid | The main account password was used, or the app password was revoked | Use an app password (xxxx-xxxx-xxxx-xxxx), not the account password. Create a new one if needed. |
| Image too large | The image is above 1 MB | Compress the image yourself before upload to control the quality loss. |
A publishNow: true post that Bluesky rejects returns 207 with post.status: "failed" and the message in platforms[].errorMessage:
{
"message": "Post created but publishing failed",
"error": "All platforms failed",
"post": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"status": "failed",
"platforms": [
{
"platform": "bluesky",
"status": "failed",
"errorMessage": "Bluesky posts cannot exceed 300 characters"
}
]
}
}Shorten content, or keep the long text for the other platforms and set customContent on the Bluesky entry, then create the post again. 207 is a 2xx status, so fetch(...).ok is true; branch on the status code and on post.status. Error handling covers the envelope.
Was this page helpful?