bluesky as the platform value in post payloads.
Bluesky connections use a Bluesky identifier and App Password. The App Password
is accepted only when connecting the account and is never returned by the API.
For a product-level overview, see the
Bluesky posting API page.
Quick Reference
Connect
Connect a Bluesky account with the credentials endpoint:com.atproto.server.createSession,
stores the credential encrypted, reuses the access session for publishing, and
rotates encrypted access and refresh JWTs when required. App Password login is
used only when a refresh session is unavailable or rejected. Custom PDS values
must be public HTTPS origins, and the authenticated DID must match the connected
account. Connected Bluesky accounts expose post and dm permissions in
account metadata.
Kavenio’s current connection flow uses App Passwords rather than AT Protocol
OAuth.
Create A Post
Create a normal Bluesky post through the shared posts API:Media
Kavenio downloads public media URLs at publish time, validates them, uploads them to Bluesky, and attaches the returned AT Protocol blob references. Supported media groups:
Images and GIFs cannot be mixed with video. Images and GIFs must be 2 MB
or smaller, enforced as the current 2,000,000-byte
app.bsky.embed.images
lexicon limit when size metadata or fetched media bytes are available. Video
must be MP4, 100 MB or smaller, and 180 seconds or shorter when duration
metadata is supplied.
Threads
UseplatformSpecificData.threadItems to publish a Bluesky reply chain. When
threadItems is present, top-level content is Kavenio display/search
metadata; threadItems[0] becomes the Bluesky root post and each later item
replies to the previous item using provider URI/CID references from the publish
response.
Durable post targets use deterministic AT Protocol record keys. If publishing
is interrupted after one thread item succeeds, a worker retry updates the same
records rather than creating a duplicate root post.
Put media on individual thread items. Bluesky thread publishing does not
support top-level mediaItems.
Facets And Link Previews
Bluesky posts include rich text facets for URLs, hashtags, and mentions that can be resolved to DIDs. Kavenio can create a Bluesky external link card from the first detected URL. Disable automatic cards withdisableLinkPreview, or provide explicit link
metadata:
Delete And Edit
Published Bluesky targets can be unpublished through AT Protocolcom.atproto.repo.deleteRecord. Thread unpublish deletes stored thread records
from the last reply back to the root record.
Native in-place edit is not supported. Delete/repost is the supported path for
changing published Bluesky content.
Analytics
Use the shared post analytics endpoint for a published Bluesky target:null and listed in
unsupportedMetrics.
Successful on-demand analytics reads are persisted as historical snapshots.
The scheduled social_accounts.metadata_refresh_due job also refreshes
analytics snapshots for connected Bluesky accounts.
Comments
Use the shared post comments API for Bluesky replies:Direct Messages
Kavenio exposes account-scoped text-only Bluesky DM APIs:Bluesky DM attachments are not implemented.
Conversation listing accepts the Bluesky Chat filters kind, lockStatus,
readState, and status when the connected account is eligible for the Chat
API. The CLI exposes the same text-only surface through
accounts bluesky-conversations, accounts bluesky-messages,
accounts bluesky-message-send, accounts bluesky-conversation-read, and
accounts bluesky-conversation-archive.
Archiving uses the official Bluesky Chat chat.bsky.convo.leaveConvo
operation. Kavenio does not expose a separate unarchive endpoint because the
current provider API does not provide one.
Live Chat API behavior can still depend on Bluesky account and App Password
eligibility. If provider auth rejects a connected account, reconnect the
account with a valid App Password.