The post
Bluesky has one content unit, a BlueskyPost.id is the record key (rkey); uri is the global AT Protocol identity. url is the web link on bsky.app. Text, languages, author (handle + DID), metrics (likes, reposts, replies, quotes) and an optional embed (images, external link, record, video) travel together.
Do not call it a skeet in product language, and do not reuse Post — Reddit owns that envelope key.
Coverage
A Watch on Bluesky requires a search term and/or an author — at least one must be set. Optionallang narrows a search Watch.
- With author, each tick polls that author’s feed.
- With query (and no author), each tick polls post search, newest first.
from:handle, #tag, "exact phrase", and the rest of the grammar.
Interval: 120–86400 seconds. Cap: 20 active Watches per Account. Each tick costs 1 credit.
What an event carries
The first tick establishes a silent baseline and emits nothing. Later ticks emitbluesky_post.created with the full post in the blueskyPost envelope key. webhook_url is optional — without it the Watch still records every match, readable through GET /v1/bluesky/watches/{id}/events. See Webhooks.
Errors
A Watch whose author no longer resolves reports the failure in its activity rather than going quiet — read it throughGET /v1/bluesky/watches/{id}/activity. A temporary Source failure is 503 and is not charged.