---
title: "Bluesky User Posts"
method: GET
path: "/v1/bluesky/user/posts"
tags: ["Bluesky"]
---

# Bluesky User Posts

`GET /v1/bluesky/user/posts`

## Request

- Base URL: `https://apidirect.io`
- URL: `https://apidirect.io/v1/bluesky/user/posts`
- Auth: API key in header `X-API-Key`

Get a user's feed by handle: their posts, replies, and reposts in feed order (the pinned post first, then newest first), each flagged with is_reply, is_repost, and is_pinned. Returns post text, engagement metrics, media, link cards, and quoted posts. Set get_sentiment=true to add AI emotion analysis (+$0.001/page).

**Price:** $0.003 per page. **Free tier:** 50 requests/month.

## Query parameters

- `username` string
- `url` string
- `pages` integer
- `get_sentiment` boolean

## Response `200`

Successful response

- BlueskyUserPostsResponse: Inferred from a live response. Any field can be null or absent, and new fields may be added at any time.
  - `posts` object[], nullable
    - `title` string, nullable
    - `url` string, nullable
    - `date` string, nullable
    - `author` string, nullable
    - `author_name` string, nullable
    - `author_id` string, nullable
    - `author_verified` boolean, nullable
    - `source` string, nullable
    - `domain` string, nullable
    - `snippet` string, nullable
    - `likes` number, nullable
    - `replies` number, nullable
    - `reposts` number, nullable
    - `quotes` number, nullable
    - `bookmarks` number, nullable
    - `lang` string, nullable
    - `is_reply` boolean, nullable
    - `in_reply_to_id` string, nullable
    - `is_quote` boolean, nullable
    - `quoted_post` unknown
    - `hashtags` unknown[], nullable
      - unknown
    - `mentions` unknown[], nullable
      - unknown
    - `links` unknown[], nullable
      - unknown
    - `link_preview` unknown
    - `media_type` string, nullable
    - `image_url` string, nullable
    - `video_url` string, nullable
    - `carousel_media` unknown[], nullable
      - unknown
    - `post_id` string, nullable
    - `is_repost` boolean, nullable
    - `reposted_by` string, nullable
    - `is_pinned` boolean, nullable
  - `username` string, nullable
  - `pages` number, nullable
  - `count` number, nullable

## Other responses

- `400`: Bad request: a required parameter is missing or a value is invalid (code: missing_parameter or invalid_parameter).
- `401`: Unauthorized: the API key is missing or invalid (code: missing_api_key or invalid_api_key).
- `402`: Free tier used up for this endpoint and no payment method on file (`payment_required`).
- `403`: Account blocked after a failed payment (`account_blocked`).
- `404`: Not found: the user does not exist (code: not_found).
- `429`: Rate limit exceeded, or too many concurrent requests for this endpoint
- `500`: Internal server error
- `502`: Temporary failure retrieving Bluesky data. Please retry shortly.
- `503`: Service unavailable: the data source is temporarily unavailable
- `504`: The request timed out

---

[API](https://skmtc.dev/apidirect/apis/api-direct.md) · [All operations](https://skmtc.dev/apidirect/apis/api-direct/llms.txt) · [OpenAPI document](https://skmtc.dev/apidirect/apis/api-direct/revisions/fa8c68d70bd0?raw)
