---
title: "Get a Bluesky feed"
method: GET
path: "/v1/social/bluesky/feed"
tags: ["social"]
---

# Get a Bluesky feed

`GET /v1/social/bluesky/feed`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/social/bluesky/feed`
- Auth: none required

Get the recent public posts from a Bluesky account. Pass the account handle in the handle query parameter. No API key or connected account is required, because the feed is public. If Bluesky cannot be reached, the last successful result is served instead.

**Notes.**
- Feed envelope: `stale` (and `staleSince`) beside `data`. Answers are cached at the edge for a few minutes.
- A public account's posts (no replies); no connected account is needed.

## Query parameters

- `dt` string, required
- `handle` string, required

## Response `200`

Success.

- object
  - `data` object, required
    - `posts` object[], required
      - `text` string, required
      - `author` string, required
      - `handle` string, required
      - `avatar` string, nullable, required
      - `likes` integer, required
      - `reposts` integer, required
      - `createdAt` string, nullable, required: ISO-8601 timestamp (UTC).
      - `image` string, nullable, required
  - `stale` boolean, required: True when the provider failed and this is the last good answer.
  - `staleSince` string: When the stale copy was fetched (only when `stale`).

## Other responses

- `400`: `bad_handle`.
- `401`: Missing, expired or revoked bearer token.
- `404`: The `dt` token is missing or expired.
- `502`: The provider failed and there is no recent copy to serve.
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
