AT Protocol on ATStore
Public GET endpoints under /xrpc/<nsid>. Lexicons: lexicons/fyi/atstore/.
Base URL
Replace the origin with your deployment (local dev shown when opened in the browser):
https://your-deployment.example/xrpc/
Methods
HTTP | NSID | Summary |
|---|---|---|
GET | fyi.atstore.server.describe | Capabilities, limits, and registered method NSIDs. |
GET | fyi.atstore.directory.searchListings | Search public listings with pagination (`q`, `sort`, `cursor`). |
GET | fyi.atstore.directory.getListing | Listing detail: exactly one of `uri` (listing.detail AT URI) or `externalUrl` (unique storefront URL). |
GET | fyi.atstore.reviews.listForListing | Reviews for a listing (`uri` listing.detail AT URI, pagination); mirrored Tap index. |
Listing reviews
Reviews are written with com.atproto.repo.createRecord on the author's PDS (repository). Use fyi.atstore.directory.getListing with query param uri (the listing.detail AT URI) or externalUrl (unique storefront URL); do not pass both. The JSON includes listing.uri. Use that value as subject on a new fyi.atstore.listing.review record.
The author's repo must include fyi.atstore.profile at record key self—directory ingestion does not pick up fyi.atstore.listing.review records until that profile exists.
Example record (omit text for stars-only):
{
"$type": "fyi.atstore.listing.review",
"subject": "at://…/fyi.atstore.listing.detail/…",
"rating": 4,
"createdAt": "2026-05-04T12:00:00.000Z",
"text": "Optional prose."
}Permission-set fyi.atstore.authThirdPartyReviews bundles repo:create on fyi.atstore.profile and fyi.atstore.listing.review (permissions).