How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Bluesky Jetstream

Jetstream is a simplified JSON event stream for the AT Protocol that converts CBOR-encoded MST blocks from the firehose into JSON objects over WebSocket connections, making it easier to consume real-time Bluesky network events for building feed generators, bots, and search engines.

Bluesky Jetstream is one of 24 APIs that Bluesky publishes on the APIs.io network, described by an AsyncAPI event-driven specification.

Tagged areas include Event, Social Networks, and Streaming. The published artifact set on APIs.io includes API documentation, a GitHub repository, and an AsyncAPI specification.

This event API exposes 4 operations across 3 channels, and defines 39 schemas. It is described by AsyncAPI 2.6.0, at version 1.1.0.

The API connects through 7 servers: bsky.network (wss), relay1.us-east.bsky.network (wss), mod.bsky.app (wss), jetstream2.us-east.bsky.network (wss), jetstream1.us-east.bsky.network (wss), jetstream1.us-west.bsky.network (wss), jetstream2.us-west.bsky.network (wss).

4 operations 3 channels 39 schemas

Metadata

The identity and technical contract details declared by the specification.

Specification
AsyncAPI 2.6.0
API Version
1.1.0
Servers
bsky.network (wss)
relay1.us-east.bsky.network (wss)
mod.bsky.app (wss)
jetstream2.us-east.bsky.network (wss)
jetstream1.us-east.bsky.network (wss)
jetstream1.us-west.bsky.network (wss)
jetstream2.us-west.bsky.network (wss)
License
Resource Areas
1

Channels & Operations 4

Across 3 channels, the API surfaces 4 operations. Each is listed below with its action, channel, parameters, and response codes.

Channels 4
SUB
xrpc/com.atproto.sync.subscribeRepos
Subscribe to the repository event stream (firehose).
subscribeRepos 1 param body
SUB
xrpc/com.atproto.label.subscribeLabels
Subscribe to the label/negation stream.
subscribeLabels 1 param body
SUB
subscribe
Subscribe to the Jetstream JSON event stream.
jetstreamSubscribe body
PUB
subscribe
Send a SubscriberSourcedMessage to update subscription options after connecting. Currently supports the optionsupdate message.
jetstreamSubscriberMessage body

Messages & Schemas 39

The contract defines 39 schemas that model the data carried by its messages. The most detailed are RepoCommitFrame (12 properties), Label (9 properties), RepoSyncFrame (5 properties), RepoAccountFrame (5 properties). Each schema is shown below with its type and property counts.

RepoCommitFrame
message
Repository commit event.
RepoSyncFrame
message
Sync event - asserts current repository state without including diff data on the firehose. Used for recovery / desync resolution.
RepoIdentityFrame
message
Account identity change event (handle, signing key, or PDS).
RepoAccountFrame
message
Account hosting-status change event.
RepoHandleFrame
message
DEPRECATED - use identity instead. Legacy handle change event.
RepoMigrateFrame
message
DEPRECATED - use account instead. Legacy account-migration event.
RepoTombstoneFrame
message
DEPRECATED - use account instead. Legacy account-tombstone event.
RepoInfoFrame
message
Informational message (not persisted, no seq). Currently the only defined name value is OutdatedCursor.
RepoErrorFrame
message
Error frame (op = -1). Possible error values for subscribeRepos: FutureCursor, ConsumerTooSlow. The connection is closed after this frame is delivered.
LabelsFrame
message
A batch of labels (and/or negations).
LabelInfoFrame
message
Informational message on the label stream.
LabelErrorFrame
message
Error frame (op = -1). Possible error values for subscribeLabels: FutureCursor.
JetstreamCommitCreate
message
Jetstream commit event with commit.operation = "create". Contains the full record JSON.
JetstreamCommitUpdate
message
Jetstream commit event with commit.operation = "update". Contains the full record JSON, replacing the previous version.
JetstreamCommitDelete
message
Jetstream commit event with commit.operation = "delete". No record body.
JetstreamIdentity
message
Jetstream identity event. Wraps the AT Protocol identity event in a Jetstream envelope.
JetstreamAccount
message
Jetstream account event. Wraps the AT Protocol account event in a Jetstream envelope.
JetstreamSubscriberSourcedMessage
message
JSON message sent from client to Jetstream server after connecting. Currently the only supported type is optionsupdate.
FirehoseFrameHeader
object
DAG-CBOR object that prefixes every WebSocket frame. op = 1 for regular messages (with t set to the short-form type, e.g. commit); op = -1 for error frames (no…
2 properties 1 required
ErrorFrame
object
Payload of an error frame. The connection is closed by the server immediately after the frame is sent.
2 properties 1 required
InfoFrame
object
Informational message payload. Not persisted; has no seq.
2 properties 1 required
RepoCommitFrame
object
commit payload. Represents an update of repository state. Empty commits (no record changes, only rev/signature update) are allowed.
12 properties 11 required
RepoOp
object
A repo operation - a mutation of a single record.
4 properties 3 required
RepoSyncFrame
object
sync payload. Updates the repo to a new state without including the diff on the firehose. Used to recover from broken commit streams or data-loss incidents.
5 properties 5 required
RepoIdentityFrame
object
identity payload. Signals that an account's identity may have changed (handle, signing key, or PDS endpoint). Downstream services should refresh their identity…
4 properties 3 required
RepoAccountFrame
object
account payload. Signals an account-status change on the emitting host (PDS or Relay). The status reflects the host that emitted the event, which may differ fr…
5 properties 4 required
RepoHandleFrame
object
DEPRECATED - use identity instead. Legacy handle event.
4 properties 4 required
RepoMigrateFrame
object
DEPRECATED - use account instead. Legacy migrate event.
4 properties 4 required
RepoTombstoneFrame
object
DEPRECATED - use account instead. Legacy tombstone event.
3 properties 3 required
LabelsFrame
object
labels payload - a batch of labels and/or negations.
2 properties 2 required
Label
object
Metadata tag on an atproto resource (eg, repo or record). Defined by com.atproto.label.defslabel.
9 properties 4 required
JetstreamEventBase
object
Fields present on every Jetstream event.
3 properties 3 required
JetstreamCommitBase
object
JetstreamCommitCreate
object
JetstreamCommitUpdate
object
JetstreamCommitDelete
object
JetstreamIdentity
object
JetstreamAccount
object
JetstreamSubscriberSourcedMessage
object
Message sent from a Jetstream client to the server after connecting, used to update subscription options on the fly. Maximum 10 MB per message; payload limits…
2 properties 2 required

Specification

The full machine-readable AsyncAPI contract behind this narrative.

Source

bluesky-asyncapi.yml Raw ↑

Other APIs Bluesky publishes across the network.

Bluesky Actor Profiles API
Bluesky Administration API
Bluesky Chat Actors API
Bluesky Chat Moderation API
Bluesky Content Labels API
Bluesky Conversations API
Bluesky Feeds API
Bluesky Identity API
Bluesky Labels API
Bluesky Moderation API
Bluesky Notifications API
Bluesky Ozone Communication API
Where this information came from

This is an independent, third-party profile of Bluesky Jetstream, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.