### Run Server Dependencies
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/starter-templates/custom-feeds.mdx
Install server dependencies using yarn and then start the server. The server will run on port 3000 by default, or as defined in the .env file.
```bash
yarn start
```
--------------------------------
### Start Local Development Server
Source: https://github.com/bluesky-social/bsky-docs/blob/main/README.md
Run this command to start a local development server for the documentation site. The site will be accessible at http://localhost:3000.
```bash
npm start
```
--------------------------------
### Install TypeScript and Node.js
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/starter-templates/bots.mdx
Install the necessary tools for running TypeScript scripts. These commands are for global installation.
```bash
npm i -g typescript
npm i -g ts-node
```
--------------------------------
### Install Bluesky API SDK (Python)
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/get-started.mdx
Install the atproto package using pip.
```bash
pip install atproto
```
--------------------------------
### Download Blobs Command Example
Source: https://github.com/bluesky-social/bsky-docs/blob/main/blog/2023-11-06-repo-export.md
Example usage of the `download-blobs` command from the `go-repo-export` tool to download all blobs for a given account and save them to a specified directory.
```bash
> ./go-repo-export download-blobs atproto.com
writing blobs to: did:plc:ewvi7nxzyoun6zhxrhs64oiz/_blob
did:plc:ewvi7nxzyoun6zhxrhs64oiz/_blob/bafkreiacrjijybmsgnq3mca6fvhtvtc7jdtjflomoenrh4ph77kghzkiii downloaded
did:plc:ewvi7nxzyoun6zhxrhs64oiz/_blob/bafkreib4xwiqhxbqidwwatoqj7mrx6mr7wlc5s6blicq5wq2qsq37ynx5y downloaded
did:plc:ewvi7nxzyoun6zhxrhs64oiz/_blob/bafkreibdnsisdacjv3fswjic4dp7tju7mywfdlcrpleisefvzf44c3p7wm downloaded
[...]
```
--------------------------------
### Install Bluesky API SDK (TypeScript)
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/get-started.mdx
Install the @atproto/api package using yarn.
```bash
yarn add @atproto/api
```
--------------------------------
### List Blobs Command Example
Source: https://github.com/bluesky-social/bsky-docs/blob/main/blog/2023-11-06-repo-export.md
Example usage of the `list-blobs` command from the `go-repo-export` tool to retrieve all blob CIDs for a given account.
```bash
> ./go-repo-export list-blobs atproto.com
bafkreiacrjijybmsgnq3mca6fvhtvtc7jdtjflomoenrh4ph77kghzkiii
bafkreib4xwiqhxbqidwwatoqj7mrx6mr7wlc5s6blicq5wq2qsq37ynx5y
bafkreibdnsisdacjv3fswjic4dp7tju7mywfdlcrpleisefvzf44c3p7wm
bafkreiebtvblnu4jwu66y57kakido7uhiigenznxdlh6r6wiswblv5m4py
[...]
```
--------------------------------
### HTML Link Example
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/advanced-guides/post-richtext.md
Demonstrates how a link is represented in HTML.
```html
Go to this site
```
--------------------------------
### GET /xrpc/com.atproto.lexicon.resolveLexicon
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/com-atproto-lexicon-resolve-lexicon.api.mdx
Resolves an atproto lexicon (NSID) to a schema. See the API Hosts and Auth guide for more information on calling atproto API endpoints.
```APIDOC
## GET /xrpc/com.atproto.lexicon.resolveLexicon
### Description
Resolves an atproto lexicon (NSID) to a schema.
### Method
GET
### Endpoint
/xrpc/com.atproto.lexicon.resolveLexicon
### Parameters
#### Query Parameters
- **nsid** (string) - Required - The lexicon NSID to resolve.
### Response
#### Success Response (200)
- **uri** (string) - The AT-URI of the lexicon schema record.
- **cid** (string) - The CID of the lexicon schema record.
- **schema** (object) - The schema of the lexicon.
- **lexicon** (integer)
#### Error Response (400)
- **error** (string) - Enum: InvalidRequest, ExpiredToken, InvalidToken, LexiconNotFound
- **message** (string)
#### Error Response (401)
- **error** (string) - Const: AuthMissing
- **message** (string)
```
--------------------------------
### Build Static Documentation
Source: https://github.com/bluesky-social/bsky-docs/blob/main/README.md
Execute this command to generate a static build of the documentation site. The output will be placed in the './build/' directory.
```bash
npm run build
```
--------------------------------
### POST /xrpc/com.atproto.identity.submitPlcOperation
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/com-atproto-identity-submit-plc-operation.api.mdx
Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry. Refer to the API Hosts and Auth guide for more information on calling atproto API endpoints.
```APIDOC
## POST /xrpc/com.atproto.identity.submitPlcOperation
### Description
Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry.
### Method
POST
### Endpoint
/xrpc/com.atproto.identity.submitPlcOperation
### Parameters
#### Request Body
- **operation** (object) - Required - Description of the operation object is not provided.
### Request Example
{
"operation": "{request body}"
}
### Response
#### Success Response (200)
- **OK** (object) - Description of the success response is not provided.
#### Error Response
- **400 Bad Request** - {"error": "InvalidRequest" | "ExpiredToken" | "InvalidToken", "message": "string"}
- **401 Unauthorized** - {"error": "AuthMissing", "message": "string"}
```
--------------------------------
### app.bsky.graph.getStarterPacks
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-graph-get-starter-packs.api.mdx
Retrieves a list of starter packs, which are curated collections of user-created lists.
```APIDOC
## GET /xrpc/app.bsky.graph.getStarterPacks
### Description
Retrieves a list of starter packs. Starter packs are curated collections of user-created lists.
### Method
GET
### Endpoint
/xrpc/app.bsky.graph.getStarterPacks
### Parameters
#### Query Parameters
- **cursor** (string) - Optional - The cursor for the next page of results.
- **limit** (integer) - Optional - The maximum number of items to return.
### Request Example
```json
{
"cursor": "some_cursor_string",
"limit": 20
}
```
### Response
#### Success Response (200)
- **starterPacks** (array) - A list of starter packs.
- **name** (string) - The name of the starter pack.
- **description** (string) - A description of the starter pack.
- **creator** (object) - Information about the creator of the starter pack.
- **did** (string) - The decentralized identifier of the creator.
- **handle** (string) - The handle of the creator.
- **lists** (array) - A list of lists included in the starter pack.
- **uri** (string) - The URI of the list.
- **cid** (string) - The CID of the list.
- **creator** (object) - Information about the creator of the list.
- **did** (string) - The decentralized identifier of the list creator.
- **handle** (string) - The handle of the list creator.
- **name** (string) - The name of the list.
- **description** (string) - A description of the list.
- **purpose** (string) - The purpose of the list (e.g., 'curation').
- **createdAt** (string) - The timestamp when the list was created.
- **updatedAt** (string) - The timestamp when the list was last updated.
- **cursor** (string) - The cursor for the next page of results.
#### Response Example
```json
{
"starterPacks": [
{
"name": "Awesome Developers",
"description": "A collection of lists for awesome developers.",
"creator": {
"did": "did:plc:examplecreator1",
"handle": "creator1.bsky.social"
},
"lists": [
{
"uri": "at://did:plc:examplecreator1/app.bsky.graph.list/def",
"cid": "bafybeidexamplecid1",
"creator": {
"did": "did:plc:examplecreator1",
"handle": "creator1.bsky.social"
},
"name": "Top Dev Tools",
"description": "My favorite development tools.",
"purpose": "curation",
"createdAt": "2023-01-01T12:00:00.000Z",
"updatedAt": "2023-01-01T12:00:00.000Z"
}
]
}
],
"cursor": "next_cursor_string"
}
```
```
--------------------------------
### GET /xrpc/chat.bsky.convo.getConvo
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/chat-bsky-convo-get-convo.api.mdx
This endpoint retrieves a specific conversation. Requests usually require authentication, are directed to the user's PDS instance, and proxied to the single central chat service by setting the appropriate service DID (`did:web:api.bsky.chat`) in the service proxying header. To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.
```APIDOC
## GET /xrpc/chat.bsky.convo.getConvo
### Description
Retrieves a specific conversation.
### Method
GET
### Endpoint
/xrpc/chat.bsky.convo.getConvo
### Parameters
#### Query Parameters
- **convoId** (string) - Required - The ID of the conversation to retrieve.
### Request Example
(No request body for GET requests)
### Response
#### Success Response (200)
- **convoId** (string) - The ID of the conversation.
- **members** (array) - An array of user DIDs who are members of the conversation.
- **lastMessage** (object) - The last message in the conversation.
- **sender** (string) - The DID of the sender.
- **sentAt** (string) - The timestamp when the message was sent (ISO 8601 format).
- **messageId** (string) - The unique identifier for the message.
- **text** (string) - The content of the message.
- **createdAt** (string) - The timestamp when the conversation was created (ISO 8601 format).
- **updatedAt** (string) - The timestamp when the conversation was last updated (ISO 8601 format).
#### Response Example
```json
{
"convoId": "conv-abc123xyz",
"members": [
"did:plc:user1",
"did:plc:user2"
],
"lastMessage": {
"sender": "did:plc:user2",
"sentAt": "2023-10-27T10:00:00.000Z",
"messageId": "msg-def456uvw",
"text": "Hello there!"
},
"createdAt": "2023-10-26T09:00:00.000Z",
"updatedAt": "2023-10-27T10:00:00.000Z"
}
```
```
--------------------------------
### Create Authentication Session (Python)
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/get-started.mdx
Instantiate the Client and log in using your handle and password. The client manages session information.
```python
from atproto import Client
client = Client()
client.login('handle.example.com', 'hunter2')
```
--------------------------------
### GET /xrpc/chat.bsky.convo.getConvoForMembers
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/chat-bsky-convo-get-convo-for-members.api.mdx
This endpoint retrieves a conversation for a given set of members. Requests usually require authentication, are directed to the user's PDS instance, and proxied to the single central chat service by setting the appropriate service DID (`did:web:api.bsky.chat`) in the service proxying header. To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.
```APIDOC
## GET /xrpc/chat.bsky.convo.getConvoForMembers
### Description
Retrieves a conversation for a given set of members.
### Method
GET
### Endpoint
/xrpc/chat.bsky.convo.getConvoForMembers
### Parameters
#### Query Parameters
- **members** (array[string]) - Required - A list of member DIDs (up to 10) for whom to find the conversation.
### Request Example
(No request body for GET requests)
### Response
#### Success Response (200)
(Response schema not provided in the source text)
#### Response Example
(Response example not provided in the source text)
```
--------------------------------
### app.bsky.graph.searchStarterPacks
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-graph-search-starter-packs.api.mdx
Searches for starter packs. This is a public endpoint and does not require authentication.
```APIDOC
## GET app.bsky.graph.searchStarterPacks
### Description
Searches for starter packs within the Bluesky graph. This endpoint is part of the `app.bsky.graph` namespace.
### Method
GET
### Endpoint
/app.bsky.graph.searchStarterPacks
### Query Parameters
- **query** (string) - Required - The search query string.
- **limit** (integer) - Optional - The maximum number of results to return.
- **cursor** (string) - Optional - A cursor for pagination, used to retrieve the next set of results.
### Request Example
```json
{
"query": "example_query",
"limit": 10
}
```
### Response
#### Success Response (200)
- **users** (array) - A list of starter packs matching the query.
- **did** (string) - The decentralized identifier of the user associated with the starter pack.
- **handle** (string) - The handle of the user.
- **displayName** (string) - The display name of the user.
- **avatar** (string) - The URL of the user's avatar.
- **description** (string) - A short description of the starter pack.
- **cursor** (string) - A cursor for fetching the next page of results.
#### Response Example
```json
{
"users": [
{
"did": "did:plc:exampledid1",
"handle": "user1.bsky.social",
"displayName": "User One",
"avatar": "https://example.com/avatar1.png",
"description": "A collection of curated content."
},
{
"did": "did:plc:exampledid2",
"handle": "user2.bsky.social",
"displayName": "User Two",
"avatar": "https://example.com/avatar2.png",
"description": "Another great starter pack."
}
],
"cursor": "next_cursor_string"
}
```
```
--------------------------------
### app.bsky.graph.defs.starterPackViewBasic
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/chat-bsky-convo-list-convos.api.mdx
Basic view of a starter pack, including item counts and labels.
```APIDOC
## app.bsky.graph.defs.starterPackViewBasic
### Description
Provides a basic view of a starter pack, including counts of items and associated labels.
### Properties
- **listItemCount** (integer, minimum: 0) - The number of list items in the starter pack.
- **joinedWeekCount** (integer, minimum: 0) - The number of users who joined in the current week.
- **joinedAllTimeCount** (integer, minimum: 0) - The total number of users who have ever joined.
- **labels** (array of objects) - Labels applied to the starter pack.
- **src** (string, format: did) - DID of the actor who created this label.
- **uri** (string, format: uri) - AT URI of the resource the label applies to.
- **cid** (string, format: cid) - Optional CID specifying the version of the resource.
- **val** (string) - The value or type of the label.
- **neg** (boolean) - If true, this is a negation label.
- **cts** (string, format: date-time) - Timestamp when the label was created.
- **exp** (string, format: date-time) - Timestamp at which the label expires.
- **sig** (string, format: byte) - Signature of the label.
- **indexedAt** (string, format: date-time) - Timestamp when the starter pack was indexed.
```
--------------------------------
### Setup Agent with Login
Source: https://github.com/bluesky-social/bsky-docs/blob/main/blog/2024-08-12-ts-api-refactor/index.md
Instantiates an AtpAgent, logs in with username and password, and returns an Agent. The persistSession callback handles session updates.
```typescript
import { Agent, AtpAgent } from '@atproto/api'
async function setupAgent(service: string, username: string, password: string): Promise {
const agent = new AtpAgent({
service,
persistSession: (evt, session) => {
// handle session update
},
})
await agent.login(username, password)
return agent
}
```
--------------------------------
### GET /xrpc/tools.ozone.verification.listVerifications
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/tools-ozone-verification-list-verifications.api.mdx
This endpoint is part of the Ozone moderation service APIs. Requests usually require authentication, are directed to the user's PDS instance, and proxied to the Ozone instance indicated by the DID in the service proxying header. Admin authentication may also be possible, with requests sent directly to the Ozone instance. To learn more about calling atproto API endpoints like this one, see the API Hosts and Auth guide.
```APIDOC
## GET /xrpc/tools.ozone.verification.listVerifications
### Description
Lists verifications. This endpoint is part of the Ozone moderation service. Requests usually require authentication and are directed to the user's PDS instance, proxied to the Ozone instance indicated by the DID in the service proxying header. Admin authentication may also be possible, with requests sent directly to the Ozone instance.
### Method
GET
### Endpoint
/xrpc/tools.ozone.verification.listVerifications
### Parameters
#### Query Parameters
- **cursor** (string) - Optional - Pagination cursor
- **limit** (integer) - Optional - Maximum number of results to return (minimum: 1, maximum: 100, default: 50)
- **createdAfter** (string) - Optional - Filter to verifications created after this timestamp (format: date-time)
- **createdBefore** (string) - Optional - Filter to verifications created before this timestamp (format: date-time)
- **issuers** (array of strings) - Optional - Filter to verifications from specific issuers (max items: 100, format: did)
- **subjects** (array of strings) - Optional - Filter to specific verified DIDs (max items: 100, format: did)
- **sortDirection** (string) - Optional - Sort direction for creation date (default: "desc")
- **isRevoked** (boolean) - Optional - Filter to verifications that are revoked or not. By default, includes both.
### Response
#### Success Response (200)
- **verifications** (array) - List of verifications.
- **cursor** (string) - Pagination cursor for the next page of results.
#### Response Example
```json
{
"verifications": [
{
"id": "string",
"createdAt": "string",
"updatedAt": "string",
"did": "string",
"handle": "string",
"creator": "string",
"auditLog": [
{
"event": "string",
"createdAt": "string",
"actor": "string"
}
],
"revokedAt": "string",
"revokedBy": "string"
}
],
"cursor": "string"
}
```
```
--------------------------------
### Accept-Language Header Example
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/starter-templates/custom-feeds.mdx
Example of the Accept-Language HTTP header format for specifying client language preferences.
```http
Accept-Language: en,pr-BR
```
--------------------------------
### GET /xrpc/app.bsky.feed.getListFeed
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-feed-get-list-feed.api.mdx
Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.
```APIDOC
## GET /xrpc/app.bsky.feed.getListFeed
### Description
Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.
### Method
GET
### Endpoint
/xrpc/app.bsky.feed.getListFeed
### Parameters
#### Query Parameters
- **list** (string) - Required - Reference (AT-URI) to the list record.
- **limit** (integer) - Optional - Defaults to 50. Minimum 1, Maximum 100.
- **cursor** (string) - Optional -
### Response
#### Success Response (200)
- **feed** (array) -
- **cursor** (string) -
#### Response Example
{
"feed": [
{
"post": {
"uri": "at://did:plc:exampledid/app.bsky.feed.post/abc123xyz",
"cid": "bafkreihd4y567890abcdefghijklmnopqrstuvwxyz",
"author": {
"did": "did:plc:exampledid",
"handle": "example.bsky.social",
"displayName": "Example User",
"avatar": "https://example.com/avatar.jpg"
},
"record": {
"text": "This is a sample post.",
"createdAt": "2023-10-27T10:00:00.000Z"
},
"replyCount": 10,
"repostCount": 5,
"likeCount": 20
}
}
],
"cursor": "some_opaque_cursor_string"
}
```
--------------------------------
### Starter Pack View Basic
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-graph-get-actor-starter-packs.api.mdx
Retrieves basic information about starter packs, including item counts and labels.
```APIDOC
## GET /app.bsky.graph.getStarterPacks
### Description
Retrieves basic information about starter packs, including item counts and labels.
### Method
GET
### Endpoint
/app.bsky.graph.getStarterPacks
### Parameters
#### Query Parameters
- **actor** (string) - Required - The DID or handle of the actor whose starter packs to retrieve.
- **limit** (integer) - Optional - The maximum number of starter packs to return.
- **cursor** (string) - Optional - Cursor for pagination.
### Response
#### Success Response (200)
- **cursor** (string) - Optional - Cursor for pagination.
- **starterPacks** (array) - Required - A list of basic starter pack views.
- **actor** (object) - Required - The actor who owns the starter pack.
- **did** (string) - Required - The DID of the actor.
- **handle** (string) - Required - The handle of the actor.
- **displayName** (string) - Optional - The display name of the actor.
- **avatar** (string) - Optional - The avatar image URI of the actor.
- **name** (string) - Required - The name of the starter pack.
- **description** (string) - Optional - The description of the starter pack.
- **purpose** (string) - Required - The purpose of the starter pack.
- **listItemCount** (integer) - Required - The number of items in the starter pack.
- **joinedWeekCount** (integer) - Required - The number of weeks the starter pack has been active.
- **joinedAllTimeCount** (integer) - Required - The total number of times the starter pack has been joined.
- **labels** (array) - Optional - Labels applied to the starter pack.
- **src** (string) - Required - DID of the actor who created this label.
- **uri** (string) - Required - AT URI of the resource this label applies to.
- **val** (string) - Required - The value or type of this label.
- **neg** (boolean) - Optional - If true, this is a negation label.
- **cts** (string) - Required - Timestamp when this label was created.
- **exp** (string) - Optional - Timestamp at which this label expires.
- **indexedAt** (string) - Required - Timestamp when the starter pack was indexed.
#### Response Example
```json
{
"cursor": "some-cursor",
"starterPacks": [
{
"actor": {
"did": "did:plc:exampledid",
"handle": "example.bsky.social",
"displayName": "Example User",
"avatar": "https://example.com/avatar.jpg"
},
"name": "My Favorite Links",
"description": "A collection of my favorite links.",
"purpose": "curation",
"listItemCount": 10,
"joinedWeekCount": 5,
"joinedAllTimeCount": 100,
"labels": [
{
"src": "did:plc:labelerdid",
"uri": "at://did:plc:exampledid/starterpack/1",
"val": "!spam",
"cts": "2023-10-27T10:00:00Z"
}
],
"indexedAt": "2023-10-27T10:00:00Z"
}
]
}
```
### Error Handling
- **400 Bad Request**: Invalid request parameters.
- **401 Unauthorized**: Authentication credentials missing or invalid.
```
--------------------------------
### GET /xrpc/app.bsky.actor.getProfile
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-actor-get-profile.api.mdx
Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.
```APIDOC
## GET /xrpc/app.bsky.actor.getProfile
### Description
Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.
### Method
GET
### Endpoint
/xrpc/app.bsky.actor.getProfile
### Parameters
#### Query Parameters
- **actor** (string) - Required - Handle or DID of account to fetch profile of.
### Response
#### Success Response (200)
- **did** (string) - The DID of the actor.
- **handle** (string) - The handle of the actor.
- **displayName** (string) - Optional - The display name of the actor, max 640 characters.
- **description** (string) - Optional - The description of the actor, max 2560 characters.
- **pronouns** (string) - Optional - The pronouns of the actor.
- **website** (string) - Optional - The website URI of the actor.
- **avatar** (string) - Optional - The avatar URI of the actor.
- **banner** (string) - Optional - The banner URI of the actor.
- **followersCount** (integer) - Optional - The number of followers the actor has.
- **followsCount** (integer) - Optional - The number of accounts the actor follows.
- **postsCount** (integer) - Optional - The number of posts the actor has made.
- **associated** (object) - Optional - Associated data for the actor.
- **lists** (integer) - Number of lists created by the actor.
- **feedgens** (integer) - Number of feed gens created by the actor.
- **starterPacks** (integer) - Number of starter packs created by the actor.
- **labeler** (boolean) - Whether the actor is a labeler.
- **chat** (object) - Chat settings for the actor.
- **allowIncoming** (string) - Enum: ["all", "none", "following"] - Incoming chat setting.
- **activitySubscription** (object) - Activity subscription settings for the actor.
- **allowSubscriptions** (string) - Enum: ["followers", "mutuals", "none"] - Subscription setting.
- **germ** (object) - Germ settings for the actor.
- **showButtonTo** (string) - Enum: ["usersIFollow", "everyone"] - Who the "message me" button is shown to.
- **messageMeUrl** (string) - URI for the "message me" action.
- **joinedViaStarterPack** (object) - Optional - Information about the starter pack the actor joined with.
- **uri** (string) - The AT URI of the starter pack record.
- **cid** (string) - The CID of the starter pack record.
- **record** (object) - The starter pack record data.
- **creator** (object) - The creator of the starter pack.
- **did** (string) - The DID of the creator.
- **handle** (string) - The handle of the creator.
- **displayName** (string) - Optional - The display name of the creator.
- **pronouns** (string) - Optional - The pronouns of the creator.
- **avatar** (string) - Optional - The avatar URI of the creator.
- **associated** (object) - Associated data for the creator.
- **viewer** (object) - Optional - Metadata about the requesting account's relationship with the subject account.
- **muted** (boolean) - Whether the subject is muted by the viewer.
- **mutedByList** (object) - Information about the list used for muting.
- **uri** (string) - The AT URI of the mute list.
- **cid** (string) - The CID of the mute list.
- **name** (string) - The name of the mute list.
- **purpose** (string) - The purpose of the mute list.
```
--------------------------------
### app.bsky.graph.defs.starterPackViewBasic
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/chat-bsky-convo-remove-reaction.api.mdx
Basic view of a starter pack, including counts and labels.
```APIDOC
## app.bsky.graph.defs.starterPackViewBasic
### Description
Basic view of a starter pack, including counts and labels.
### Properties
- **listItemCount** (integer) - The number of list items in the starter pack.
- **joinedWeekCount** (integer) - The number of users who joined this week.
- **joinedAllTimeCount** (integer) - The total number of users who have ever joined.
- **labels** (array) - Labels associated with the starter pack.
```
--------------------------------
### app.bsky.labeler.getServices
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-labeler-get-services.api.mdx
Get information about a list of labeler services. 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 proxied via the user's PDS, using service proxy headers. 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 guide.
```APIDOC
## GET /xrpc/app.bsky.labeler.getServices
### Description
Get information about a list of labeler services.
### Method
GET
### Endpoint
/xrpc/app.bsky.labeler.getServices
### Parameters
#### Query Parameters
- **dids** (array[string]) - Required - A list of decentralized identifiers (DIDs) for the labeler services.
- **detailed** (boolean) - Optional - If true, returns detailed information about the services.
### Request Example
(No request body for GET requests)
### Response
#### Success Response (200)
- **services** (array[object]) - A list of labeler service objects.
- **id** (string) - The DID of the labeler service.
- **available** (boolean) - Whether the service is currently available.
- **fixed** (boolean) - Whether the service is a fixed service.
- **policy** (object) - The service's policy details.
- **version** (number) - The policy version.
- **labelSchemes** (array[string]) - The label schemes supported by the service.
- **allowlisted** (boolean) - Whether the service is allowlisted.
- **blockedCategories** (array[string]) - Categories that are blocked by the service.
- **censor** (array[string]) - Categories that are censored by the service.
- **hideLabels** (array[string]) - Labels that are hidden by the service.
- **noBlock** (array[string]) - Labels that are not blocked by the service.
- **noCensor** (array[string]) - Labels that are not censored by the service.
- **noHide** (array[string]) - Labels that are not hidden by the service.
- **primeLine** (array[string]) - Prime line labels.
- **redTeam** (array[string]) - Red team labels.
- **signedKey** (string) - The public key for signing service responses.
- **sid** (string) - The service ID.
- **tagMap** (object) - A map of tags to label values.
#### Response Example
```json
{
"services": [
{
"id": "did:plc:examplelabelerid",
"available": true,
"fixed": true,
"policy": {
"version": 1,
"labelSchemes": ["app.bsky.labeler"],
"allowlisted": true,
"blockedCategories": [],
"censor": [],
"hideLabels": [],
"noBlock": [],
"noCensor": [],
"noHide": [],
"primeLine": [],
"redTeam": [],
"signedKey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...\n-----END PUBLIC KEY-----",
"sid": "example.labeler.service",
"tagMap": {}
}
}
]
}
```
```
--------------------------------
### GET /xrpc/app.bsky.graph.searchStarterPacks
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-graph-search-starter-packs.api.mdx
Find starter packs matching search criteria. This endpoint does not require authentication.
```APIDOC
## GET /xrpc/app.bsky.graph.searchStarterPacks
### Description
Find starter packs matching search criteria. Does not require auth.
### Method
GET
### Endpoint
/xrpc/app.bsky.graph.searchStarterPacks
### Parameters
#### Query Parameters
- **q** (string) - Required - Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.
- **limit** (integer) - Optional - Defaults to 25. Minimum 1, Maximum 100.
- **cursor** (string) - Optional - Used for pagination.
### Response
#### Success Response (200)
- **cursor** (string) - Used for pagination.
- **starterPacks** (array) - An array of starter pack objects.
- **uri** (string) - AT URI of the starter pack.
- **cid** (string) - CID of the starter pack.
- **record** (object) - The starter pack record.
- **creator** (object) - Information about the creator of the starter pack.
- **did** (string) - Decentralized Identifier of the creator.
- **handle** (string) - Handle of the creator.
- **displayName** (string) - Optional. Display name of the creator (max 640 chars).
- **pronouns** (string) - Optional. Pronouns of the creator.
- **avatar** (string) - Optional. Avatar URL of the creator.
- **associated** (object) - Optional. Associated services for the creator.
- **lists** (integer) - Number of lists associated with the creator.
- **feedgens** (integer) - Number of feedgens associated with the creator.
- **starterPacks** (integer) - Number of starter packs associated with the creator.
- **labeler** (boolean) - Whether the creator is a labeler.
- **chat** (object) - Chat settings for the creator.
- **allowIncoming** (string) - Enum: "all", "none", "following".
- **activitySubscription** (object) - Activity subscription settings for the creator.
- **allowSubscriptions** (string) - Enum: "followers", "mutuals", "none".
- **germ** (object) - Germ settings for the creator.
- **messageMeUrl** (string) - URL for messaging the creator.
- **showButtonTo** (string) - Enum: "usersIFollow", "everyone".
- **viewer** (object) - Metadata about the requesting account's relationship with the creator. Only has meaningful content for authed requests.
- **muted** (boolean) - Whether the viewer has muted the creator.
- **mutedByList** (object) - Information about the list by which the viewer muted the creator.
- **uri** (string) - AT URI of the mute list.
- **cid** (string) - CID of the mute list.
- **name** (string) - Name of the mute list.
- **purpose** (string) - Purpose of the mute list.
- **avatar** (string) - Optional. Avatar URL of the mute list.
- **listItemCount** (integer) - Number of items in the mute list.
- **labels** (array) - Labels applied to the mute list.
- **indexedAt** (string) - ISO 8601 timestamp of when the starter pack was indexed.
```
--------------------------------
### app.bsky.graph.getStarterPacksWithMembership
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-graph-get-starter-packs-with-membership.api.mdx
Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.
```APIDOC
## GET /xrpc/app.bsky.graph.getStarterPacksWithMembership
### Description
Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.
### Method
GET
### Endpoint
/xrpc/app.bsky.graph.getStarterPacksWithMembership
### Parameters
#### Query Parameters
- **actor** (string) - Required - The account (actor) to check for membership.
- **limit** (integer) - Optional - Defaults to 50. Maximum value is 100.
- **cursor** (string) - Optional -
### Response
#### Success Response (200)
- **starterPacks** (array) - Description of starter packs.
- **memberships** (object) - Membership information.
- **hasNextPage** (boolean) - Indicates if there is a next page of results.
#### Response Example
{
"starterPacks": [
{
"id": "string",
"name": "string",
"description": "string",
"purpose": "starterpack",
"creator": {
"type": "io.atproto.repo.ref",
"did": "string",
"name": "string"
},
"createdAt": "string",
"updatedAt": "string",
"members": [
{
"did": "string",
"handle": "string",
"displayName": "string",
"avatar": "string",
"viewer": {
"member": "boolean"
}
}
]
}
],
"memberships": {
"string": {
"member": "boolean"
}
},
"hasNextPage": true
}
```
--------------------------------
### Bluesky Like Record Example (No $type Needed)
Source: https://github.com/bluesky-social/bsky-docs/blob/main/blog/2025-02-13-typescript-sdk-release.md
Example of a Bluesky Like record where the $type property is not explicitly needed due to schema references.
```typescript
const like: AppBskyFeedLike.Record = {
$type: 'app.bsky.feed.like',
createdAt: '2021-09-01T12:34:56Z',
subject: {
// No `$type` property needed here
uri: 'at://did:plc:123/app.bsky.feed.post/456',
cid: '[...]',
},
}
```
--------------------------------
### GET /app.bsky.actor.defs/getStarterPacks
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/app-bsky-graph-get-starter-packs.api.mdx
Retrieves views for a list of starter packs. This endpoint is part of the Lexicon APIs and can be accessed directly via the public API for unauthenticated requests.
```APIDOC
## GET /app.bsky.actor.defs/getStarterPacks
### Description
Get views for a list of starter packs.
### Method
GET
### Endpoint
/app.bsky.actor.defs/getStarterPacks
### Parameters
#### Query Parameters
- **uris** (string[]) - Required - A list of URIs for the starter packs to retrieve. Maximum of 25 URIs.
### Request Example
```json
{
"uris": [
"at://did:plc:exampledid/app.bsky.actor.starterPack.123",
"at://did:plc:anotherdid/app.bsky.actor.starterPack.456"
]
}
```
### Response
#### Success Response (200)
- **starterPacks** (object[]) - A list of starter pack views.
- **uri** (string) - The AT URI of the starter pack.
- **cid** (string) - The CID of the starter pack record.
- **record** (object) - The starter pack record data.
- **creator** (object) - Information about the creator of the starter pack.
- **did** (string) - The DID of the creator.
- **handle** (string) - The handle of the creator.
- **displayName** (string) - Optional. The display name of the creator.
- **pronouns** (string) - Optional. The pronouns of the creator.
- **avatar** (string) - Optional. The avatar URI of the creator.
- **associated** (object) - Associated data for the creator.
- **viewer** (object) - Metadata about the requesting account's relationship with the creator.
- **indexedAt** (string) - The timestamp when the starter pack was indexed.
#### Response Example
```json
{
"starterPacks": [
{
"uri": "at://did:plc:exampledid/app.bsky.actor.starterPack.123",
"cid": "bafyreid...",
"record": { ... },
"creator": {
"did": "did:plc:exampledid",
"handle": "example.bsky.social",
"displayName": "Example User",
"avatar": "https://example.com/avatar.jpg",
"associated": { ... },
"viewer": { ... }
},
"indexedAt": "2023-10-27T10:00:00Z"
}
]
}
```
```
--------------------------------
### app.bsky.graph.defs.starterPackViewBasic
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/chat-bsky-convo-unmute-convo.api.mdx
Defines a basic view of a starter pack, including item counts and labels.
```APIDOC
## app.bsky.graph.defs.starterPackViewBasic
### Description
Represents a basic view of a starter pack, including item counts and labels.
### Properties
- **listItemCount** (integer) - Optional - The number of list items in the starter pack.
- **joinedWeekCount** (integer) - Optional - The number of weeks the starter pack has been joined.
- **joinedAllTimeCount** (integer) - Optional - The total number of times the starter pack has been joined.
- **labels** (array) - Optional - Labels applied to the starter pack.
- **indexedAt** (string) - Optional - Timestamp when the starter pack was indexed.
```
--------------------------------
### Blob Metadata Example
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/advanced-guides/posts.md
This is an example of the blob metadata object returned after a successful blob upload. It includes the blob's reference, MIME type, and size.
```json
{
"$type": "blob",
"ref": {
"$link": "bafkreibabalobzn6cd366ukcsjycp4yymjymgfxcv6xczmlgpemzkz3cfa"
},
"mimeType": "image/png",
"size": 760898
}
```
--------------------------------
### app.bsky.graph.defs.starterPackViewBasic
Source: https://github.com/bluesky-social/bsky-docs/blob/main/docs/api/chat-bsky-convo-get-convo-for-members.api.mdx
Defines a basic view of a starter pack, including item counts and labels.
```APIDOC
## app.bsky.graph.defs.starterPackViewBasic
### Description
Represents a basic view of a starter pack, including item counts and associated labels.
### Properties
- **listItemCount** (integer) - The number of list items in the starter pack.
- **joinedWeekCount** (integer) - The number of weeks the starter pack has been joined.
- **joinedAllTimeCount** (integer) - The total number of times the starter pack has been joined.
- **labels** (array) - An array of labels associated with the starter pack.
- **ver** (integer) - The version of the label.
- **src** (string) - The DID of the actor who created the label.
- **uri** (string) - The AT URI of the resource the label applies to.
- **cid** (string) - The CID of the specific version of the resource.
- **val** (string) - The value of the label.
- **neg** (boolean) - Whether the label is a negation.
- **cts** (string) - Timestamp when the label was created.
- **exp** (string) - Timestamp at which the label expires.
- **sig** (string) - Signature of the DAG-CBOR encoded label.
- **indexedAt** (string) - Timestamp when the starter pack was indexed.
```