Data like a key value store stored in a Merkel tree with signatures at://did:plc:user/com.example.repo/record_key
Universal did:* resolver
AT Protocol Explorer
Note: Most users dont use well-known and instead use the DNS entry
Getting the users DID by DNS:
>>> dig TXT _atproto.bsky.app +short
"did=did:plc:z72i7hdynmk6r22z27h6tvur"
>>> dig TXT _atproto.jay.bsky.team +short
"did=did:plc:oky5czdrnfjpqslsw2a5iclo"
Gettting the users DID by wellknown:
Getting the user info from plc.directory:
>>> curl https://plc.directory/did:plc:z72i7hdynmk6r22z27h6tvur | jq .
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/multikey/v1",
"https://w3id.org/security/suites/secp256k1-2019/v1"
],
"id": "did:plc:z72i7hdynmk6r22z27h6tvur",
"alsoKnownAs": [
"at://bsky.app"
],
"verificationMethod": [
{
"id": "did:plc:z72i7hdynmk6r22z27h6tvur#atproto",
"type": "Multikey",
"controller": "did:plc:z72i7hdynmk6r22z27h6tvur",
"publicKeyMultibase": "zQ3shQo6TF2moaqMTrUZEM1jeuYRQXeHEx4evX9751y2qPqRA"
}
],
"service": [
{
"id": "#atproto_pds",
"type": "AtprotoPersonalDataServer",
"serviceEndpoint": "https://puffball.us-east.host.bsky.network"
}
]
}
Getting the Profile of a domain:
>>> curl "https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=did:plc:z72i7hdynmk6r22z27h6tvur" | jq .
>>> curl "https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=bsky.app" | jq .
{
"did": "did:plc:z72i7hdynmk6r22z27h6tvur",
"handle": "bsky.app",
"displayName": "Bluesky",
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka@jpeg",
"associated": {
"lists": 6,
"feedgens": 7,
"starterPacks": 3,
"labeler": false,
"chat": {
"allowIncoming": "none"
},
"activitySubscription": {
"allowSubscriptions": "followers"
}
},
"labels": [],
"createdAt": "2023-04-12T04:53:57.057Z",
"verification": {
"verifications": [],
"verifiedStatus": "none",
"trustedVerifierStatus": "valid"
},
"description": "official Bluesky account (check username👆)\n\nBugs, feature requests, feedback: [email protected]",
"indexedAt": "2025-10-27T21:05:26.152Z",
"banner": "https://cdn.bsky.app/img/banner/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreichzyovokfzmymz36p5jibbjrhsur6n7hjnzxrpbt5jaydp2szvna@jpeg",
"followersCount": 30494238,
"followsCount": 4,
"postsCount": 697,
"pinnedPost": {
"cid": "bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq",
"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
}
}
>>> curl "https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=did:plc:z72i7hdynmk6r22z27h6tvur" | jq .
Example:
Link to this headingGet the full repository (CAR file with signatures and Merkle tree)
Example: