# Bluesky API (/api/bluesky)

Bluesky profiles, a profile's posts, and single posts.

## When To Use This API [#when-to-use-this-api]

The Bluesky API is for agent workflows that need public, platform-native data without writing a custom collector for every task. Use it when a prompt needs evidence from live public records, when a Skill needs repeatable enrichment, or when product code needs the same contract an agent discovered through MCP.

This section lists 3 live Bluesky operations from the canonical OpenAPI spec. Each operation page documents the route, method, parameters, response envelope, pagination behavior when available, and the error vocabulary shared across UnifAPI.

- Follow what journalists, researchers and brands post on Bluesky next to their X and Threads activity.
- Measure engagement on the open social web from each post's like, repost, reply and quote counts.
- Turn a Bluesky handle or post link into a normalized record an agent can cite in a social listening brief.

## Agent Contract Notes [#agent-contract-notes]

Agents usually discover these endpoints with the hosted UnifAPI MCP server, inspect the operation schema, then call only the records needed for the current task. Developers can call the same endpoints over HTTP with an API key, which makes the path from exploratory agent run to production integration direct.

Every successful response uses a stable envelope with a request id, data payload, optional pagination cursor, and billing metadata. Errors use the same closed vocabulary across platforms, so retry logic, user-facing explanations, and cost reporting can stay consistent even when a workflow spans multiple public-data sources.

When you are choosing an operation, start from the public identifier the user already has: a profile username, post id, channel id, subreddit name, search term, or URL-derived slug. Prefer the narrowest endpoint that answers the question, then expand only when the agent needs more evidence. This keeps record usage predictable, makes citations easier to explain, and avoids turning a focused research task into an expensive crawl.

## Operations [#operations]

### Users [#users]

- [`GET /bluesky/users/{username}/posts/{id}`](/api/bluesky/users/username/posts/id/get) — Get a Bluesky post — Returns one Bluesky post by author handle and post id (the record key at the end of a bsky.app post link), with replies.
- [`GET /bluesky/users/{username}/posts`](/api/bluesky/users/username/posts/get) — List posts from a Bluesky profile — Returns recent posts from a public Bluesky profile, newest first, with text, embeds and like, repost and reply counts.
- [`GET /bluesky/users/{username}`](/api/bluesky/users/username/get) — Get a Bluesky profile — Returns a public Bluesky profile by handle: display name, bio, avatar, follower, following and post counts.
