### 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. ```