Bluesky Feeds API

Operations for managing feeds, posts, likes, and reposts.

OpenAPI Specification

bluesky-feeds-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bluesky Social Actor Profiles Feeds API
  description: "The Bluesky Social API provides programmatic access to the Bluesky social network built on the AT Protocol. \n\nThis API enables developers to:\n- Manage user profiles and preferences\n- Create, read, and interact with posts and feeds\n- Handle social graph operations (follows, blocks, mutes)\n- Process notifications and conversations\n- Moderate content and manage labels\n- Synchronize repository data\n\nAuthentication is handled via Bearer tokens. Public endpoints can be accessed directly at https://public.api.bsky.app, while authenticated requests should be made to the user's Personal Data Server (PDS).\n\nFor more information, visit the [Bluesky API Documentation](https://docs.bsky.app)."
  version: 1.0.0
  contact:
    name: Bluesky Support
    url: https://bsky.app
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://bsky.social/xrpc
  description: Bluesky Social PDS
- url: https://public.api.bsky.app/xrpc
  description: Public Bluesky AppView API (unauthenticated endpoints)
tags:
- name: Feeds
  description: Operations for managing feeds, posts, likes, and reposts.
paths:
  /xrpc/app.bsky.feed.describeFeedGenerator:
    get:
      operationId: feedDescribeFeedGenerator
      summary: Bluesky Get information about a feed generator, including policies and offered feed URIs.
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - did
                - feeds
                properties:
                  did:
                    type: string
                    format: did
                  feeds:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDescribeFeedGeneratorFeed'
                  links:
                    $ref: '#/components/schemas/AppBskyFeedDescribeFeedGeneratorLinks'
              examples:
                FeedDescribeFeedGeneratorResponse200Example:
                  $ref: '#/components/examples/FeedDescribeFeedGeneratorResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getActorFeeds:
    get:
      operationId: feedGetActorFeeds
      summary: Bluesky Get a list of feeds (feed generator records) created by the actor (in the actor's repo).
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get a list of feeds (feed generator records) created by the actor (in the actor''s repo).'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: actor
        in: query
        required: true
        schema:
          type: string
          format: at-identifier
        example: user.bsky.social
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feeds
                properties:
                  cursor:
                    type: string
                  feeds:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsGeneratorView'
              examples:
                FeedGetActorFeedsResponse200Example:
                  $ref: '#/components/examples/FeedGetActorFeedsResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getActorLikes:
    get:
      operationId: feedGetActorLikes
      summary: Bluesky Get a list of posts liked by an actor.
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get a list of posts liked by an actor. Requires auth, actor must be the requesting account.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: actor
        in: query
        required: true
        schema:
          type: string
          format: at-identifier
        example: user.bsky.social
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feed
                properties:
                  cursor:
                    type: string
                  feed:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsFeedViewPost'
              examples:
                FeedGetActorLikesResponse200Example:
                  $ref: '#/components/examples/FeedGetActorLikesResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - BlockedActor
                    - BlockedByActor
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getAuthorFeed:
    get:
      operationId: feedGetAuthorFeed
      summary: Bluesky Get a view of an actor's 'author feed' (post and reposts by the author).
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get a view of an actor''s ''author feed'' (post and reposts by the author). Does not require auth.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: actor
        in: query
        required: true
        schema:
          type: string
          format: at-identifier
        example: user.bsky.social
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      - name: filter
        in: query
        description: Combinations of post/repost types to include in response.
        required: false
        schema:
          type: string
          description: Combinations of post/repost types to include in response.
          default: posts_with_replies
          enum:
          - posts_with_replies
          - posts_no_replies
          - posts_with_media
          - posts_and_author_threads
        example: posts_with_replies
      - name: includePins
        in: query
        required: false
        schema:
          type: boolean
        example: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feed
                properties:
                  cursor:
                    type: string
                  feed:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsFeedViewPost'
              examples:
                FeedGetAuthorFeedResponse200Example:
                  $ref: '#/components/examples/FeedGetAuthorFeedResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - BlockedActor
                    - BlockedByActor
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getFeed:
    get:
      operationId: feedGetFeed
      summary: Bluesky Get a hydrated feed from an actor's selected feed generator.
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get a hydrated feed from an actor''s selected feed generator. Implemented by App View.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: feed
        in: query
        required: true
        schema:
          type: string
          format: at-uri
        example: at://did:plc:example123/app.bsky.feed.post/abc123
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feed
                properties:
                  cursor:
                    type: string
                  feed:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsFeedViewPost'
              examples:
                FeedGetFeedResponse200Example:
                  $ref: '#/components/examples/FeedGetFeedResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - UnknownFeed
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getFeedGenerator:
    get:
      operationId: feedGetFeedGenerator
      summary: Bluesky Get information about a feed generator.
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get information about a feed generator. Implemented by AppView.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: feed
        in: query
        description: AT-URI of the feed generator record.
        required: true
        schema:
          type: string
          description: AT-URI of the feed generator record.
          format: at-uri
        example: at://did:plc:example123/app.bsky.feed.post/abc123
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - view
                - isOnline
                - isValid
                properties:
                  view:
                    $ref: '#/components/schemas/AppBskyFeedDefsGeneratorView'
                  isOnline:
                    type: boolean
                    description: Indicates whether the feed generator service has been online recently, or else seems to be inactive.
                  isValid:
                    type: boolean
                    description: Indicates whether the feed generator service is compatible with the record declaration.
              examples:
                FeedGetFeedGeneratorResponse200Example:
                  $ref: '#/components/examples/FeedGetFeedGeneratorResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getFeedGenerators:
    get:
      operationId: feedGetFeedGenerators
      summary: Bluesky Get information about a list of feed generators.
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get information about a list of feed generators.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: feeds
        in: query
        required: true
        schema:
          type: array
          items:
            type: string
            format: at-uri
        example:
        - at://did:plc:example123/app.bsky.feed.post/abc123
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feeds
                properties:
                  feeds:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsGeneratorView'
              examples:
                FeedGetFeedGeneratorsResponse200Example:
                  $ref: '#/components/examples/FeedGetFeedGeneratorsResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getFeedSkeleton:
    get:
      operationId: feedGetFeedSkeleton
      summary: Bluesky Get a skeleton of a feed provided by a feed generator.
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: feed
        in: query
        description: Reference to feed generator record describing the specific feed being requested.
        required: true
        schema:
          type: string
          description: Reference to feed generator record describing the specific feed being requested.
          format: at-uri
        example: at://did:plc:example123/app.bsky.feed.post/abc123
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feed
                properties:
                  cursor:
                    type: string
                  feed:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsSkeletonFeedPost'
              examples:
                FeedGetFeedSkeletonResponse200Example:
                  $ref: '#/components/examples/FeedGetFeedSkeletonResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - UnknownFeed
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getLikes:
    get:
      operationId: feedGetLikes
      summary: Bluesky Get like records which reference a subject (by AT-URI and CID).
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get like records which reference a subject (by AT-URI and CID).'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: uri
        in: query
        description: AT-URI of the subject (eg, a post record).
        required: true
        schema:
          type: string
          description: AT-URI of the subject (eg, a post record).
          format: at-uri
        example: at://did:plc:example123/app.bsky.feed.post/abc123
      - name: cid
        in: query
        description: CID of the subject record (aka, specific version of record), to filter likes.
        required: false
        schema:
          type: string
          description: CID of the subject record (aka, specific version of record), to filter likes.
          format: cid
        example: bafyreiabc123example
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - uri
                - likes
                properties:
                  uri:
                    type: string
                    format: at-uri
                  cid:
                    type: string
                    format: cid
                  cursor:
                    type: string
                  likes:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedGetLikesLike'
              examples:
                FeedGetLikesResponse200Example:
                  $ref: '#/components/examples/FeedGetLikesResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/app.bsky.feed.getListFeed:
    get:
      operationId: feedGetListFeed
      summary: Bluesky Get a feed of recent posts from a list (posts and reposts from any actors on the list).
      description: '*This endpoint is part of the Bluesky application Lexicon APIs (`app.bsky.*`). Public endpoints which don''t require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user''s PDS, with automatic service proxying. Authenticated requests can be used for both public and non-public endpoints.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.'
      tags:
      - Feeds
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: list
        in: query
        description: Reference (AT-URI) to the list record.
        required: true
        schema:
          type: string
          description: Reference (AT-URI) to the list record.
          format: at-uri
        example: at://did:plc:example123/app.bsky.feed.post/abc123
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - feed
                properties:
                  cursor:
                    type: string
                  feed:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppBskyFeedDefsFeedViewPost'
              examples:
                FeedGetListFeedResponse200Example:
                  $ref: '#/components/examples/FeedGetListFeedResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - UnknownList
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
      

# --- truncated at 32 KB (99 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bluesky/refs/heads/main/openapi/bluesky-feeds-api-openapi.yml