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 operations3 channels39 schemas
Metadata
The identity and technical contract details declared by the specification.
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).
subscribeRepos1 parambody
SUB
xrpc/com.atproto.label.subscribeLabels
Subscribe to the label/negation stream.
subscribeLabels1 parambody
SUB
subscribe
Subscribe to the Jetstream JSON event stream.
jetstreamSubscribebody
PUB
subscribe
Send a SubscriberSourcedMessage to update subscription options after connecting. Currently supports the optionsupdate message.
jetstreamSubscriberMessagebody
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 properties1 required
ErrorFrame
object
Payload of an error frame. The connection is closed by the server immediately after the frame is sent.
2 properties1 required
InfoFrame
object
Informational message payload. Not persisted; has no seq.
2 properties1 required
RepoCommitFrame
object
commit payload. Represents an update of repository state. Empty commits (no record changes, only rev/signature update) are allowed.
12 properties11 required
RepoOp
object
A repo operation - a mutation of a single record.
4 properties3 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 properties5 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 properties3 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 properties4 required
RepoHandleFrame
object
DEPRECATED - use identity instead. Legacy handle event.
4 properties4 required
RepoMigrateFrame
object
DEPRECATED - use account instead. Legacy migrate event.
4 properties4 required
RepoTombstoneFrame
object
DEPRECATED - use account instead. Legacy tombstone event.
3 properties3 required
LabelsFrame
object
labels payload - a batch of labels and/or negations.
2 properties2 required
Label
object
Metadata tag on an atproto resource (eg, repo or record). Defined by com.atproto.label.defslabel.
9 properties4 required
JetstreamEventBase
object
Fields present on every Jetstream event.
3 properties3 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 properties2 required
Specification
The full machine-readable AsyncAPI contract behind this narrative.
Every API here is available over the API and to AI agents over MCP. APIs is not yet its own endpoint on the v1 API. Reach this content through network search and the tag graph, or the MCP server below.
Installs https://mcp.apievangelist.com/mcp in Claude, Cursor, VS Code and the rest — one button, every client.
MCP tools for apis
4 tools reach this content
search_api_evangelistSearch every content type across the network at once.
find_relatedThe shared-tag relevance graph — what else covers this.
get_tagEverything one tag labels, across all content types.
guide_topicPRO — a curated bundle for a topic: area, guidance, rules, papers, stories, services.
A second provider on the same verified email joins the account you already have.
Your account
ⓘ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.