Bluesky API

Get Bluesky data as clean JSON with one key: 32 endpoints, 1 to 5 credits per call, the same response shape as every other platform.

What you get#

Onekey exposes Bluesky as 32 endpoints behind one API key: 7 endpoints return one record (data is an object) and 25 endpoints return a list (data is an array). Every answer uses the same envelope (success, data, metadata, error), the cost is reported in metadata.credits_charged, and fields are mapped onto the unified schema so the code you write for Bluesky also works for the rest of the social networks category.

Endpoints#

EndpointWhat it doesParametersCreditsStatus
actor_feedsCustom feeds published by a Bluesky user.handle*5stable
actor_listsLists created by a Bluesky user.handle*5stable
actor_starter_packsStarter packs created by a Bluesky user.handle*5stable
feedPosts from a Bluesky custom feed.feed*, cursor5stable
feed_generatorDetails of a Bluesky custom feed generator.feed*1stable
feed_generatorsDetails for a Bluesky feed generator (batch lookup form).feed*5stable
followersFollowers of a Bluesky account.handle*, cursor5stable
followsAccounts a Bluesky user follows.handle*5stable
likesAccounts that liked a Bluesky post.uri*, cursor5stable
listA Bluesky list's metadata.list*1stable
list_membersMembers of a Bluesky list.list*, cursor5stable
mediaBluesky user's posts that contain media.handle*, cursor5stable
popular_feedsPopular Bluesky feed generators.q, cursor5stable
post_repliesDirect replies to a Bluesky post.uri*5stable
post_threadA Bluesky post with its counts (thread root).uri*1stable
postsLatest posts by a Bluesky user.handle*, cursor1stable
posts_by_uriLook up a Bluesky post by AT URI.uri*1stable
posts_no_repliesBluesky user's posts excluding replies.handle*, cursor5stable
posts_with_repliesBluesky user's posts including replies.handle*, cursor5stable
profileFetch a Bluesky user's public profile.handle*1stable
profilesFetch two Bluesky profiles in one call.handle*, handle25stable
quotesQuote posts of a Bluesky post.uri*, cursor5stable
reposted_byAccounts that reposted a Bluesky post.uri*, cursor5stable
resolve_handleResolve a Bluesky handle to its DID.handle*1stable
searchSearch Bluesky users by keyword.q*, cursor1stable
search_typeaheadBluesky account typeahead suggestions.q*5stable
starter_packA Bluesky starter pack.pack*1stable
suggested_feedsSuggested Bluesky feed generators.cursor5stable
threadsBluesky user's posts and own threads.handle*, cursor5stable
trending_topicsBluesky trending topics.-5stable
trendsBluesky trends with post counts.-5stable
videosBluesky user's posts that contain video.handle*5stable

A * marks a required parameter. Each endpoint name links to its reference page with the full parameter table, caching window and a recorded response.

Make a request#

This calls bluesky.feed_generator (1 credit, stable). Replace YOUR_API_KEY with your key; sign up, no card. 1,000 free credits cover the open-platform endpoints. Hard-to-reach platforms (X, TikTok, Instagram, Reddit, and others marked on their page) need a verified email and a purchased pack.

curl "https://api.onekey.dev/v1/bluesky/feed_generator?feed=at%3A%2F%2Fdid%3Aplc%3Az72i7hdynmk6r22z27h6tvur%2Fapp.bsky.feed.generator%2Fwhats-hot" \
  -H "x-api-key: YOUR_API_KEY"

Fields you get back#

These unified fields come back from Bluesky, with the same names as on every other platform. The count is how many of its 32 mapped endpoints return the field; a field the source lacks is null, never missing.

FieldTypeEndpoints
content.textstring31
author.idstring29
author.usernamestring29
author.displayNamestring21
content.idstring21
engagement.likesinteger20
author.avatarUrlURL19
engagement.commentsinteger14
content.createdAtISO 8601 date13
content.languagestring11
content.titlestring11
engagement.sharesinteger11
engagement.bookmarksinteger10
author.followersinteger2
author.followinginteger2
entity.namestring2
entity.descriptionstring1
media.thumbnailUrlURL1

The full schema is in Unified schema.

Pricing#

Bluesky calls cost 1 to 5 credits, flat per endpoint. Free when served from cache (0.2 credit for a cached response over 100 KB). Invalid, failed or not-found calls are not charged. See pricing for credit packs.