app.bsky.feed Lexicon#

Definitions related to content & activity published in Bluesky.


app.bsky.feed.like#

Record type

export interface Record {
  subject: Subject;
  createdAt: string;
}
export interface Subject {
  uri: string;
  cid: string;
}

app.bsky.feed.mediaEmbed#

Record type A list of media embedded in a post or document.

export interface Record {
  media: MediaEmbed[];
}
export interface MediaEmbed {
  alt?: string;
  thumb?: MediaEmbedBlob;
  original: MediaEmbedBlob;
}
export interface MediaEmbedBlob {
  mimeType: string;
  blobId: string;
}

app.bsky.feed.post#

Record type

/**
 * @minItems 2
 * @maxItems 2
 */
export type TextSlice = [number, number];

export interface Record {
  text: string;
  entities?: Entity[];
  reply?: {
    root: PostRef;
    parent: PostRef;
  };
  createdAt: string;
}
export interface Entity {
  index: TextSlice;
  type: string;
  value: string;
}
export interface PostRef {
  uri: string;
  cid: string;
}

app.bsky.feed.repost#

Record type

export interface Record {
  subject: Subject;
  createdAt: string;
}
export interface Subject {
  uri: string;
  cid: string;
}

app.bsky.feed.getAuthorFeed#

RPC query A view of a user's feed

Parameters:

  • author Required string.
  • limit Optional number. Max value 100.
  • before Optional string.

Response:

  • Encoding: application/json
  • Schema:
export interface Response {
  cursor?: string;
  feed: FeedItem[];
}
export interface FeedItem {
  uri: string;
  cid: string;
  author: User;
  repostedBy?: User;
  record: {};
  embed?: RecordEmbed | ExternalEmbed | UnknownEmbed;
  replyCount: number;
  repostCount: number;
  likeCount: number;
  indexedAt: string;
  myState?: {
    repost?: string;
    like?: string;
  };
}
export interface User {
  did: string;
  handle: string;
  displayName?: string;
}
export interface RecordEmbed {
  type: "record";
  author: User;
  record: {};
}
export interface ExternalEmbed {
  type: "external";
  uri: string;
  title: string;
  description: string;
  imageUri: string;
}
export interface UnknownEmbed {
  type: string;
}

app.bsky.feed.getLikedBy#

RPC query

Parameters:

  • uri Required string.
  • cid Optional string.
  • limit Optional number. Max value 100.
  • before Optional string.

Response:

  • Encoding: application/json
  • Schema:
export interface Response {
  uri: string;
  cid?: string;
  cursor?: string;
  likedBy: {
    did: string;
    handle: string;
    displayName?: string;
    createdAt?: string;
    indexedAt: string;
  }[];
}

app.bsky.feed.getPostThread#

RPC query

Parameters:

  • uri Required string.
  • depth Optional number.

Response:

  • Encoding: application/json
  • Schema:
export interface Response {
  thread: Post;
}
export interface Post {
  uri: string;
  cid: string;
  author: User;
  record: {};
  embed?: RecordEmbed | ExternalEmbed | UnknownEmbed;
  parent?: Post;
  replyCount: number;
  replies?: Post[];
  likeCount: number;
  repostCount: number;
  indexedAt: string;
  myState?: {
    repost?: string;
    like?: string;
  };
}
export interface User {
  did: string;
  handle: string;
  displayName?: string;
}
export interface RecordEmbed {
  type: "record";
  author: User;
  record: {};
}
export interface ExternalEmbed {
  type: "external";
  uri: string;
  title: string;
  description: string;
  imageUri: string;
}
export interface UnknownEmbed {
  type: string;
}

app.bsky.feed.getRepostedBy#

RPC query

Parameters:

  • uri Required string.
  • cid Optional string.
  • limit Optional number. Max value 100.
  • before Optional string.

Response:

  • Encoding: application/json
  • Schema:
export interface Response {
  uri: string;
  cid?: string;
  cursor?: string;
  repostedBy: {
    did: string;
    handle: string;
    displayName?: string;
    createdAt?: string;
    indexedAt: string;
  }[];
}

app.bsky.feed.getTimeline#

RPC query A view of the user's home timeline

Parameters:

  • algorithm Optional string.
  • limit Optional number. Max value 100.
  • before Optional string.

Response:

  • Encoding: application/json
  • Schema:
export interface Response {
  cursor?: string;
  feed: FeedItem[];
}
export interface FeedItem {
  uri: string;
  cid: string;
  author: User;
  repostedBy?: User;
  record: {};
  embed?: RecordEmbed | ExternalEmbed | UnknownEmbed;
  replyCount: number;
  repostCount: number;
  likeCount: number;
  indexedAt: string;
  myState?: {
    repost?: string;
    like?: string;
  };
}
export interface User {
  did: string;
  handle: string;
  displayName?: string;
}
export interface RecordEmbed {
  type: "record";
  author: User;
  record: {};
}
export interface ExternalEmbed {
  type: "external";
  uri: string;
  title: string;
  description: string;
  imageUri: string;
}
export interface UnknownEmbed {
  type: string;
}

See what's next.Join the private beta.

The AT Protocol will launch soon.
Join the waitlist to try the beta before it's publicly available.

Join the waitlist