Skip to main content

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. Optional lang 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.
Bluesky search operators work as-is: 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 emit bluesky_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 through GET /v1/bluesky/watches/{id}/activity. A temporary Source failure is 503 and is not charged.