all lexicons

This is documentation of objects and APIs specified by an atproto lexicon as defined here.

Show: All APIs Data

objectapp.bsky.actor.defs#adultContentPref
objectapp.bsky.actor.defs#bskyAppProgressGuide
objectapp.bsky.actor.defs#bskyAppStatePref
objectapp.bsky.actor.defs#contentLabelPref
objectapp.bsky.actor.defs#feedViewPref
objectapp.bsky.actor.defs#hiddenPostsPref
objectapp.bsky.actor.defs#interestsPref
objectapp.bsky.actor.defs#knownFollowers
objectapp.bsky.actor.defs#labelerPrefItem
objectapp.bsky.actor.defs#labelersPref
objectapp.bsky.actor.defs#mutedWord
stringapp.bsky.actor.defs#mutedWordTarget
objectapp.bsky.actor.defs#mutedWordsPref
objectapp.bsky.actor.defs#nux
objectapp.bsky.actor.defs#personalDetailsPref
objectapp.bsky.actor.defs#postInteractionSettingsPref
arrayapp.bsky.actor.defs#preferences
objectapp.bsky.actor.defs#profileAssociated
objectapp.bsky.actor.defs#profileAssociatedChat
objectapp.bsky.actor.defs#profileView
objectapp.bsky.actor.defs#profileViewBasic
objectapp.bsky.actor.defs#profileViewDetailed
objectapp.bsky.actor.defs#savedFeed
objectapp.bsky.actor.defs#savedFeedsPref
objectapp.bsky.actor.defs#savedFeedsPrefV2
objectapp.bsky.actor.defs#threadViewPref
objectapp.bsky.actor.defs#viewerState
queryapp.bsky.actor.getPreferences
queryapp.bsky.actor.getProfile
queryapp.bsky.actor.getProfiles
queryapp.bsky.actor.getSuggestions
recordapp.bsky.actor.profile
procedureapp.bsky.actor.putPreferences
queryapp.bsky.actor.searchActors
queryapp.bsky.actor.searchActorsTypeahead
objectapp.bsky.embed.defs#aspectRatio
objectapp.bsky.embed.external
objectapp.bsky.embed.external#external
objectapp.bsky.embed.external#view
objectapp.bsky.embed.external#viewExternal
objectapp.bsky.embed.images
objectapp.bsky.embed.images#image
objectapp.bsky.embed.images#view
objectapp.bsky.embed.images#viewImage
objectapp.bsky.embed.record
objectapp.bsky.embed.record#view
objectapp.bsky.embed.record#viewBlocked
objectapp.bsky.embed.record#viewDetached
objectapp.bsky.embed.record#viewNotFound
objectapp.bsky.embed.record#viewRecord
objectapp.bsky.embed.recordWithMedia
objectapp.bsky.embed.recordWithMedia#view
objectapp.bsky.embed.video
objectapp.bsky.embed.video#caption
objectapp.bsky.embed.video#view
objectapp.bsky.feed.defs#blockedAuthor
objectapp.bsky.feed.defs#blockedPost
tokenapp.bsky.feed.defs#clickthroughAuthor
tokenapp.bsky.feed.defs#clickthroughEmbed
tokenapp.bsky.feed.defs#clickthroughItem
tokenapp.bsky.feed.defs#clickthroughReposter
tokenapp.bsky.feed.defs#contentModeUnspecified
tokenapp.bsky.feed.defs#contentModeVideo
objectapp.bsky.feed.defs#feedViewPost
objectapp.bsky.feed.defs#generatorView
objectapp.bsky.feed.defs#generatorViewerState
objectapp.bsky.feed.defs#interaction
tokenapp.bsky.feed.defs#interactionLike
tokenapp.bsky.feed.defs#interactionQuote
tokenapp.bsky.feed.defs#interactionReply
tokenapp.bsky.feed.defs#interactionRepost
tokenapp.bsky.feed.defs#interactionSeen
tokenapp.bsky.feed.defs#interactionShare
objectapp.bsky.feed.defs#notFoundPost
objectapp.bsky.feed.defs#postView
objectapp.bsky.feed.defs#reasonPin
objectapp.bsky.feed.defs#reasonRepost
objectapp.bsky.feed.defs#replyRef
tokenapp.bsky.feed.defs#requestLess
tokenapp.bsky.feed.defs#requestMore
objectapp.bsky.feed.defs#skeletonFeedPost
objectapp.bsky.feed.defs#skeletonReasonPin
objectapp.bsky.feed.defs#skeletonReasonRepost
objectapp.bsky.feed.defs#threadContext
objectapp.bsky.feed.defs#threadViewPost
objectapp.bsky.feed.defs#threadgateView
objectapp.bsky.feed.defs#viewerState
queryapp.bsky.feed.describeFeedGenerator
objectapp.bsky.feed.describeFeedGenerator#feed
objectapp.bsky.feed.describeFeedGenerator#links
recordapp.bsky.feed.generator
queryapp.bsky.feed.getActorFeeds
queryapp.bsky.feed.getActorLikes
queryapp.bsky.feed.getAuthorFeed
queryapp.bsky.feed.getFeed
queryapp.bsky.feed.getFeedGenerator
queryapp.bsky.feed.getFeedGenerators
queryapp.bsky.feed.getFeedSkeleton
queryapp.bsky.feed.getLikes
objectapp.bsky.feed.getLikes#like
queryapp.bsky.feed.getListFeed
queryapp.bsky.feed.getPostThread
queryapp.bsky.feed.getPosts
queryapp.bsky.feed.getQuotes
queryapp.bsky.feed.getRepostedBy
queryapp.bsky.feed.getSuggestedFeeds
queryapp.bsky.feed.getTimeline
recordapp.bsky.feed.like
recordapp.bsky.feed.post
objectapp.bsky.feed.post#entity
objectapp.bsky.feed.post#replyRef
objectapp.bsky.feed.post#textSlice
recordapp.bsky.feed.postgate
objectapp.bsky.feed.postgate#disableRule
recordapp.bsky.feed.repost
queryapp.bsky.feed.searchPosts
procedureapp.bsky.feed.sendInteractions
recordapp.bsky.feed.threadgate
objectapp.bsky.feed.threadgate#followerRule
objectapp.bsky.feed.threadgate#followingRule
objectapp.bsky.feed.threadgate#listRule
objectapp.bsky.feed.threadgate#mentionRule
recordapp.bsky.graph.block
tokenapp.bsky.graph.defs#curatelist
objectapp.bsky.graph.defs#listItemView
stringapp.bsky.graph.defs#listPurpose
objectapp.bsky.graph.defs#listView
objectapp.bsky.graph.defs#listViewBasic
objectapp.bsky.graph.defs#listViewerState
tokenapp.bsky.graph.defs#modlist
objectapp.bsky.graph.defs#notFoundActor
tokenapp.bsky.graph.defs#referencelist
objectapp.bsky.graph.defs#relationship
objectapp.bsky.graph.defs#starterPackView
objectapp.bsky.graph.defs#starterPackViewBasic
recordapp.bsky.graph.follow
queryapp.bsky.graph.getActorStarterPacks
queryapp.bsky.graph.getBlocks
queryapp.bsky.graph.getFollowers
queryapp.bsky.graph.getFollows
queryapp.bsky.graph.getKnownFollowers
queryapp.bsky.graph.getList
queryapp.bsky.graph.getListBlocks
queryapp.bsky.graph.getListMutes
queryapp.bsky.graph.getLists
queryapp.bsky.graph.getMutes
queryapp.bsky.graph.getRelationships
queryapp.bsky.graph.getStarterPack
queryapp.bsky.graph.getStarterPacks
queryapp.bsky.graph.getSuggestedFollowsByActor
recordapp.bsky.graph.list
recordapp.bsky.graph.listblock
recordapp.bsky.graph.listitem
procedureapp.bsky.graph.muteActor
procedureapp.bsky.graph.muteActorList
procedureapp.bsky.graph.muteThread
queryapp.bsky.graph.searchStarterPacks
recordapp.bsky.graph.starterpack
objectapp.bsky.graph.starterpack#feedItem
procedureapp.bsky.graph.unmuteActor
procedureapp.bsky.graph.unmuteActorList
procedureapp.bsky.graph.unmuteThread
objectapp.bsky.labeler.defs#labelerPolicies
objectapp.bsky.labeler.defs#labelerView
objectapp.bsky.labeler.defs#labelerViewDetailed
objectapp.bsky.labeler.defs#labelerViewerState
queryapp.bsky.labeler.getServices
recordapp.bsky.labeler.service
queryapp.bsky.notification.getUnreadCount
queryapp.bsky.notification.listNotifications
objectapp.bsky.notification.listNotifications#notification
procedureapp.bsky.notification.putPreferences
procedureapp.bsky.notification.registerPush
procedureapp.bsky.notification.updateSeen
objectapp.bsky.richtext.facet
objectapp.bsky.richtext.facet#byteSlice
objectapp.bsky.richtext.facet#link
objectapp.bsky.richtext.facet#mention
objectapp.bsky.richtext.facet#tag
objectapp.bsky.unspecced.defs#skeletonSearchActor
objectapp.bsky.unspecced.defs#skeletonSearchPost
objectapp.bsky.unspecced.defs#skeletonSearchStarterPack
objectapp.bsky.unspecced.defs#trendingTopic
queryapp.bsky.unspecced.getConfig
queryapp.bsky.unspecced.getPopularFeedGenerators
queryapp.bsky.unspecced.getSuggestionsSkeleton
queryapp.bsky.unspecced.getTaggedSuggestions
objectapp.bsky.unspecced.getTaggedSuggestions#suggestion
queryapp.bsky.unspecced.getTrendingTopics
queryapp.bsky.unspecced.searchActorsSkeleton
queryapp.bsky.unspecced.searchPostsSkeleton
queryapp.bsky.unspecced.searchStarterPacksSkeleton
objectapp.bsky.video.defs#jobStatus
queryapp.bsky.video.getJobStatus
queryapp.bsky.video.getUploadLimits
procedureapp.bsky.video.uploadVideo
recordchat.bsky.actor.declaration
objectchat.bsky.actor.defs#profileViewBasic
procedurechat.bsky.actor.deleteAccount
querychat.bsky.actor.exportAccountData
procedurechat.bsky.convo.acceptConvo
objectchat.bsky.convo.defs#convoView
objectchat.bsky.convo.defs#deletedMessageView
objectchat.bsky.convo.defs#logAcceptConvo
objectchat.bsky.convo.defs#logBeginConvo
objectchat.bsky.convo.defs#logCreateMessage
objectchat.bsky.convo.defs#logDeleteMessage
objectchat.bsky.convo.defs#logLeaveConvo
objectchat.bsky.convo.defs#logMuteConvo
objectchat.bsky.convo.defs#logReadMessage
objectchat.bsky.convo.defs#logUnmuteConvo
objectchat.bsky.convo.defs#messageInput
objectchat.bsky.convo.defs#messageRef
objectchat.bsky.convo.defs#messageView
objectchat.bsky.convo.defs#messageViewSender
procedurechat.bsky.convo.deleteMessageForSelf
querychat.bsky.convo.getConvo
querychat.bsky.convo.getConvoAvailability
querychat.bsky.convo.getConvoForMembers
querychat.bsky.convo.getLog
querychat.bsky.convo.getMessages
procedurechat.bsky.convo.leaveConvo
querychat.bsky.convo.listConvos
procedurechat.bsky.convo.muteConvo
procedurechat.bsky.convo.sendMessage
procedurechat.bsky.convo.sendMessageBatch
objectchat.bsky.convo.sendMessageBatch#batchItem
procedurechat.bsky.convo.unmuteConvo
procedurechat.bsky.convo.updateAllRead
procedurechat.bsky.convo.updateRead
querychat.bsky.moderation.getActorMetadata
objectchat.bsky.moderation.getActorMetadata#metadata
querychat.bsky.moderation.getMessageContext
procedurechat.bsky.moderation.updateActorAccess
objectcom.atproto.admin.defs#accountView
objectcom.atproto.admin.defs#repoBlobRef
objectcom.atproto.admin.defs#repoRef
objectcom.atproto.admin.defs#statusAttr
objectcom.atproto.admin.defs#threatSignature
procedurecom.atproto.admin.deleteAccount
procedurecom.atproto.admin.disableAccountInvites
procedurecom.atproto.admin.disableInviteCodes
procedurecom.atproto.admin.enableAccountInvites
querycom.atproto.admin.getAccountInfo
querycom.atproto.admin.getAccountInfos
querycom.atproto.admin.getInviteCodes
querycom.atproto.admin.getSubjectStatus
querycom.atproto.admin.searchAccounts
procedurecom.atproto.admin.sendEmail
procedurecom.atproto.admin.updateAccountEmail
procedurecom.atproto.admin.updateAccountHandle
procedurecom.atproto.admin.updateAccountPassword
procedurecom.atproto.admin.updateSubjectStatus
objectcom.atproto.identity.defs#identityInfo
querycom.atproto.identity.getRecommendedDidCredentials
procedurecom.atproto.identity.refreshIdentity
procedurecom.atproto.identity.requestPlcOperationSignature
querycom.atproto.identity.resolveDid
querycom.atproto.identity.resolveHandle
querycom.atproto.identity.resolveIdentity
procedurecom.atproto.identity.signPlcOperation
procedurecom.atproto.identity.submitPlcOperation
procedurecom.atproto.identity.updateHandle
objectcom.atproto.label.defs#label
stringcom.atproto.label.defs#labelValue
objectcom.atproto.label.defs#labelValueDefinition
objectcom.atproto.label.defs#labelValueDefinitionStrings
objectcom.atproto.label.defs#selfLabel
objectcom.atproto.label.defs#selfLabels
querycom.atproto.label.queryLabels
subscriptioncom.atproto.label.subscribeLabels
objectcom.atproto.label.subscribeLabels#info
objectcom.atproto.label.subscribeLabels#labels
recordcom.atproto.lexicon.schema
procedurecom.atproto.moderation.createReport
tokencom.atproto.moderation.defs#reasonAppeal
tokencom.atproto.moderation.defs#reasonMisleading
tokencom.atproto.moderation.defs#reasonOther
tokencom.atproto.moderation.defs#reasonRude
tokencom.atproto.moderation.defs#reasonSexual
tokencom.atproto.moderation.defs#reasonSpam
stringcom.atproto.moderation.defs#reasonType
tokencom.atproto.moderation.defs#reasonViolation
stringcom.atproto.moderation.defs#subjectType
procedurecom.atproto.repo.applyWrites
objectcom.atproto.repo.applyWrites#create
objectcom.atproto.repo.applyWrites#createResult
objectcom.atproto.repo.applyWrites#delete
objectcom.atproto.repo.applyWrites#deleteResult
objectcom.atproto.repo.applyWrites#update
objectcom.atproto.repo.applyWrites#updateResult
procedurecom.atproto.repo.createRecord
objectcom.atproto.repo.defs#commitMeta
procedurecom.atproto.repo.deleteRecord
querycom.atproto.repo.describeRepo
querycom.atproto.repo.getRecord
procedurecom.atproto.repo.importRepo
querycom.atproto.repo.listMissingBlobs
objectcom.atproto.repo.listMissingBlobs#recordBlob
querycom.atproto.repo.listRecords
objectcom.atproto.repo.listRecords#record
procedurecom.atproto.repo.putRecord
objectcom.atproto.repo.strongRef
procedurecom.atproto.repo.uploadBlob
procedurecom.atproto.server.activateAccount
querycom.atproto.server.checkAccountStatus
procedurecom.atproto.server.confirmEmail
procedurecom.atproto.server.createAccount
procedurecom.atproto.server.createAppPassword
objectcom.atproto.server.createAppPassword#appPassword
procedurecom.atproto.server.createInviteCode
procedurecom.atproto.server.createInviteCodes
objectcom.atproto.server.createInviteCodes#accountCodes
procedurecom.atproto.server.createSession
procedurecom.atproto.server.deactivateAccount
objectcom.atproto.server.defs#inviteCode
objectcom.atproto.server.defs#inviteCodeUse
procedurecom.atproto.server.deleteAccount
procedurecom.atproto.server.deleteSession
querycom.atproto.server.describeServer
objectcom.atproto.server.describeServer#contact
objectcom.atproto.server.describeServer#links
querycom.atproto.server.getAccountInviteCodes
querycom.atproto.server.getServiceAuth
querycom.atproto.server.getSession
querycom.atproto.server.listAppPasswords
objectcom.atproto.server.listAppPasswords#appPassword
procedurecom.atproto.server.refreshSession
procedurecom.atproto.server.requestAccountDelete
procedurecom.atproto.server.requestEmailConfirmation
procedurecom.atproto.server.requestEmailUpdate
procedurecom.atproto.server.requestPasswordReset
procedurecom.atproto.server.reserveSigningKey
procedurecom.atproto.server.resetPassword
procedurecom.atproto.server.revokeAppPassword
procedurecom.atproto.server.updateEmail
querycom.atproto.sync.getBlob
querycom.atproto.sync.getBlocks
querycom.atproto.sync.getCheckout
querycom.atproto.sync.getHead
querycom.atproto.sync.getLatestCommit
querycom.atproto.sync.getRecord
querycom.atproto.sync.getRepo
querycom.atproto.sync.getRepoStatus
querycom.atproto.sync.listBlobs
querycom.atproto.sync.listRepos
objectcom.atproto.sync.listRepos#repo
querycom.atproto.sync.listReposByCollection
objectcom.atproto.sync.listReposByCollection#repo
procedurecom.atproto.sync.notifyOfUpdate
procedurecom.atproto.sync.requestCrawl
subscriptioncom.atproto.sync.subscribeRepos
objectcom.atproto.sync.subscribeRepos#account
objectcom.atproto.sync.subscribeRepos#commit
objectcom.atproto.sync.subscribeRepos#handle
objectcom.atproto.sync.subscribeRepos#identity
objectcom.atproto.sync.subscribeRepos#info
objectcom.atproto.sync.subscribeRepos#migrate
objectcom.atproto.sync.subscribeRepos#repoOp
objectcom.atproto.sync.subscribeRepos#sync
objectcom.atproto.sync.subscribeRepos#tombstone
procedurecom.atproto.temp.addReservedHandle
querycom.atproto.temp.checkSignupQueue
querycom.atproto.temp.fetchLabels
procedurecom.atproto.temp.requestPhoneVerification
proceduretools.ozone.communication.createTemplate
objecttools.ozone.communication.defs#templateView
proceduretools.ozone.communication.deleteTemplate
querytools.ozone.communication.listTemplates
proceduretools.ozone.communication.updateTemplate
objecttools.ozone.moderation.defs#accountEvent
objecttools.ozone.moderation.defs#accountHosting
objecttools.ozone.moderation.defs#accountStats
objecttools.ozone.moderation.defs#blobView
objecttools.ozone.moderation.defs#identityEvent
objecttools.ozone.moderation.defs#imageDetails
objecttools.ozone.moderation.defs#modEventAcknowledge
objecttools.ozone.moderation.defs#modEventComment
objecttools.ozone.moderation.defs#modEventDivert
objecttools.ozone.moderation.defs#modEventEmail
objecttools.ozone.moderation.defs#modEventEscalate
objecttools.ozone.moderation.defs#modEventLabel
objecttools.ozone.moderation.defs#modEventMute
objecttools.ozone.moderation.defs#modEventMuteReporter
objecttools.ozone.moderation.defs#modEventPriorityScore
objecttools.ozone.moderation.defs#modEventReport
objecttools.ozone.moderation.defs#modEventResolveAppeal
objecttools.ozone.moderation.defs#modEventReverseTakedown
objecttools.ozone.moderation.defs#modEventTag
objecttools.ozone.moderation.defs#modEventTakedown
objecttools.ozone.moderation.defs#modEventUnmute
objecttools.ozone.moderation.defs#modEventUnmuteReporter
objecttools.ozone.moderation.defs#modEventView
objecttools.ozone.moderation.defs#modEventViewDetail
objecttools.ozone.moderation.defs#moderation
objecttools.ozone.moderation.defs#moderationDetail
objecttools.ozone.moderation.defs#recordEvent
objecttools.ozone.moderation.defs#recordHosting
objecttools.ozone.moderation.defs#recordView
objecttools.ozone.moderation.defs#recordViewDetail
objecttools.ozone.moderation.defs#recordViewNotFound
objecttools.ozone.moderation.defs#recordsStats
objecttools.ozone.moderation.defs#repoView
objecttools.ozone.moderation.defs#repoViewDetail
objecttools.ozone.moderation.defs#repoViewNotFound
objecttools.ozone.moderation.defs#reporterStats
tokentools.ozone.moderation.defs#reviewClosed
tokentools.ozone.moderation.defs#reviewEscalated
tokentools.ozone.moderation.defs#reviewNone
tokentools.ozone.moderation.defs#reviewOpen
stringtools.ozone.moderation.defs#subjectReviewState
objecttools.ozone.moderation.defs#subjectStatusView
objecttools.ozone.moderation.defs#videoDetails
proceduretools.ozone.moderation.emitEvent
querytools.ozone.moderation.getEvent
querytools.ozone.moderation.getRecord
querytools.ozone.moderation.getRecords
querytools.ozone.moderation.getRepo
querytools.ozone.moderation.getReporterStats
querytools.ozone.moderation.getRepos
querytools.ozone.moderation.queryEvents
querytools.ozone.moderation.queryStatuses
querytools.ozone.moderation.searchRepos
querytools.ozone.server.getConfig
objecttools.ozone.server.getConfig#serviceConfig
objecttools.ozone.server.getConfig#viewerConfig
proceduretools.ozone.set.addValues
objecttools.ozone.set.defs#set
objecttools.ozone.set.defs#setView
proceduretools.ozone.set.deleteSet
proceduretools.ozone.set.deleteValues
querytools.ozone.set.getValues
querytools.ozone.set.querySets
proceduretools.ozone.set.upsertSet
objecttools.ozone.setting.defs#option
querytools.ozone.setting.listOptions
proceduretools.ozone.setting.removeOptions
proceduretools.ozone.setting.upsertOption
objecttools.ozone.signature.defs#sigDetail
querytools.ozone.signature.findCorrelation
querytools.ozone.signature.findRelatedAccounts
objecttools.ozone.signature.findRelatedAccounts#relatedAccount
querytools.ozone.signature.searchAccounts
proceduretools.ozone.team.addMember
objecttools.ozone.team.defs#member
tokentools.ozone.team.defs#roleAdmin
tokentools.ozone.team.defs#roleModerator
tokentools.ozone.team.defs#roleTriage
proceduretools.ozone.team.deleteMember
querytools.ozone.team.listMembers
proceduretools.ozone.team.updateMember
object

app.bsky.actor.defs#adultContentPref

enabledrequired
boolean
object

app.bsky.actor.defs#bskyAppProgressGuide

If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.

guiderequired
string
maxLength=100
object

app.bsky.actor.defs#bskyAppStatePref

A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.

activeProgressGuide
queuedNudges
array

An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.

items=
string
maxLength=100
maxLength=1000
nuxs
array

Storage for NUXs the user has encountered.

maxLength=100
object

app.bsky.actor.defs#contentLabelPref

labelerDid
string

Which labeler does this preference apply to? If undefined, applies globally.

format=did
labelrequired
string
visibilityrequired
string
knownValues=['ignore', 'show', 'warn', 'hide']
object

app.bsky.actor.defs#feedViewPref

feedrequired
string

The URI of the feed, or an identifier which describes the feed.

hideReplies
boolean

Hide replies in the feed.

hideRepliesByUnfollowed
boolean

Hide replies in the feed if they are not by followed users.

default=True
hideRepliesByLikeCount
integer
integer

Hide replies in the feed if they do not have this number of likes.

hideReposts
boolean

Hide reposts in the feed.

hideQuotePosts
boolean

Hide quote posts in the feed.

object

app.bsky.actor.defs#hiddenPostsPref

itemsrequired
array

A list of URIs of posts the account owner has hidden.

items=
string
format=at-uri
object

app.bsky.actor.defs#interestsPref

tagsrequired
array

A list of tags which describe the account owner's interests gathered during onboarding.

items=
string
maxLength=640 maxGraphemes=64
maxLength=100
object

app.bsky.actor.defs#knownFollowers

The subject's followers whom you also follow

countrequired
integer
integer
followersrequired
array
maxLength=5
object

app.bsky.actor.defs#labelerPrefItem

didrequired
string
format=did
object

app.bsky.actor.defs#labelersPref

labelersrequired
array
object

app.bsky.actor.defs#mutedWord

A word that the account owner has muted.

id
string
valuerequired
string

The muted word itself.

maxLength=10000 maxGraphemes=1000
targetsrequired
array

The intended targets of the muted word.

actorTarget
string

Groups of users to apply the muted word to. If undefined, applies to all users.

knownValues=['all', 'exclude-following'] default=all
expiresAt
string

The date and time at which the muted word will expire and no longer be applied.

format=datetime
string

app.bsky.actor.defs#mutedWordTarget

maxLength=640 maxGraphemes=64 knownValues=['content', 'tag']
object

app.bsky.actor.defs#mutedWordsPref

itemsrequired
array

A list of words the account owner has muted.

object

app.bsky.actor.defs#nux

A new user experiences (NUX) storage object

idrequired
string
maxLength=100
completedrequired
boolean
data
string

Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.

maxLength=3000 maxGraphemes=300
expiresAt
string

The date and time at which the NUX will expire and should be considered completed.

format=datetime
object

app.bsky.actor.defs#personalDetailsPref

birthDate
string

The birth date of account owner.

format=datetime
object

app.bsky.actor.defs#postInteractionSettingsPref

Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.

threadgateAllowRules
array

Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.

maxLength=5
postgateEmbeddingRules
array

Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.

maxLength=5
array

app.bsky.actor.defs#preferences

object

app.bsky.actor.defs#profileAssociated

lists
integer
integer
feedgens
integer
integer
starterPacks
integer
integer
labeler
boolean
object

app.bsky.actor.defs#profileAssociatedChat

allowIncomingrequired
string
knownValues=['all', 'none', 'following']
object

app.bsky.actor.defs#profileView

didrequired
string
format=did
handlerequired
string
format=handle
displayName
string
maxLength=640 maxGraphemes=64
description
string
maxLength=2560 maxGraphemes=256
avatar
string
format=uri
associated
indexedAt
string
format=datetime
createdAt
string
format=datetime
viewer
labels
object

app.bsky.actor.defs#profileViewBasic

didrequired
string
format=did
handlerequired
string
format=handle
displayName
string
maxLength=640 maxGraphemes=64
avatar
string
format=uri
associated
viewer
labels
createdAt
string
format=datetime
object

app.bsky.actor.defs#profileViewDetailed

didrequired
string
format=did
handlerequired
string
format=handle
displayName
string
maxLength=640 maxGraphemes=64
description
string
maxLength=2560 maxGraphemes=256
avatar
string
format=uri
banner
string
format=uri
followersCount
integer
integer
followsCount
integer
integer
postsCount
integer
integer
associated
indexedAt
string
format=datetime
createdAt
string
format=datetime
viewer
labels
object

app.bsky.actor.defs#savedFeed

idrequired
string
typerequired
string
knownValues=['feed', 'list', 'timeline']
valuerequired
string
pinnedrequired
boolean
object

app.bsky.actor.defs#savedFeedsPref

pinnedrequired
array
items=
string
format=at-uri
savedrequired
array
items=
string
format=at-uri
timelineIndex
integer
integer
object

app.bsky.actor.defs#savedFeedsPrefV2

itemsrequired
object

app.bsky.actor.defs#threadViewPref

sort
string

Sorting mode for threads.

knownValues=['oldest', 'newest', 'most-likes', 'random', 'hotness']
prioritizeFollowedUsers
boolean

Show followed users at the top of all replies.

object

app.bsky.actor.defs#viewerState

Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.

muted
boolean
blockedBy
boolean
blocking
string
format=at-uri
following
string
format=at-uri
followedBy
string
format=at-uri
knownFollowers
query

app.bsky.actor.getPreferences

Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth.

parameters:
output:
encoding: application/json
preferencesrequired
query

app.bsky.actor.getProfile

Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.

parameters:
actorrequired
string

Handle or DID of account to fetch profile of.

format=at-identifier
output:
encoding: application/json
query

app.bsky.actor.getProfiles

Get detailed profile views of multiple actors.

parameters:
actorsrequired
array
items=
string
format=at-identifier
maxLength=25
output:
encoding: application/json
profilesrequired
query

app.bsky.actor.getSuggestions

Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
actorsrequired
recId
integer
integer

Snowflake for this recommendation, use when submitting recommendation events.

record

app.bsky.actor.profile

A declaration of a Bluesky account profile.

Key:

object
displayName
string
maxLength=640 maxGraphemes=64
description
string

Free-form profile description text.

maxLength=2560 maxGraphemes=256
avatar
blob

Small image to be displayed next to posts from account. AKA, 'profile picture'

accept=[] maxSize=1000000
banner
blob

Larger horizontal image to display behind profile view.

accept=[] maxSize=1000000
labels
union

Self-label values, specific to the Bluesky application, on the overall account.

joinedViaStarterPack
createdAt
string
format=datetime
procedure

app.bsky.actor.putPreferences

Set the private preferences attached to the account.

input:
encoding: application/json
preferencesrequired
query

app.bsky.actor.searchActors

Find actors (profiles) matching search criteria. Does not require auth.

parameters:
term
string

DEPRECATED: use 'q' instead.

q
string

Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.

limit
integer
integer
minimum=1 maximum=100 default=25
cursor
string
output:
encoding: application/json
cursor
string
actorsrequired
query

app.bsky.actor.searchActorsTypeahead

Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.

parameters:
term
string

DEPRECATED: use 'q' instead.

q
string

Search query prefix; not a full query string.

limit
integer
integer
minimum=1 maximum=100 default=10
output:
encoding: application/json
actorsrequired
object

app.bsky.embed.defs#aspectRatio

width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.

widthrequired
integer
integer
minimum=1
heightrequired
integer
integer
minimum=1
object

app.bsky.embed.external

A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).

externalrequired
object

app.bsky.embed.external#external

urirequired
string
format=uri
titlerequired
string
descriptionrequired
string
thumb
blob
accept=[] maxSize=1000000
object

app.bsky.embed.external#view

externalrequired
object

app.bsky.embed.external#viewExternal

urirequired
string
format=uri
titlerequired
string
descriptionrequired
string
thumb
string
format=uri
object

app.bsky.embed.images

imagesrequired
array
items=
maxLength=4
object

app.bsky.embed.images#image

imagerequired
blob
accept=[] maxSize=1000000
altrequired
string

Alt text description of the image, for accessibility.

object

app.bsky.embed.images#view

imagesrequired
array
items=
maxLength=4
object

app.bsky.embed.images#viewImage

thumbrequired
string

Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.

format=uri
fullsizerequired
string

Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.

format=uri
altrequired
string

Alt text description of the image, for accessibility.

object

app.bsky.embed.record

recordrequired
object

app.bsky.embed.record#view

object

app.bsky.embed.record#viewBlocked

urirequired
string
format=at-uri
blockedrequired
boolean
const=True
object

app.bsky.embed.record#viewDetached

urirequired
string
format=at-uri
detachedrequired
boolean
const=True
object

app.bsky.embed.record#viewNotFound

urirequired
string
format=at-uri
notFoundrequired
boolean
const=True
object

app.bsky.embed.record#viewRecord

urirequired
string
format=at-uri
cidrequired
string
format=cid
valuerequired
unknown

The record data itself.

labels
replyCount
integer
integer
repostCount
integer
integer
likeCount
integer
integer
quoteCount
integer
integer
indexedAtrequired
string
format=datetime
object

app.bsky.embed.recordWithMedia

object

app.bsky.embed.recordWithMedia#view

object

app.bsky.embed.video

videorequired
blob
accept=[] maxSize=50000000
captions
array
items=
maxLength=20
alt
string

Alt text description of the video, for accessibility.

maxLength=10000 maxGraphemes=1000
object

app.bsky.embed.video#caption

langrequired
string
format=language
filerequired
blob
accept=[] maxSize=20000
object

app.bsky.embed.video#view

cidrequired
string
format=cid
playlistrequired
string
format=uri
thumbnail
string
format=uri
alt
string
maxLength=10000 maxGraphemes=1000
object

app.bsky.feed.defs#blockedAuthor

didrequired
string
format=did
object

app.bsky.feed.defs#blockedPost

urirequired
string
format=at-uri
blockedrequired
boolean
const=True
authorrequired
token

app.bsky.feed.defs#clickthroughAuthor

User clicked through to the author of the feed item

token

app.bsky.feed.defs#clickthroughEmbed

User clicked through to the embedded content of the feed item

token

app.bsky.feed.defs#clickthroughItem

User clicked through to the feed item

token

app.bsky.feed.defs#clickthroughReposter

User clicked through to the reposter of the feed item

token

app.bsky.feed.defs#contentModeUnspecified

Declares the feed generator returns any types of posts.

token

app.bsky.feed.defs#contentModeVideo

Declares the feed generator returns posts containing app.bsky.embed.video embeds.

object

app.bsky.feed.defs#feedViewPost

postrequired
reply
feedContext
string

Context provided by feed generator that may be passed back alongside interactions.

maxLength=2000
object

app.bsky.feed.defs#generatorView

urirequired
string
format=at-uri
cidrequired
string
format=cid
didrequired
string
format=did
displayNamerequired
string
description
string
maxLength=3000 maxGraphemes=300
descriptionFacets
array
avatar
string
format=uri
likeCount
integer
integer
acceptsInteractions
boolean
labels
contentMode
string
knownValues=['app.bsky.feed.defs#contentModeUnspecified', 'app.bsky.feed.defs#contentModeVideo']
indexedAtrequired
string
format=datetime
object

app.bsky.feed.defs#generatorViewerState

like
string
format=at-uri
object

app.bsky.feed.defs#interaction

item
string
format=at-uri
event
string
knownValues=['app.bsky.feed.defs#requestLess', 'app.bsky.feed.defs#requestMore', 'app.bsky.feed.defs#clickthroughItem', 'app.bsky.feed.defs#clickthroughAuthor', 'app.bsky.feed.defs#clickthroughReposter', 'app.bsky.feed.defs#clickthroughEmbed', 'app.bsky.feed.defs#interactionSeen', 'app.bsky.feed.defs#interactionLike', 'app.bsky.feed.defs#interactionRepost', 'app.bsky.feed.defs#interactionReply', 'app.bsky.feed.defs#interactionQuote', 'app.bsky.feed.defs#interactionShare']
feedContext
string

Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.

maxLength=2000
token

app.bsky.feed.defs#interactionLike

User liked the feed item

token

app.bsky.feed.defs#interactionQuote

User quoted the feed item

token

app.bsky.feed.defs#interactionReply

User replied to the feed item

token

app.bsky.feed.defs#interactionRepost

User reposted the feed item

token

app.bsky.feed.defs#interactionSeen

Feed item was seen by user

token

app.bsky.feed.defs#interactionShare

User shared the feed item

object

app.bsky.feed.defs#notFoundPost

urirequired
string
format=at-uri
notFoundrequired
boolean
const=True
object

app.bsky.feed.defs#postView

urirequired
string
format=at-uri
cidrequired
string
format=cid
recordrequired
unknown
replyCount
integer
integer
repostCount
integer
integer
likeCount
integer
integer
quoteCount
integer
integer
indexedAtrequired
string
format=datetime
viewer
labels
threadgate
object

app.bsky.feed.defs#reasonPin

()
object

app.bsky.feed.defs#reasonRepost

indexedAtrequired
string
format=datetime
object

app.bsky.feed.defs#replyRef

grandparentAuthor
ref

When parent is a reply to another post, this is the author of that post.

ref=app.bsky.actor.defs#profileViewBasic
token

app.bsky.feed.defs#requestLess

Request that less content like the given feed item be shown in the feed

token

app.bsky.feed.defs#requestMore

Request that more content like the given feed item be shown in the feed

object

app.bsky.feed.defs#skeletonFeedPost

postrequired
string
format=at-uri
feedContext
string

Context that will be passed through to client and may be passed to feed generator back alongside interactions.

maxLength=2000
object

app.bsky.feed.defs#skeletonReasonPin

()
object

app.bsky.feed.defs#skeletonReasonRepost

repostrequired
string
format=at-uri
object

app.bsky.feed.defs#threadContext

Metadata about this post within the context of the thread it is in.

rootAuthorLike
string
format=at-uri
object

app.bsky.feed.defs#threadViewPost

postrequired
replies
threadContext
object

app.bsky.feed.defs#threadgateView

uri
string
format=at-uri
cid
string
format=cid
record
unknown
object

app.bsky.feed.defs#viewerState

Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.

repost
string
format=at-uri
like
string
format=at-uri
threadMuted
boolean
replyDisabled
boolean
embeddingDisabled
boolean
pinned
boolean
query

app.bsky.feed.describeFeedGenerator

Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).

output:
encoding: application/json
didrequired
string
format=did
feedsrequired
array
items=
ref
ref=#feed
links
object

app.bsky.feed.describeFeedGenerator#feed

urirequired
string
format=at-uri
object

app.bsky.feed.describeFeedGenerator#links

privacyPolicy
string
termsOfService
string
record

app.bsky.feed.generator

Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.

Key:

object
didrequired
string
format=did
displayNamerequired
string
maxLength=240 maxGraphemes=24
description
string
maxLength=3000 maxGraphemes=300
descriptionFacets
array
avatar
blob
accept=[] maxSize=1000000
acceptsInteractions
boolean

Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions

labels
union

Self-label values

contentMode
string
knownValues=['app.bsky.feed.defs#contentModeUnspecified', 'app.bsky.feed.defs#contentModeVideo']
createdAtrequired
string
format=datetime
query

app.bsky.feed.getActorFeeds

Get a list of feeds (feed generator records) created by the actor (in the actor's repo).

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedsrequired
query

app.bsky.feed.getActorLikes

Get a list of posts liked by an actor. Requires auth, actor must be the requesting account.

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedrequired
errors:
  • BlockedActor
  • BlockedByActor
query

app.bsky.feed.getAuthorFeed

Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
filter
string

Combinations of post/repost types to include in response.

knownValues=['posts_with_replies', 'posts_no_replies', 'posts_with_media', 'posts_and_author_threads', 'posts_with_video'] default=posts_with_replies
includePins
boolean
output:
encoding: application/json
cursor
string
feedrequired
errors:
  • BlockedActor
  • BlockedByActor
query

app.bsky.feed.getFeed

Get a hydrated feed from an actor's selected feed generator. Implemented by App View.

parameters:
feedrequired
string
format=at-uri
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedrequired
errors:
  • UnknownFeed
query

app.bsky.feed.getFeedGenerator

Get information about a feed generator. Implemented by AppView.

parameters:
feedrequired
string

AT-URI of the feed generator record.

format=at-uri
output:
encoding: application/json
isOnlinerequired
boolean

Indicates whether the feed generator service has been online recently, or else seems to be inactive.

isValidrequired
boolean

Indicates whether the feed generator service is compatible with the record declaration.

query

app.bsky.feed.getFeedGenerators

Get information about a list of feed generators.

parameters:
feedsrequired
array
items=
string
format=at-uri
output:
encoding: application/json
feedsrequired
query

app.bsky.feed.getFeedSkeleton

Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.

parameters:
feedrequired
string

Reference to feed generator record describing the specific feed being requested.

format=at-uri
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedrequired
errors:
  • UnknownFeed
query

app.bsky.feed.getLikes

Get like records which reference a subject (by AT-URI and CID).

parameters:
urirequired
string

AT-URI of the subject (eg, a post record).

format=at-uri
cid
string

CID of the subject record (aka, specific version of record), to filter likes.

format=cid
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
urirequired
string
format=at-uri
cid
string
format=cid
cursor
string
likesrequired
array
items=
ref
ref=#like
object

app.bsky.feed.getLikes#like

indexedAtrequired
string
format=datetime
createdAtrequired
string
format=datetime
query

app.bsky.feed.getListFeed

Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.

parameters:
listrequired
string

Reference (AT-URI) to the list record.

format=at-uri
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedrequired
errors:
  • UnknownList
query

app.bsky.feed.getPostThread

Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.

parameters:
urirequired
string

Reference (AT-URI) to post record.

format=at-uri
depth
integer
integer

How many levels of reply depth should be included in response.

maximum=1000 default=6
parentHeight
integer
integer

How many levels of parent (and grandparent, etc) post to include.

maximum=1000 default=80
errors:
  • NotFound
query

app.bsky.feed.getPosts

Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.

parameters:
urisrequired
array

List of post AT-URIs to return hydrated views for.

items=
string
format=at-uri
maxLength=25
output:
encoding: application/json
postsrequired
query

app.bsky.feed.getQuotes

Get a list of quotes for a given post.

parameters:
urirequired
string

Reference (AT-URI) of post record

format=at-uri
cid
string

If supplied, filters to quotes of specific version (by CID) of the post record.

format=cid
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
urirequired
string
format=at-uri
cid
string
format=cid
cursor
string
postsrequired
query

app.bsky.feed.getRepostedBy

Get a list of reposts for a given post.

parameters:
urirequired
string

Reference (AT-URI) of post record

format=at-uri
cid
string

If supplied, filters to reposts of specific version (by CID) of the post record.

format=cid
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
urirequired
string
format=at-uri
cid
string
format=cid
cursor
string
repostedByrequired
query

app.bsky.feed.getSuggestedFeeds

Get a list of suggested feeds (feed generators) for the requesting account.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedsrequired
query

app.bsky.feed.getTimeline

Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.

parameters:
algorithm
string

Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism.

limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
feedrequired
record

app.bsky.feed.like

Record declaring a 'like' of a piece of subject content.

Key:

object
subjectrequired
createdAtrequired
string
format=datetime
record

app.bsky.feed.post

Record containing a Bluesky post.

Key:

object
textrequired
string

The primary post content. May be an empty string, if there are embeds.

maxLength=3000 maxGraphemes=300
entities
array

DEPRECATED: replaced by app.bsky.richtext.facet.

items=
facets
array

Annotations of text (mentions, URLs, hashtags, etc)

reply
langs
array

Indicates human language of post primary text content.

items=
string
format=language
maxLength=3
labels
union

Self-label values for this post. Effectively content warnings.

tags
array

Additional hashtags, in addition to any included in post text and facets.

items=
string
maxLength=640 maxGraphemes=64
maxLength=8
createdAtrequired
string

Client-declared timestamp when this post was originally created.

format=datetime
object

app.bsky.feed.post#entity

Deprecated: use facets instead.

indexrequired
typerequired
string

Expected values are 'mention' and 'link'.

valuerequired
string
object

app.bsky.feed.post#replyRef

object

app.bsky.feed.post#textSlice

Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.

startrequired
integer
integer
endrequired
integer
integer
record

app.bsky.feed.postgate

Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.

Key:

object
createdAtrequired
string
format=datetime
postrequired
string

Reference (AT-URI) to the post record.

format=at-uri
detachedEmbeddingUris
array

List of AT-URIs embedding this post that the author has detached from.

items=
string
format=at-uri
maxLength=50
embeddingRules
array

List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed.

items=
union
maxLength=5
object

app.bsky.feed.postgate#disableRule

Disables embedding of this post.

()
record

app.bsky.feed.repost

Record representing a 'repost' of an existing Bluesky post.

Key:

object
subjectrequired
createdAtrequired
string
format=datetime
query

app.bsky.feed.searchPosts

Find posts matching search criteria, returning views of those posts.

parameters:
qrequired
string

Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.

sort
string

Specifies the ranking order of results.

knownValues=['top', 'latest'] default=latest
since
string

Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).

until
string

Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).

mentions
string

Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.

format=at-identifier
author
string

Filter to posts by the given account. Handles are resolved to DID before query-time.

format=at-identifier
lang
string

Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.

format=language
domain
string

Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.

url
string

Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.

format=uri
tag
array

Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.

items=
string
maxLength=640 maxGraphemes=64
limit
integer
integer
minimum=1 maximum=100 default=25
cursor
string

Optional pagination mechanism; may not necessarily allow scrolling through entire result set.

output:
encoding: application/json
cursor
string
hitsTotal
integer
integer

Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.

postsrequired
errors:
  • BadQueryString
procedure

app.bsky.feed.sendInteractions

Send information about interactions with feed items back to the feed generator that served them.

input:
encoding: application/json
interactionsrequired
output:
encoding: application/json
()
record

app.bsky.feed.threadgate

Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository.

Key:

object
postrequired
string

Reference (AT-URI) to the post record.

format=at-uri
allow
array

List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.

maxLength=5
createdAtrequired
string
format=datetime
hiddenReplies
array

List of hidden reply URIs.

items=
string
format=at-uri
maxLength=50
object

app.bsky.feed.threadgate#followerRule

Allow replies from actors who follow you.

()
object

app.bsky.feed.threadgate#followingRule

Allow replies from actors you follow.

()
object

app.bsky.feed.threadgate#listRule

Allow replies from actors on a list.

listrequired
string
format=at-uri
object

app.bsky.feed.threadgate#mentionRule

Allow replies from actors mentioned in your post.

()
record

app.bsky.graph.block

Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.

Key:

object
subjectrequired
string

DID of the account to be blocked.

format=did
createdAtrequired
string
format=datetime
token

app.bsky.graph.defs#curatelist

A list of actors used for curation purposes such as list feeds or interaction gating.

object

app.bsky.graph.defs#listItemView

urirequired
string
format=at-uri
string

app.bsky.graph.defs#listPurpose

knownValues=['app.bsky.graph.defs#modlist', 'app.bsky.graph.defs#curatelist', 'app.bsky.graph.defs#referencelist']
object

app.bsky.graph.defs#listView

urirequired
string
format=at-uri
cidrequired
string
format=cid
namerequired
string
minLength=1 maxLength=64
purposerequired
description
string
maxLength=3000 maxGraphemes=300
descriptionFacets
array
avatar
string
format=uri
listItemCount
integer
integer
labels
indexedAtrequired
string
format=datetime
object

app.bsky.graph.defs#listViewBasic

urirequired
string
format=at-uri
cidrequired
string
format=cid
namerequired
string
minLength=1 maxLength=64
purposerequired
avatar
string
format=uri
listItemCount
integer
integer
labels
indexedAt
string
format=datetime
object

app.bsky.graph.defs#listViewerState

muted
boolean
blocked
string
format=at-uri
token

app.bsky.graph.defs#modlist

A list of actors to apply an aggregate moderation action (mute/block) on.

object

app.bsky.graph.defs#notFoundActor

indicates that a handle or DID could not be resolved

actorrequired
string
format=at-identifier
notFoundrequired
boolean
const=True
token

app.bsky.graph.defs#referencelist

A list of actors used for only for reference purposes such as within a starter pack.

object

app.bsky.graph.defs#relationship

lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)

didrequired
string
format=did
following
string

if the actor follows this DID, this is the AT-URI of the follow record

format=at-uri
followedBy
string

if the actor is followed by this DID, contains the AT-URI of the follow record

format=at-uri
object

app.bsky.graph.defs#starterPackView

urirequired
string
format=at-uri
cidrequired
string
format=cid
recordrequired
unknown
listItemsSample
array
items=
maxLength=12
feeds
array
maxLength=3
joinedWeekCount
integer
integer
joinedAllTimeCount
integer
integer
labels
indexedAtrequired
string
format=datetime
object

app.bsky.graph.defs#starterPackViewBasic

urirequired
string
format=at-uri
cidrequired
string
format=cid
recordrequired
unknown
listItemCount
integer
integer
joinedWeekCount
integer
integer
joinedAllTimeCount
integer
integer
labels
indexedAtrequired
string
format=datetime
record

app.bsky.graph.follow

Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.

Key:

object
subjectrequired
string
format=did
createdAtrequired
string
format=datetime
query

app.bsky.graph.getActorStarterPacks

Get a list of starter packs created by the actor.

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
starterPacksrequired
query

app.bsky.graph.getBlocks

Enumerates which accounts the requesting account is currently blocking. Requires auth.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
blocksrequired
query

app.bsky.graph.getFollowers

Enumerates accounts which follow a specified account (actor).

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
followersrequired
query

app.bsky.graph.getFollows

Enumerates accounts which a specified account (actor) follows.

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
followsrequired
query

app.bsky.graph.getKnownFollowers

Enumerates accounts which follow a specified account (actor) and are followed by the viewer.

parameters:
actorrequired
string
format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
followersrequired
query

app.bsky.graph.getList

Gets a 'view' (with additional context) of a specified list.

parameters:
listrequired
string

Reference (AT-URI) of the list record to hydrate.

format=at-uri
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
itemsrequired
query

app.bsky.graph.getListBlocks

Get mod lists that the requesting account (actor) is blocking. Requires auth.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
listsrequired
query

app.bsky.graph.getListMutes

Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
listsrequired
query

app.bsky.graph.getLists

Enumerates the lists created by a specified account (actor).

parameters:
actorrequired
string

The account (actor) to enumerate lists from.

format=at-identifier
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
listsrequired
query

app.bsky.graph.getMutes

Enumerates accounts that the requesting account (actor) currently has muted. Requires auth.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
mutesrequired
query

app.bsky.graph.getRelationships

Enumerates public relationships between one account, and a list of other accounts. Does not require auth.

parameters:
actorrequired
string

Primary account requesting relationships for.

format=at-identifier
others
array

List of 'other' accounts to be related back to the primary.

items=
string
format=at-identifier
maxLength=30
output:
encoding: application/json
actor
string
format=did
errors:
  • ActorNotFound - the primary actor at-identifier could not be resolved
query

app.bsky.graph.getStarterPack

Gets a view of a starter pack.

parameters:
starterPackrequired
string

Reference (AT-URI) of the starter pack record.

format=at-uri
output:
encoding: application/json
query

app.bsky.graph.getStarterPacks

Get views for a list of starter packs.

parameters:
urisrequired
array
items=
string
format=at-uri
maxLength=25
output:
encoding: application/json
starterPacksrequired
query

app.bsky.graph.getSuggestedFollowsByActor

Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.

parameters:
actorrequired
string
format=at-identifier
output:
encoding: application/json
suggestionsrequired
isFallback
boolean

If true, response has fallen-back to generic results, and is not scoped using relativeToDid

recId
integer
integer

Snowflake for this recommendation, use when submitting recommendation events.

record

app.bsky.graph.list

Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.

Key:

object
purposerequired
ref

Defines the purpose of the list (aka, moderation-oriented or curration-oriented)

ref=app.bsky.graph.defs#listPurpose
namerequired
string

Display name for list; can not be empty.

minLength=1 maxLength=64
description
string
maxLength=3000 maxGraphemes=300
descriptionFacets
array
avatar
blob
accept=[] maxSize=1000000
createdAtrequired
string
format=datetime
record

app.bsky.graph.listblock

Record representing a block relationship against an entire an entire list of accounts (actors).

Key:

object
subjectrequired
string

Reference (AT-URI) to the mod list record.

format=at-uri
createdAtrequired
string
format=datetime
record

app.bsky.graph.listitem

Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.

Key:

object
subjectrequired
string

The account which is included on the list.

format=did
listrequired
string

Reference (AT-URI) to the list record (app.bsky.graph.list).

format=at-uri
createdAtrequired
string
format=datetime
procedure

app.bsky.graph.muteActor

Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth.

input:
encoding: application/json
actorrequired
string
format=at-identifier
procedure

app.bsky.graph.muteActorList

Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth.

input:
encoding: application/json
listrequired
string
format=at-uri
procedure

app.bsky.graph.muteThread

Mutes a thread preventing notifications from the thread and any of its children. Mutes are private in Bluesky. Requires auth.

input:
encoding: application/json
rootrequired
string
format=at-uri
query

app.bsky.graph.searchStarterPacks

Find starter packs matching search criteria. Does not require auth.

parameters:
qrequired
string

Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.

limit
integer
integer
minimum=1 maximum=100 default=25
cursor
string
output:
encoding: application/json
cursor
string
starterPacksrequired
record

app.bsky.graph.starterpack

Record defining a starter pack of actors and feeds for new users.

Key:

object
namerequired
string

Display name for starter pack; can not be empty.

minLength=1 maxLength=500 maxGraphemes=50
description
string
maxLength=3000 maxGraphemes=300
descriptionFacets
array
listrequired
string

Reference (AT-URI) to the list record.

format=at-uri
feeds
array
items=
maxLength=3
createdAtrequired
string
format=datetime
object

app.bsky.graph.starterpack#feedItem

urirequired
string
format=at-uri
procedure

app.bsky.graph.unmuteActor

Unmutes the specified account. Requires auth.

input:
encoding: application/json
actorrequired
string
format=at-identifier
procedure

app.bsky.graph.unmuteActorList

Unmutes the specified list of accounts. Requires auth.

input:
encoding: application/json
listrequired
string
format=at-uri
procedure

app.bsky.graph.unmuteThread

Unmutes the specified thread. Requires auth.

input:
encoding: application/json
rootrequired
string
format=at-uri
object

app.bsky.labeler.defs#labelerPolicies

labelValuesrequired
array

The label values which this labeler publishes. May include global or custom labels.

labelValueDefinitions
array

Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.

object

app.bsky.labeler.defs#labelerView

urirequired
string
format=at-uri
cidrequired
string
format=cid
likeCount
integer
integer
indexedAtrequired
string
format=datetime
labels
object

app.bsky.labeler.defs#labelerViewDetailed

urirequired
string
format=at-uri
cidrequired
string
format=cid
likeCount
integer
integer
indexedAtrequired
string
format=datetime
labels
reasonTypes
array

The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.

subjectTypes
array

The set of subject types (account, record, etc) this service accepts reports on.

subjectCollections
array

Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.

items=
string
format=nsid
object

app.bsky.labeler.defs#labelerViewerState

like
string
format=at-uri
query

app.bsky.labeler.getServices

Get information about a list of labeler services.

parameters:
didsrequired
array
items=
string
format=did
detailed
boolean
output:
encoding: application/json
record

app.bsky.labeler.service

A declaration of the existence of labeler service.

Key:

object
createdAtrequired
string
format=datetime
reasonTypes
array

The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.

subjectTypes
array

The set of subject types (account, record, etc) this service accepts reports on.

subjectCollections
array

Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.

items=
string
format=nsid
query

app.bsky.notification.getUnreadCount

Count the number of unread notifications for the requesting account. Requires auth.

parameters:
priority
boolean
seenAt
string
format=datetime
output:
encoding: application/json
countrequired
integer
integer
query

app.bsky.notification.listNotifications

Enumerate notifications for the requesting account. Requires auth.

parameters:
reasons
array

Notification reasons to include in response.

items=
string

A reason that matches the reason property of #notification.

limit
integer
integer
minimum=1 maximum=100 default=50
priority
boolean
cursor
string
seenAt
string
format=datetime
output:
encoding: application/json
cursor
string
notificationsrequired
array
items=
priority
boolean
seenAt
string
format=datetime
object

app.bsky.notification.listNotifications#notification

urirequired
string
format=at-uri
cidrequired
string
format=cid
reasonrequired
string

Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', and 'starterpack-joined'.

knownValues=['like', 'repost', 'follow', 'mention', 'reply', 'quote', 'starterpack-joined']
reasonSubject
string
format=at-uri
recordrequired
unknown
isReadrequired
boolean
indexedAtrequired
string
format=datetime
labels
procedure

app.bsky.notification.putPreferences

Set notification-related preferences for an account. Requires auth.

input:
encoding: application/json
priorityrequired
boolean
procedure

app.bsky.notification.registerPush

Register to receive push notifications, via a specified service, for the requesting account. Requires auth.

input:
encoding: application/json
serviceDidrequired
string
format=did
tokenrequired
string
platformrequired
string
knownValues=['ios', 'android', 'web']
appIdrequired
string
procedure

app.bsky.notification.updateSeen

Notify server that the requesting account has seen notifications. Requires auth.

input:
encoding: application/json
seenAtrequired
string
format=datetime
object

app.bsky.richtext.facet

Annotation of a sub-string within rich text.

indexrequired
featuresrequired
array
items=
object

app.bsky.richtext.facet#byteSlice

Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.

byteStartrequired
integer
integer
byteEndrequired
integer
integer
object

app.bsky.richtext.facet#link

Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.

urirequired
string
format=uri
object

app.bsky.richtext.facet#mention

Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.

didrequired
string
format=did
object

app.bsky.richtext.facet#tag

Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').

tagrequired
string
maxLength=640 maxGraphemes=64
object

app.bsky.unspecced.defs#skeletonSearchActor

didrequired
string
format=did
object

app.bsky.unspecced.defs#skeletonSearchPost

urirequired
string
format=at-uri
object

app.bsky.unspecced.defs#skeletonSearchStarterPack

urirequired
string
format=at-uri
object

app.bsky.unspecced.defs#trendingTopic

topicrequired
string
displayName
string
description
string
linkrequired
string
query

app.bsky.unspecced.getConfig

Get miscellaneous runtime configuration.

output:
encoding: application/json
checkEmailConfirmed
boolean
query

app.bsky.unspecced.getPopularFeedGenerators

An unspecced view of globally popular feed generators.

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
query
string
output:
encoding: application/json
cursor
string
feedsrequired
query

app.bsky.unspecced.getSuggestionsSkeleton

Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions

parameters:
viewer
string

DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.

format=did
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
relativeToDid
string

DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.

format=did
output:
encoding: application/json
cursor
string
actorsrequired
relativeToDid
string

DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer.

format=did
recId
integer
integer

Snowflake for this recommendation, use when submitting recommendation events.

query

app.bsky.unspecced.getTaggedSuggestions

Get a list of suggestions (feeds and users) tagged with categories

parameters:
output:
encoding: application/json
suggestionsrequired
array
items=
object

app.bsky.unspecced.getTaggedSuggestions#suggestion

tagrequired
string
subjectTyperequired
string
knownValues=['actor', 'feed']
subjectrequired
string
format=uri
query

app.bsky.unspecced.getTrendingTopics

Get a list of trending topics

parameters:
viewer
string

DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.

format=did
limit
integer
integer
minimum=1 maximum=25 default=10
output:
encoding: application/json
topicsrequired
suggestedrequired
query

app.bsky.unspecced.searchActorsSkeleton

Backend Actors (profile) search, returns only skeleton.

parameters:
qrequired
string

Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax.

viewer
string

DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.

format=did
typeahead
boolean

If true, acts as fast/simple 'typeahead' query.

limit
integer
integer
minimum=1 maximum=100 default=25
cursor
string

Optional pagination mechanism; may not necessarily allow scrolling through entire result set.

output:
encoding: application/json
cursor
string
hitsTotal
integer
integer

Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.

actorsrequired
errors:
  • BadQueryString
query

app.bsky.unspecced.searchPostsSkeleton

Backend Posts search, returns only skeleton

parameters:
qrequired
string

Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.

sort
string

Specifies the ranking order of results.

knownValues=['top', 'latest'] default=latest
since
string

Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).

until
string

Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).

mentions
string

Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.

format=at-identifier
author
string

Filter to posts by the given account. Handles are resolved to DID before query-time.

format=at-identifier
lang
string

Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.

format=language
domain
string

Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.

url
string

Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.

format=uri
tag
array

Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.

items=
string
maxLength=640 maxGraphemes=64
viewer
string

DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.

format=did
limit
integer
integer
minimum=1 maximum=100 default=25
cursor
string

Optional pagination mechanism; may not necessarily allow scrolling through entire result set.

output:
encoding: application/json
cursor
string
hitsTotal
integer
integer

Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.

postsrequired
errors:
  • BadQueryString
query

app.bsky.unspecced.searchStarterPacksSkeleton

Backend Starter Pack search, returns only skeleton.

parameters:
qrequired
string

Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.

viewer
string

DID of the account making the request (not included for public/unauthenticated queries).

format=did
limit
integer
integer
minimum=1 maximum=100 default=25
cursor
string

Optional pagination mechanism; may not necessarily allow scrolling through entire result set.

output:
encoding: application/json
cursor
string
hitsTotal
integer
integer

Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.

starterPacksrequired
errors:
  • BadQueryString
object

app.bsky.video.defs#jobStatus

jobIdrequired
string
didrequired
string
format=did
staterequired
string

The state of the video processing job. All values not listed as a known value indicate that the job is in process.

knownValues=['JOB_STATE_COMPLETED', 'JOB_STATE_FAILED']
progress
integer
integer

Progress within the current processing state.

maximum=100
blob
blob
error
string
message
string
query

app.bsky.video.getJobStatus

Get status details for a video processing job.

parameters:
jobIdrequired
string
output:
encoding: application/json
jobStatusrequired
query

app.bsky.video.getUploadLimits

Get video upload limits for the authenticated user.

output:
encoding: application/json
canUploadrequired
boolean
remainingDailyVideos
integer
integer
remainingDailyBytes
integer
integer
message
string
error
string
procedure

app.bsky.video.uploadVideo

Upload a video to be processed then stored on the PDS.

input:
encoding: video/mp4
output:
encoding: application/json
jobStatusrequired
record

chat.bsky.actor.declaration

A declaration of a Bluesky chat account.

Key:

object
allowIncomingrequired
string
knownValues=['all', 'none', 'following']
object

chat.bsky.actor.defs#profileViewBasic

didrequired
string
format=did
handlerequired
string
format=handle
displayName
string
maxLength=640 maxGraphemes=64
avatar
string
format=uri
labels
chatDisabled
boolean

Set to true when the actor cannot actively participate in converations

procedure

chat.bsky.actor.deleteAccount

output:
encoding: application/json
()
query

chat.bsky.actor.exportAccountData

output:
encoding: application/jsonl
procedure

chat.bsky.convo.acceptConvo

input:
encoding: application/json
convoIdrequired
string
output:
encoding: application/json
rev
string

Rev when the convo was accepted. If not present, the convo was already accepted.

object

chat.bsky.convo.defs#convoView

idrequired
string
revrequired
string
membersrequired
mutedrequired
boolean
status
string
knownValues=['request', 'accepted']
unreadCountrequired
integer
integer
object

chat.bsky.convo.defs#deletedMessageView

idrequired
string
revrequired
string
senderrequired
sentAtrequired
string
format=datetime
object

chat.bsky.convo.defs#logAcceptConvo

revrequired
string
convoIdrequired
string
object

chat.bsky.convo.defs#logBeginConvo

revrequired
string
convoIdrequired
string
object

chat.bsky.convo.defs#logCreateMessage

revrequired
string
convoIdrequired
string
messagerequired
object

chat.bsky.convo.defs#logDeleteMessage

revrequired
string
convoIdrequired
string
messagerequired
object

chat.bsky.convo.defs#logLeaveConvo

revrequired
string
convoIdrequired
string
object

chat.bsky.convo.defs#logMuteConvo

revrequired
string
convoIdrequired
string
object

chat.bsky.convo.defs#logReadMessage

revrequired
string
convoIdrequired
string
messagerequired
object

chat.bsky.convo.defs#logUnmuteConvo

revrequired
string
convoIdrequired
string
object

chat.bsky.convo.defs#messageInput

textrequired
string
maxLength=10000 maxGraphemes=1000
facets
array

Annotations of text (mentions, URLs, hashtags, etc)

object

chat.bsky.convo.defs#messageRef

didrequired
string
format=did
convoIdrequired
string
messageIdrequired
string
object

chat.bsky.convo.defs#messageView

idrequired
string
revrequired
string
textrequired
string
maxLength=10000 maxGraphemes=1000
facets
array

Annotations of text (mentions, URLs, hashtags, etc)

senderrequired
sentAtrequired
string
format=datetime
object

chat.bsky.convo.defs#messageViewSender

didrequired
string
format=did
procedure

chat.bsky.convo.deleteMessageForSelf

input:
encoding: application/json
convoIdrequired
string
messageIdrequired
string
output:
encoding: application/json
query

chat.bsky.convo.getConvo

parameters:
convoIdrequired
string
output:
encoding: application/json
query

chat.bsky.convo.getConvoAvailability

Get whether the requester and the other members can chat. If an existing convo is found for these members, it is returned.

parameters:
membersrequired
array
items=
string
format=did
minLength=1 maxLength=10
output:
encoding: application/json
canChatrequired
boolean
query

chat.bsky.convo.getConvoForMembers

parameters:
membersrequired
array
items=
string
format=did
minLength=1 maxLength=10
output:
encoding: application/json
query

chat.bsky.convo.getLog

parameters:
cursor
string
query

chat.bsky.convo.getMessages

parameters:
convoIdrequired
string
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
procedure

chat.bsky.convo.leaveConvo

input:
encoding: application/json
convoIdrequired
string
output:
encoding: application/json
convoIdrequired
string
revrequired
string
query

chat.bsky.convo.listConvos

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
readState
string
knownValues=['unread']
status
string
knownValues=['request', 'accepted']
output:
encoding: application/json
cursor
string
convosrequired
procedure

chat.bsky.convo.muteConvo

input:
encoding: application/json
convoIdrequired
string
output:
encoding: application/json
procedure

chat.bsky.convo.sendMessage

input:
encoding: application/json
convoIdrequired
string
output:
encoding: application/json
procedure

chat.bsky.convo.sendMessageBatch

input:
encoding: application/json
itemsrequired
array
items=
maxLength=100
output:
encoding: application/json
itemsrequired
object

chat.bsky.convo.sendMessageBatch#batchItem

convoIdrequired
string
procedure

chat.bsky.convo.unmuteConvo

input:
encoding: application/json
convoIdrequired
string
output:
encoding: application/json
procedure

chat.bsky.convo.updateAllRead

input:
encoding: application/json
status
string
knownValues=['request', 'accepted']
output:
encoding: application/json
updatedCountrequired
integer
integer

The count of updated convos.

procedure

chat.bsky.convo.updateRead

input:
encoding: application/json
convoIdrequired
string
messageId
string
output:
encoding: application/json
query

chat.bsky.moderation.getActorMetadata

parameters:
actorrequired
string
format=did
output:
encoding: application/json
dayrequired
monthrequired
allrequired
object

chat.bsky.moderation.getActorMetadata#metadata

messagesSentrequired
integer
integer
messagesReceivedrequired
integer
integer
convosrequired
integer
integer
convosStartedrequired
integer
integer
query

chat.bsky.moderation.getMessageContext

parameters:
convoId
string

Conversation that the message is from. NOTE: this field will eventually be required.

messageIdrequired
string
before
integer
integer
default=5
after
integer
integer
default=5
output:
encoding: application/json
procedure

chat.bsky.moderation.updateActorAccess

input:
encoding: application/json
actorrequired
string
format=did
allowAccessrequired
boolean
ref
string
object

com.atproto.admin.defs#accountView

didrequired
string
format=did
handlerequired
string
format=handle
email
string
relatedRecords
array
items=
unknown
indexedAtrequired
string
format=datetime
invites
invitesDisabled
boolean
emailConfirmedAt
string
format=datetime
inviteNote
string
deactivatedAt
string
format=datetime
threatSignatures
array
object

com.atproto.admin.defs#repoBlobRef

didrequired
string
format=did
cidrequired
string
format=cid
recordUri
string
format=at-uri
object

com.atproto.admin.defs#repoRef

didrequired
string
format=did
object

com.atproto.admin.defs#statusAttr

appliedrequired
boolean
ref
string
object

com.atproto.admin.defs#threatSignature

propertyrequired
string
valuerequired
string
procedure

com.atproto.admin.deleteAccount

Delete a user account as an administrator.

input:
encoding: application/json
didrequired
string
format=did
procedure

com.atproto.admin.disableAccountInvites

Disable an account from receiving new invite codes, but does not invalidate existing codes.

input:
encoding: application/json
accountrequired
string
format=did
note
string

Optional reason for disabled invites.

procedure

com.atproto.admin.disableInviteCodes

Disable some set of codes and/or all codes associated with a set of users.

input:
encoding: application/json
codes
array
items=
string
accounts
array
items=
string
procedure

com.atproto.admin.enableAccountInvites

Re-enable an account's ability to receive invite codes.

input:
encoding: application/json
accountrequired
string
format=did
note
string

Optional reason for enabled invites.

query

com.atproto.admin.getAccountInfo

Get details about an account.

parameters:
didrequired
string
format=did
output:
encoding: application/json
query

com.atproto.admin.getAccountInfos

Get details about some accounts.

parameters:
didsrequired
array
items=
string
format=did
output:
encoding: application/json
infosrequired
query

com.atproto.admin.getInviteCodes

Get an admin view of invite codes.

parameters:
sort
string
knownValues=['recent', 'usage'] default=recent
limit
integer
integer
minimum=1 maximum=500 default=100
cursor
string
output:
encoding: application/json
cursor
string
codesrequired
query

com.atproto.admin.getSubjectStatus

Get the service-specific admin status of a subject (account, record, or blob).

parameters:
did
string
format=did
uri
string
format=at-uri
blob
string
format=cid
query

com.atproto.admin.searchAccounts

Get list of accounts that matches your search query.

parameters:
email
string
cursor
string
limit
integer
integer
minimum=1 maximum=100 default=50
output:
encoding: application/json
cursor
string
accountsrequired
procedure

com.atproto.admin.sendEmail

Send email to a user's account email address.

input:
encoding: application/json
recipientDidrequired
string
format=did
contentrequired
string
subject
string
senderDidrequired
string
format=did
comment
string

Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers

output:
encoding: application/json
sentrequired
boolean
procedure

com.atproto.admin.updateAccountEmail

Administrative action to update an account's email.

input:
encoding: application/json
accountrequired
string

The handle or DID of the repo.

format=at-identifier
emailrequired
string
procedure

com.atproto.admin.updateAccountHandle

Administrative action to update an account's handle.

input:
encoding: application/json
didrequired
string
format=did
handlerequired
string
format=handle
procedure

com.atproto.admin.updateAccountPassword

Update the password for a user account as an administrator.

input:
encoding: application/json
didrequired
string
format=did
passwordrequired
string
procedure

com.atproto.admin.updateSubjectStatus

Update the service-specific admin status of a subject (account, record, or blob).

object

com.atproto.identity.defs#identityInfo

didrequired
string
format=did
handlerequired
string

The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.

format=handle
didDocrequired
unknown

The complete DID document for the identity.

query

com.atproto.identity.getRecommendedDidCredentials

Describe the credentials that should be included in the DID doc of an account that is migrating to this service.

output:
encoding: application/json
rotationKeys
array

Recommended rotation keys for PLC dids. Should be undefined (or ignored) for did:webs.

items=
string
alsoKnownAs
array
items=
string
verificationMethods
unknown
services
unknown
procedure

com.atproto.identity.refreshIdentity

Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server.

input:
encoding: application/json
identifierrequired
string
format=at-identifier
output:
encoding: application/json
errors:
  • HandleNotFound - The resolution process confirmed that the handle does not resolve to any DID.
  • DidNotFound - The DID resolution process confirmed that there is no current DID.
  • DidDeactivated - The DID previously existed, but has been deactivated.
procedure

com.atproto.identity.requestPlcOperationSignature

Request an email with a code to in order to request a signed PLC operation. Requires Auth.

query

com.atproto.identity.resolveDid

Resolves DID to DID document. Does not bi-directionally verify handle.

parameters:
didrequired
string

DID to resolve.

format=did
output:
encoding: application/json
didDocrequired
unknown

The complete DID document for the identity.

errors:
  • DidNotFound - The DID resolution process confirmed that there is no current DID.
  • DidDeactivated - The DID previously existed, but has been deactivated.
query

com.atproto.identity.resolveHandle

Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.

parameters:
handlerequired
string

The handle to resolve.

format=handle
output:
encoding: application/json
didrequired
string
format=did
errors:
  • HandleNotFound - The resolution process confirmed that the handle does not resolve to any DID.
query

com.atproto.identity.resolveIdentity

Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).

parameters:
identifierrequired
string

Handle or DID to resolve.

format=at-identifier
output:
encoding: application/json
errors:
  • HandleNotFound - The resolution process confirmed that the handle does not resolve to any DID.
  • DidNotFound - The DID resolution process confirmed that there is no current DID.
  • DidDeactivated - The DID previously existed, but has been deactivated.
procedure

com.atproto.identity.signPlcOperation

Signs a PLC operation to update some value(s) in the requesting DID's document.

input:
encoding: application/json
token
string

A token received through com.atproto.identity.requestPlcOperationSignature

rotationKeys
array
items=
string
alsoKnownAs
array
items=
string
verificationMethods
unknown
services
unknown
output:
encoding: application/json
operationrequired
unknown

A signed DID PLC operation.

procedure

com.atproto.identity.submitPlcOperation

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

input:
encoding: application/json
operationrequired
unknown
procedure

com.atproto.identity.updateHandle

Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth.

input:
encoding: application/json
handlerequired
string

The new handle.

format=handle
object

com.atproto.label.defs#label

Metadata tag on an atproto resource (eg, repo or record).

ver
integer
integer

The AT Protocol version of the label object.

srcrequired
string

DID of the actor who created this label.

format=did
urirequired
string

AT URI of the record, repository (account), or other resource that this label applies to.

format=uri
cid
string

Optionally, CID specifying the specific version of 'uri' resource this label applies to.

format=cid
valrequired
string

The short string name of the value or type of this label.

maxLength=128
neg
boolean

If true, this is a negation label, overwriting a previous label.

ctsrequired
string

Timestamp when this label was created.

format=datetime
exp
string

Timestamp at which this label expires (no longer applies).

format=datetime
sig
bytes

Signature of dag-cbor encoded label.

string

com.atproto.label.defs#labelValue

knownValues=['!hide', '!no-promote', '!warn', '!no-unauthenticated', 'dmca-violation', 'doxxing', 'porn', 'sexual', 'nudity', 'nsfl', 'gore']
object

com.atproto.label.defs#labelValueDefinition

Declares a label value and its expected interpretations and behaviors.

identifierrequired
string

The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).

maxLength=100 maxGraphemes=100
severityrequired
string

How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.

knownValues=['inform', 'alert', 'none']
blursrequired
string

What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.

knownValues=['content', 'media', 'none']
defaultSetting
string

The default setting for this label.

knownValues=['ignore', 'warn', 'hide'] default=warn
adultOnly
boolean

Does the user need to have adult content enabled in order to configure this label?

localesrequired
object

com.atproto.label.defs#labelValueDefinitionStrings

Strings which describe the label in the UI, localized into a specific language.

langrequired
string

The code of the language these strings are written in.

format=language
namerequired
string

A short human-readable name for the label.

maxLength=640 maxGraphemes=64
descriptionrequired
string

A longer description of what the label means and why it might be applied.

maxLength=100000 maxGraphemes=10000
object

com.atproto.label.defs#selfLabel

Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.

valrequired
string

The short string name of the value or type of this label.

maxLength=128
object

com.atproto.label.defs#selfLabels

Metadata tags on an atproto record, published by the author within the record.

valuesrequired
array
items=
maxLength=10
query

com.atproto.label.queryLabels

Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.

parameters:
uriPatternsrequired
array

List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI.

items=
string
sources
array

Optional list of label sources (DIDs) to filter on.

items=
string
format=did
limit
integer
integer
minimum=1 maximum=250 default=50
cursor
string
output:
encoding: application/json
cursor
string
labelsrequired
subscription

com.atproto.label.subscribeLabels

Subscribe to stream of labels (and negations). Public endpoint implemented by mod services. Uses same sequencing scheme as repo event stream.

parameters:
cursor
integer
integer

The last known event seq number to backfill from.

message:
errors:
  • FutureCursor
object

com.atproto.label.subscribeLabels#info

namerequired
string
knownValues=['OutdatedCursor']
message
string
object

com.atproto.label.subscribeLabels#labels

seqrequired
integer
integer
labelsrequired
record

com.atproto.lexicon.schema

Representation of Lexicon schemas themselves, when published as atproto records. Note that the schema language is not defined in Lexicon; this meta schema currently only includes a single version field ('lexicon'). See the atproto specifications for description of the other expected top-level fields ('id', 'defs', etc).

Key:

object
lexiconrequired
integer
integer

Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system.

procedure

com.atproto.moderation.createReport

Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.

input:
encoding: application/json
reasonTyperequired
ref

Indicates the broad category of violation the report is for.

ref=com.atproto.moderation.defs#reasonType
reason
string

Additional context about the content and violation.

maxLength=20000 maxGraphemes=2000
output:
encoding: application/json
idrequired
integer
integer
reason
string
maxLength=20000 maxGraphemes=2000
reportedByrequired
string
format=did
createdAtrequired
string
format=datetime
token

com.atproto.moderation.defs#reasonAppeal

Appeal: appeal a previously taken moderation action

token

com.atproto.moderation.defs#reasonMisleading

Misleading identity, affiliation, or content

token

com.atproto.moderation.defs#reasonOther

Other: reports not falling under another report category

token

com.atproto.moderation.defs#reasonRude

Rude, harassing, explicit, or otherwise unwelcoming behavior

token

com.atproto.moderation.defs#reasonSexual

Unwanted or mislabeled sexual content

token

com.atproto.moderation.defs#reasonSpam

Spam: frequent unwanted promotion, replies, mentions

string

com.atproto.moderation.defs#reasonType

knownValues=['com.atproto.moderation.defs#reasonSpam', 'com.atproto.moderation.defs#reasonViolation', 'com.atproto.moderation.defs#reasonMisleading', 'com.atproto.moderation.defs#reasonSexual', 'com.atproto.moderation.defs#reasonRude', 'com.atproto.moderation.defs#reasonOther', 'com.atproto.moderation.defs#reasonAppeal']
token

com.atproto.moderation.defs#reasonViolation

Direct violation of server rules, laws, terms of service

string

com.atproto.moderation.defs#subjectType

Tag describing a type of subject that might be reported.

knownValues=['account', 'record', 'chat']
procedure

com.atproto.repo.applyWrites

Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.

input:
encoding: application/json
reporequired
string

The handle or DID of the repo (aka, current account).

format=at-identifier
validate
boolean

Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons.

writesrequired
array
items=
union
closed=True
swapCommit
string

If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.

format=cid
output:
encoding: application/json
results
array
items=
errors:
  • InvalidSwap - Indicates that the 'swapCommit' parameter did not match current commit.
object

com.atproto.repo.applyWrites#create

Operation which creates a new record.

collectionrequired
string
format=nsid
rkey
string

NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility.

format=record-key maxLength=512
valuerequired
unknown
object

com.atproto.repo.applyWrites#createResult

urirequired
string
format=at-uri
cidrequired
string
format=cid
validationStatus
string
knownValues=['valid', 'unknown']
object

com.atproto.repo.applyWrites#delete

Operation which deletes an existing record.

collectionrequired
string
format=nsid
rkeyrequired
string
format=record-key
object

com.atproto.repo.applyWrites#deleteResult

()
object

com.atproto.repo.applyWrites#update

Operation which updates an existing record.

collectionrequired
string
format=nsid
rkeyrequired
string
format=record-key
valuerequired
unknown
object

com.atproto.repo.applyWrites#updateResult

urirequired
string
format=at-uri
cidrequired
string
format=cid
validationStatus
string
knownValues=['valid', 'unknown']
procedure

com.atproto.repo.createRecord

Create a single new repository record. Requires auth, implemented by PDS.

input:
encoding: application/json
reporequired
string

The handle or DID of the repo (aka, current account).

format=at-identifier
collectionrequired
string

The NSID of the record collection.

format=nsid
rkey
string

The Record Key.

format=record-key maxLength=512
validate
boolean

Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.

recordrequired
unknown

The record itself. Must contain a $type field.

swapCommit
string

Compare and swap with the previous commit by CID.

format=cid
output:
encoding: application/json
urirequired
string
format=at-uri
cidrequired
string
format=cid
validationStatus
string
knownValues=['valid', 'unknown']
errors:
  • InvalidSwap - Indicates that 'swapCommit' didn't match current repo commit.
object

com.atproto.repo.defs#commitMeta

cidrequired
string
format=cid
revrequired
string
format=tid
procedure

com.atproto.repo.deleteRecord

Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.

input:
encoding: application/json
reporequired
string

The handle or DID of the repo (aka, current account).

format=at-identifier
collectionrequired
string

The NSID of the record collection.

format=nsid
rkeyrequired
string

The Record Key.

format=record-key
swapRecord
string

Compare and swap with the previous record by CID.

format=cid
swapCommit
string

Compare and swap with the previous commit by CID.

format=cid
output:
encoding: application/json
errors:
  • InvalidSwap
query

com.atproto.repo.describeRepo

Get information about an account and repository, including the list of collections. Does not require auth.

parameters:
reporequired
string

The handle or DID of the repo.

format=at-identifier
output:
encoding: application/json
handlerequired
string
format=handle
didrequired
string
format=did
didDocrequired
unknown

The complete DID document for this account.

collectionsrequired
array

List of all the collections (NSIDs) for which this repo contains at least one record.

items=
string
format=nsid
handleIsCorrectrequired
boolean

Indicates if handle is currently valid (resolves bi-directionally)

query

com.atproto.repo.getRecord

Get a single record from a repository. Does not require auth.

parameters:
reporequired
string

The handle or DID of the repo.

format=at-identifier
collectionrequired
string

The NSID of the record collection.

format=nsid
rkeyrequired
string

The Record Key.

format=record-key
cid
string

The CID of the version of the record. If not specified, then return the most recent version.

format=cid
output:
encoding: application/json
urirequired
string
format=at-uri
cid
string
format=cid
valuerequired
unknown
errors:
  • RecordNotFound
procedure

com.atproto.repo.importRepo

Import a repo in the form of a CAR file. Requires Content-Length HTTP header to be set.

input:
encoding: application/vnd.ipld.car
query

com.atproto.repo.listMissingBlobs

Returns a list of missing blobs for the requesting account. Intended to be used in the account migration flow.

parameters:
limit
integer
integer
minimum=1 maximum=1000 default=500
cursor
string
output:
encoding: application/json
cursor
string
blobsrequired
array
items=
object

com.atproto.repo.listMissingBlobs#recordBlob

cidrequired
string
format=cid
recordUrirequired
string
format=at-uri
query

com.atproto.repo.listRecords

List a range of records in a repository, matching a specific collection. Does not require auth.

parameters:
reporequired
string

The handle or DID of the repo.

format=at-identifier
collectionrequired
string

The NSID of the record type.

format=nsid
limit
integer
integer

The number of records to return.

minimum=1 maximum=100 default=50
cursor
string
reverse
boolean

Flag to reverse the order of the returned records.

output:
encoding: application/json
cursor
string
recordsrequired
array
items=
object

com.atproto.repo.listRecords#record

urirequired
string
format=at-uri
cidrequired
string
format=cid
valuerequired
unknown
procedure

com.atproto.repo.putRecord

Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.

input:
encoding: application/json
reporequired
string

The handle or DID of the repo (aka, current account).

format=at-identifier
collectionrequired
string

The NSID of the record collection.

format=nsid
rkeyrequired
string

The Record Key.

format=record-key maxLength=512
validate
boolean

Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.

recordrequired
unknown

The record to write.

swapRecordnullable
string

Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation

format=cid
swapCommit
string

Compare and swap with the previous commit by CID.

format=cid
output:
encoding: application/json
urirequired
string
format=at-uri
cidrequired
string
format=cid
validationStatus
string
knownValues=['valid', 'unknown']
errors:
  • InvalidSwap
object

com.atproto.repo.strongRef

urirequired
string
format=at-uri
cidrequired
string
format=cid
procedure

com.atproto.repo.uploadBlob

Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.

input:
encoding: */*
output:
encoding: application/json
blobrequired
blob
procedure

com.atproto.server.activateAccount

Activates a currently deactivated account. Used to finalize account migration after the account's repo is imported and identity is setup.

query

com.atproto.server.checkAccountStatus

Returns the status of an account, especially as pertaining to import or recovery. Can be called many times over the course of an account migration. Requires auth and can only be called pertaining to oneself.

output:
encoding: application/json
activatedrequired
boolean
validDidrequired
boolean
repoCommitrequired
string
format=cid
repoRevrequired
string
repoBlocksrequired
integer
integer
indexedRecordsrequired
integer
integer
privateStateValuesrequired
integer
integer
expectedBlobsrequired
integer
integer
importedBlobsrequired
integer
integer
procedure

com.atproto.server.confirmEmail

Confirm an email using a token from com.atproto.server.requestEmailConfirmation.

input:
encoding: application/json
emailrequired
string
tokenrequired
string
errors:
  • AccountNotFound
  • ExpiredToken
  • InvalidToken
  • InvalidEmail
procedure

com.atproto.server.createAccount

Create an account. Implemented by PDS.

input:
encoding: application/json
email
string
handlerequired
string

Requested handle for the account.

format=handle
did
string

Pre-existing atproto DID, being imported to a new account.

format=did
inviteCode
string
verificationCode
string
verificationPhone
string
password
string

Initial account password. May need to meet instance-specific password strength requirements.

recoveryKey
string

DID PLC rotation key (aka, recovery key) to be included in PLC creation operation.

plcOp
unknown

A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented.

output:
encoding: application/json

Account login session returned on successful account creation.

accessJwtrequired
string
refreshJwtrequired
string
handlerequired
string
format=handle
didrequired
string

The DID of the new account.

format=did
didDoc
unknown

Complete DID document.

errors:
  • InvalidHandle
  • InvalidPassword
  • InvalidInviteCode
  • HandleNotAvailable
  • UnsupportedDomain
  • UnresolvableDid
  • IncompatibleDidDoc
procedure

com.atproto.server.createAppPassword

Create an App Password.

input:
encoding: application/json
namerequired
string

A short name for the App Password, to help distinguish them.

privileged
boolean

If an app password has 'privileged' access to possibly sensitive account state. Meant for use with trusted clients.

output:
encoding: application/json
errors:
  • AccountTakedown
object

com.atproto.server.createAppPassword#appPassword

namerequired
string
passwordrequired
string
createdAtrequired
string
format=datetime
privileged
boolean
procedure

com.atproto.server.createInviteCode

Create an invite code.

input:
encoding: application/json
useCountrequired
integer
integer
forAccount
string
format=did
output:
encoding: application/json
coderequired
string
procedure

com.atproto.server.createInviteCodes

Create invite codes.

input:
encoding: application/json
codeCountrequired
integer
integer
default=1
useCountrequired
integer
integer
forAccounts
array
items=
string
format=did
output:
encoding: application/json
codesrequired
array
items=
object

com.atproto.server.createInviteCodes#accountCodes

accountrequired
string
codesrequired
array
items=
string
procedure

com.atproto.server.createSession

Create an authentication session.

input:
encoding: application/json
identifierrequired
string

Handle or other identifier supported by the server for the authenticating user.

passwordrequired
string
authFactorToken
string
allowTakendown
boolean

When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned

output:
encoding: application/json
accessJwtrequired
string
refreshJwtrequired
string
handlerequired
string
format=handle
didrequired
string
format=did
didDoc
unknown
email
string
emailConfirmed
boolean
emailAuthFactor
boolean
active
boolean
status
string

If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.

knownValues=['takendown', 'suspended', 'deactivated']
errors:
  • AccountTakedown
  • AuthFactorTokenRequired
procedure

com.atproto.server.deactivateAccount

Deactivates a currently active account. Stops serving of repo, and future writes to repo until reactivated. Used to finalize account migration with the old host after the account has been activated on the new host.

input:
encoding: application/json
deleteAfter
string

A recommendation to server as to how long they should hold onto the deactivated account before deleting.

format=datetime
object

com.atproto.server.defs#inviteCode

coderequired
string
availablerequired
integer
integer
disabledrequired
boolean
forAccountrequired
string
createdByrequired
string
createdAtrequired
string
format=datetime
usesrequired
array
items=
object

com.atproto.server.defs#inviteCodeUse

usedByrequired
string
format=did
usedAtrequired
string
format=datetime
procedure

com.atproto.server.deleteAccount

Delete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth.

input:
encoding: application/json
didrequired
string
format=did
passwordrequired
string
tokenrequired
string
errors:
  • ExpiredToken
  • InvalidToken
procedure

com.atproto.server.deleteSession

Delete the current session. Requires auth.

query

com.atproto.server.describeServer

Describes the server's account creation requirements and capabilities. Implemented by PDS.

output:
encoding: application/json
inviteCodeRequired
boolean

If true, an invite code must be supplied to create an account on this instance.

phoneVerificationRequired
boolean

If true, a phone verification token must be supplied to create an account on this instance.

availableUserDomainsrequired
array

List of domain suffixes that can be used in account handles.

items=
string
links
ref

URLs of service policy documents.

ref=#links
contact
ref

Contact information

ref=#contact
didrequired
string
format=did
object

com.atproto.server.describeServer#contact

email
string
object

com.atproto.server.describeServer#links

privacyPolicy
string
format=uri
termsOfService
string
format=uri
query

com.atproto.server.getAccountInviteCodes

Get all invite codes for the current account. Requires auth.

parameters:
includeUsed
boolean
default=True
createAvailable
boolean

Controls whether any new 'earned' but not 'created' invites should be created.

default=True
output:
encoding: application/json
codesrequired
errors:
  • DuplicateCreate
query

com.atproto.server.getServiceAuth

Get a signed token on behalf of the requesting DID for the requested service.

parameters:
audrequired
string

The DID of the service that the token will be used to authenticate with

format=did
exp
integer
integer

The time in Unix Epoch seconds that the JWT expires. Defaults to 60 seconds in the future. The service may enforce certain time bounds on tokens depending on the requested scope.

lxm
string

Lexicon (XRPC) method to bind the requested token to

format=nsid
output:
encoding: application/json
tokenrequired
string
errors:
  • BadExpiration - Indicates that the requested expiration date is not a valid. May be in the past or may be reliant on the requested scopes.
query

com.atproto.server.getSession

Get information about the current auth session. Requires auth.

output:
encoding: application/json
handlerequired
string
format=handle
didrequired
string
format=did
email
string
emailConfirmed
boolean
emailAuthFactor
boolean
didDoc
unknown
active
boolean
status
string

If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.

knownValues=['takendown', 'suspended', 'deactivated']
query

com.atproto.server.listAppPasswords

List all App Passwords.

output:
encoding: application/json
passwordsrequired
array
items=
errors:
  • AccountTakedown
object

com.atproto.server.listAppPasswords#appPassword

namerequired
string
createdAtrequired
string
format=datetime
privileged
boolean
procedure

com.atproto.server.refreshSession

Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').

output:
encoding: application/json
accessJwtrequired
string
refreshJwtrequired
string
handlerequired
string
format=handle
didrequired
string
format=did
didDoc
unknown
active
boolean
status
string

Hosting status of the account. If not specified, then assume 'active'.

knownValues=['takendown', 'suspended', 'deactivated']
errors:
  • AccountTakedown
procedure

com.atproto.server.requestAccountDelete

Initiate a user account deletion via email.

procedure

com.atproto.server.requestEmailConfirmation

Request an email with a code to confirm ownership of email.

procedure

com.atproto.server.requestEmailUpdate

Request a token in order to update email.

output:
encoding: application/json
tokenRequiredrequired
boolean
procedure

com.atproto.server.requestPasswordReset

Initiate a user account password reset via email.

input:
encoding: application/json
emailrequired
string
procedure

com.atproto.server.reserveSigningKey

Reserve a repo signing key, for use with account creation. Necessary so that a DID PLC update operation can be constructed during an account migraiton. Public and does not require auth; implemented by PDS. NOTE: this endpoint may change when full account migration is implemented.

input:
encoding: application/json
did
string

The DID to reserve a key for.

format=did
output:
encoding: application/json
signingKeyrequired
string

The public key for the reserved signing key, in did:key serialization.

procedure

com.atproto.server.resetPassword

Reset a user account password using a token.

input:
encoding: application/json
tokenrequired
string
passwordrequired
string
errors:
  • ExpiredToken
  • InvalidToken
procedure

com.atproto.server.revokeAppPassword

Revoke an App Password by name.

input:
encoding: application/json
namerequired
string
procedure

com.atproto.server.updateEmail

Update an account's email.

input:
encoding: application/json
emailrequired
string
emailAuthFactor
boolean
token
string

Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed.

errors:
  • ExpiredToken
  • InvalidToken
  • TokenRequired
query

com.atproto.sync.getBlob

Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS.

parameters:
didrequired
string

The DID of the account.

format=did
cidrequired
string

The CID of the blob to fetch

format=cid
output:
encoding: */*
errors:
  • BlobNotFound
  • RepoNotFound
  • RepoTakendown
  • RepoSuspended
  • RepoDeactivated
query

com.atproto.sync.getBlocks

Get data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS.

parameters:
didrequired
string

The DID of the repo.

format=did
cidsrequired
array
items=
string
format=cid
output:
encoding: application/vnd.ipld.car
errors:
  • BlockNotFound
  • RepoNotFound
  • RepoTakendown
  • RepoSuspended
  • RepoDeactivated
query

com.atproto.sync.getCheckout

DEPRECATED - please use com.atproto.sync.getRepo instead

parameters:
didrequired
string

The DID of the repo.

format=did
output:
encoding: application/vnd.ipld.car
query

com.atproto.sync.getHead

DEPRECATED - please use com.atproto.sync.getLatestCommit instead

parameters:
didrequired
string

The DID of the repo.

format=did
output:
encoding: application/json
rootrequired
string
format=cid
errors:
  • HeadNotFound
query

com.atproto.sync.getLatestCommit

Get the current commit CID & revision of the specified repo. Does not require auth.

parameters:
didrequired
string

The DID of the repo.

format=did
output:
encoding: application/json
cidrequired
string
format=cid
revrequired
string
format=tid
errors:
  • RepoNotFound
  • RepoTakendown
  • RepoSuspended
  • RepoDeactivated
query

com.atproto.sync.getRecord

Get data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth.

parameters:
didrequired
string

The DID of the repo.

format=did
collectionrequired
string
format=nsid
rkeyrequired
string

Record Key

format=record-key
output:
encoding: application/vnd.ipld.car
errors:
  • RecordNotFound
  • RepoNotFound
  • RepoTakendown
  • RepoSuspended
  • RepoDeactivated
query

com.atproto.sync.getRepo

Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS.

parameters:
didrequired
string

The DID of the repo.

format=did
since
string

The revision ('rev') of the repo to create a diff from.

format=tid
output:
encoding: application/vnd.ipld.car
errors:
  • RepoNotFound
  • RepoTakendown
  • RepoSuspended
  • RepoDeactivated
query

com.atproto.sync.getRepoStatus

Get the hosting status for a repository, on this server. Expected to be implemented by PDS and Relay.

parameters:
didrequired
string

The DID of the repo.

format=did
output:
encoding: application/json
didrequired
string
format=did
activerequired
boolean
status
string

If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.

knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'desynchronized', 'throttled']
rev
string

Optional field, the current rev of the repo, if active=true

format=tid
errors:
  • RepoNotFound
query

com.atproto.sync.listBlobs

List blob CIDs for an account, since some repo revision. Does not require auth; implemented by PDS.

parameters:
didrequired
string

The DID of the repo.

format=did
since
string

Optional revision of the repo to list blobs since.

format=tid
limit
integer
integer
minimum=1 maximum=1000 default=500
cursor
string
output:
encoding: application/json
cursor
string
cidsrequired
array
items=
string
format=cid
errors:
  • RepoNotFound
  • RepoTakendown
  • RepoSuspended
  • RepoDeactivated
query

com.atproto.sync.listRepos

Enumerates all the DID, rev, and commit CID for all repos hosted by this service. Does not require auth; implemented by PDS and Relay.

parameters:
limit
integer
integer
minimum=1 maximum=1000 default=500
cursor
string
output:
encoding: application/json
cursor
string
reposrequired
array
items=
ref
ref=#repo
object

com.atproto.sync.listRepos#repo

didrequired
string
format=did
headrequired
string

Current repo commit CID

format=cid
revrequired
string
format=tid
active
boolean
status
string

If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.

knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'desynchronized', 'throttled']
query

com.atproto.sync.listReposByCollection

Enumerates all the DIDs which have records with the given collection NSID.

parameters:
collectionrequired
string
format=nsid
limit
integer
integer

Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.

minimum=1 maximum=2000 default=500
cursor
string
output:
encoding: application/json
cursor
string
reposrequired
array
items=
ref
ref=#repo
object

com.atproto.sync.listReposByCollection#repo

didrequired
string
format=did
procedure

com.atproto.sync.notifyOfUpdate

Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay. DEPRECATED: just use com.atproto.sync.requestCrawl

input:
encoding: application/json
hostnamerequired
string

Hostname of the current service (usually a PDS) that is notifying of update.

procedure

com.atproto.sync.requestCrawl

Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth.

input:
encoding: application/json
hostnamerequired
string

Hostname of the current service (eg, PDS) that is requesting to be crawled.

subscription

com.atproto.sync.subscribeRepos

Repository event stream, aka Firehose endpoint. Outputs repo commits with diff data, and identity update events, for all repositories on the current server. See the atproto specifications for details around stream sequencing, repo versioning, CAR diff format, and more. Public and does not require auth; implemented by PDS and Relay.

parameters:
cursor
integer
integer

The last known event seq number to backfill from.

errors:
  • FutureCursor
  • ConsumerTooSlow - If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection.
object

com.atproto.sync.subscribeRepos#account

Represents a change to an account's status on a host (eg, PDS or Relay). The semantics of this event are that the status is at the host which emitted the event, not necessarily that at the currently active PDS. Eg, a Relay takedown would emit a takedown with active=false, even if the PDS is still active.

seqrequired
integer
integer
didrequired
string
format=did
timerequired
string
format=datetime
activerequired
boolean

Indicates that the account has a repository which can be fetched from the host that emitted this event.

status
string

If active=false, this optional field indicates a reason for why the account is not active.

knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'desynchronized', 'throttled']
object

com.atproto.sync.subscribeRepos#commit

Represents an update of repository state. Note that empty commits are allowed, which include no repo data changes, but an update to rev and signature.

seqrequired
integer
integer

The stream sequence number of this message.

rebaserequired
boolean

DEPRECATED -- unused

tooBigrequired
boolean

DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data.

reporequired
string

The repo this event comes from. Note that all other message types name this field 'did'.

format=did
commitrequired
cid-link

Repo commit object CID.

revrequired
string

The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.

format=tid
sincenullable required
string

The rev of the last emitted commit from this repo (if any).

format=tid
blocksrequired
bytes

CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.

maxLength=2000000
opsrequired
array
items=
ref

List of repo mutation operations in this commit (eg, records created, updated, or deleted).

ref=#repoOp
maxLength=200
blobsrequired
array
items=
cid-link

DEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit.

prevData
cid-link

The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.

timerequired
string

Timestamp of when this message was originally broadcast.

format=datetime
object

com.atproto.sync.subscribeRepos#handle

DEPRECATED -- Use #identity event instead

seqrequired
integer
integer
didrequired
string
format=did
handlerequired
string
format=handle
timerequired
string
format=datetime
object

com.atproto.sync.subscribeRepos#identity

Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache.

seqrequired
integer
integer
didrequired
string
format=did
timerequired
string
format=datetime
handle
string

The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.

format=handle
object

com.atproto.sync.subscribeRepos#info

namerequired
string
knownValues=['OutdatedCursor']
message
string
object

com.atproto.sync.subscribeRepos#migrate

DEPRECATED -- Use #account event instead

seqrequired
integer
integer
didrequired
string
format=did
migrateTonullable required
string
timerequired
string
format=datetime
object

com.atproto.sync.subscribeRepos#repoOp

A repo operation, ie a mutation of a single record.

actionrequired
string
knownValues=['create', 'update', 'delete']
pathrequired
string
cidnullable required
cid-link

For creates and updates, the new record CID. For deletions, null.

prev
cid-link

For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.

object

com.atproto.sync.subscribeRepos#sync

Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository.

seqrequired
integer
integer

The stream sequence number of this message.

didrequired
string

The account this repo event corresponds to. Must match that in the commit object.

format=did
blocksrequired
bytes

CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.

maxLength=10000
revrequired
string

The rev of the commit. This value must match that in the commit object.

timerequired
string

Timestamp of when this message was originally broadcast.

format=datetime
object

com.atproto.sync.subscribeRepos#tombstone

DEPRECATED -- Use #account event instead

seqrequired
integer
integer
didrequired
string
format=did
timerequired
string
format=datetime
procedure

com.atproto.temp.addReservedHandle

Add a handle to the set of reserved handles.

input:
encoding: application/json
handlerequired
string
output:
encoding: application/json
()
query

com.atproto.temp.checkSignupQueue

Check accounts location in signup queue.

output:
encoding: application/json
activatedrequired
boolean
placeInQueue
integer
integer
estimatedTimeMs
integer
integer
query

com.atproto.temp.fetchLabels

DEPRECATED: use queryLabels or subscribeLabels instead -- Fetch all labels from a labeler created after a certain date.

parameters:
since
integer
integer
limit
integer
integer
minimum=1 maximum=250 default=50
output:
encoding: application/json
labelsrequired
procedure

com.atproto.temp.requestPhoneVerification

Request a verification code to be sent to the supplied phone number

input:
encoding: application/json
phoneNumberrequired
string
procedure

tools.ozone.communication.createTemplate

Administrative action to create a new, re-usable communication (email for now) template.

input:
encoding: application/json
namerequired
string

Name of the template.

contentMarkdownrequired
string

Content of the template, markdown supported, can contain variable placeholders.

subjectrequired
string

Subject of the message, used in emails.

lang
string

Message language.

format=language
createdBy
string

DID of the user who is creating the template.

format=did
output:
encoding: application/json
errors:
  • DuplicateTemplateName
object

tools.ozone.communication.defs#templateView

idrequired
string
namerequired
string

Name of the template.

subject
string

Content of the template, can contain markdown and variable placeholders.

contentMarkdownrequired
string

Subject of the message, used in emails.

disabledrequired
boolean
lang
string

Message language.

format=language
lastUpdatedByrequired
string

DID of the user who last updated the template.

format=did
createdAtrequired
string
format=datetime
updatedAtrequired
string
format=datetime
procedure

tools.ozone.communication.deleteTemplate

Delete a communication template.

input:
encoding: application/json
idrequired
string
query

tools.ozone.communication.listTemplates

Get list of all communication templates.

output:
encoding: application/json
communicationTemplatesrequired
procedure

tools.ozone.communication.updateTemplate

Administrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.

input:
encoding: application/json
idrequired
string

ID of the template to be updated.

name
string

Name of the template.

lang
string

Message language.

format=language
contentMarkdown
string

Content of the template, markdown supported, can contain variable placeholders.

subject
string

Subject of the message, used in emails.

updatedBy
string

DID of the user who is updating the template.

format=did
disabled
boolean
output:
encoding: application/json
errors:
  • DuplicateTemplateName
object

tools.ozone.moderation.defs#accountEvent

Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.

comment
string
activerequired
boolean

Indicates that the account has a repository which can be fetched from the host that emitted this event.

status
string
knownValues=['unknown', 'deactivated', 'deleted', 'takendown', 'suspended', 'tombstoned']
timestamprequired
string
format=datetime
object

tools.ozone.moderation.defs#accountHosting

statusrequired
string
knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'unknown']
updatedAt
string
format=datetime
createdAt
string
format=datetime
deletedAt
string
format=datetime
deactivatedAt
string
format=datetime
reactivatedAt
string
format=datetime
object

tools.ozone.moderation.defs#accountStats

Statistics about a particular account subject

reportCount
integer
integer

Total number of reports on the account

appealCount
integer
integer

Total number of appeals against a moderation action on the account

suspendCount
integer
integer

Number of times the account was suspended

escalateCount
integer
integer

Number of times the account was escalated

takedownCount
integer
integer

Number of times the account was taken down

object

tools.ozone.moderation.defs#blobView

cidrequired
string
format=cid
mimeTyperequired
string
sizerequired
integer
integer
createdAtrequired
string
format=datetime
moderation
object

tools.ozone.moderation.defs#identityEvent

Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.

comment
string
handle
string
format=handle
pdsHost
string
format=uri
tombstone
boolean
timestamprequired
string
format=datetime
object

tools.ozone.moderation.defs#imageDetails

widthrequired
integer
integer
heightrequired
integer
integer
object

tools.ozone.moderation.defs#modEventAcknowledge

comment
string
acknowledgeAccountSubjects
boolean

If true, all other reports on content authored by this account will be resolved (acknowledged).

object

tools.ozone.moderation.defs#modEventComment

Add a comment to a subject. An empty comment will clear any previously set sticky comment.

comment
string
sticky
boolean

Make the comment persistent on the subject

object

tools.ozone.moderation.defs#modEventDivert

Divert a record's blobs to a 3rd party service for further scanning/tagging

comment
string
object

tools.ozone.moderation.defs#modEventEmail

Keep a log of outgoing email to a user

subjectLinerequired
string

The subject line of the email sent to the user.

content
string

The content of the email sent to the user.

comment
string

Additional comment about the outgoing comm.

object

tools.ozone.moderation.defs#modEventEscalate

comment
string
object

tools.ozone.moderation.defs#modEventLabel

Apply/Negate labels on a subject

comment
string
createLabelValsrequired
array
items=
string
negateLabelValsrequired
array
items=
string
durationInHours
integer
integer

Indicates how long the label will remain on the subject. Only applies on labels that are being added.

object

tools.ozone.moderation.defs#modEventMute

Mute incoming reports on a subject

comment
string
durationInHoursrequired
integer
integer

Indicates how long the subject should remain muted.

object

tools.ozone.moderation.defs#modEventMuteReporter

Mute incoming reports from an account

comment
string
durationInHours
integer
integer

Indicates how long the account should remain muted. Falsy value here means a permanent mute.

object

tools.ozone.moderation.defs#modEventPriorityScore

Set priority score of the subject. Higher score means higher priority.

comment
string
scorerequired
integer
integer
maximum=100
object

tools.ozone.moderation.defs#modEventReport

Report a subject

comment
string
isReporterMuted
boolean

Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject.

object

tools.ozone.moderation.defs#modEventResolveAppeal

Resolve appeal on a subject

comment
string

Describe resolution.

object

tools.ozone.moderation.defs#modEventReverseTakedown

Revert take down action on a subject

comment
string

Describe reasoning behind the reversal.

object

tools.ozone.moderation.defs#modEventTag

Add/Remove a tag on a subject

addrequired
array

Tags to be added to the subject. If already exists, won't be duplicated.

items=
string
removerequired
array

Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.

items=
string
comment
string

Additional comment about added/removed tags.

object

tools.ozone.moderation.defs#modEventTakedown

Take down a subject permanently or temporarily

comment
string
durationInHours
integer
integer

Indicates how long the takedown should be in effect before automatically expiring.

acknowledgeAccountSubjects
boolean

If true, all other reports on content authored by this account will be resolved (acknowledged).

policies
array

Names/Keywords of the policies that drove the decision.

items=
string
maxLength=5
object

tools.ozone.moderation.defs#modEventUnmute

Unmute action on a subject

comment
string

Describe reasoning behind the reversal.

object

tools.ozone.moderation.defs#modEventUnmuteReporter

Unmute incoming reports from an account

comment
string

Describe reasoning behind the reversal.

object

tools.ozone.moderation.defs#modEventView

object

tools.ozone.moderation.defs#modEventViewDetail

object

tools.ozone.moderation.defs#moderation

subjectStatus
object

tools.ozone.moderation.defs#moderationDetail

subjectStatus
object

tools.ozone.moderation.defs#recordEvent

Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.

comment
string
oprequired
string
knownValues=['create', 'update', 'delete']
cid
string
format=cid
timestamprequired
string
format=datetime
object

tools.ozone.moderation.defs#recordHosting

statusrequired
string
knownValues=['deleted', 'unknown']
updatedAt
string
format=datetime
createdAt
string
format=datetime
deletedAt
string
format=datetime
object

tools.ozone.moderation.defs#recordView

urirequired
string
format=at-uri
cidrequired
string
format=cid
valuerequired
unknown
blobCidsrequired
array
items=
string
format=cid
indexedAtrequired
string
format=datetime
moderationrequired
reporequired
object

tools.ozone.moderation.defs#recordViewDetail

urirequired
string
format=at-uri
cidrequired
string
format=cid
valuerequired
unknown
blobsrequired
array
items=
labels
indexedAtrequired
string
format=datetime
moderationrequired
reporequired
object

tools.ozone.moderation.defs#recordViewNotFound

urirequired
string
format=at-uri
object

tools.ozone.moderation.defs#recordsStats

Statistics about a set of record subject items

totalReports
integer
integer

Cumulative sum of the number of reports on the items in the set

reportedCount
integer
integer

Number of items that were reported at least once

escalatedCount
integer
integer

Number of items that were escalated at least once

appealedCount
integer
integer

Number of items that were appealed at least once

subjectCount
integer
integer

Total number of item in the set

pendingCount
integer
integer

Number of item currently in "reviewOpen" or "reviewEscalated" state

processedCount
integer
integer

Number of item currently in "reviewNone" or "reviewClosed" state

takendownCount
integer
integer

Number of item currently taken down

object

tools.ozone.moderation.defs#repoView

didrequired
string
format=did
handlerequired
string
format=handle
email
string
relatedRecordsrequired
array
items=
unknown
indexedAtrequired
string
format=datetime
moderationrequired
invitesDisabled
boolean
inviteNote
string
deactivatedAt
string
format=datetime
threatSignatures
object

tools.ozone.moderation.defs#repoViewDetail

didrequired
string
format=did
handlerequired
string
format=handle
email
string
relatedRecordsrequired
array
items=
unknown
indexedAtrequired
string
format=datetime
moderationrequired
labels
invites
invitesDisabled
boolean
inviteNote
string
emailConfirmedAt
string
format=datetime
deactivatedAt
string
format=datetime
threatSignatures
object

tools.ozone.moderation.defs#repoViewNotFound

didrequired
string
format=did
object

tools.ozone.moderation.defs#reporterStats

didrequired
string
format=did
accountReportCountrequired
integer
integer

The total number of reports made by the user on accounts.

recordReportCountrequired
integer
integer

The total number of reports made by the user on records.

reportedAccountCountrequired
integer
integer

The total number of accounts reported by the user.

reportedRecordCountrequired
integer
integer

The total number of records reported by the user.

takendownAccountCountrequired
integer
integer

The total number of accounts taken down as a result of the user's reports.

takendownRecordCountrequired
integer
integer

The total number of records taken down as a result of the user's reports.

labeledAccountCountrequired
integer
integer

The total number of accounts labeled as a result of the user's reports.

labeledRecordCountrequired
integer
integer

The total number of records labeled as a result of the user's reports.

token

tools.ozone.moderation.defs#reviewClosed

Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator

token

tools.ozone.moderation.defs#reviewEscalated

Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator

token

tools.ozone.moderation.defs#reviewNone

Moderator review status of a subject: Unnecessary. Indicates that the subject does not need a review at the moment but there is probably some moderation related metadata available for it

token

tools.ozone.moderation.defs#reviewOpen

Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator

string

tools.ozone.moderation.defs#subjectReviewState

knownValues=['#reviewOpen', '#reviewEscalated', '#reviewClosed', '#reviewNone']
object

tools.ozone.moderation.defs#subjectStatusView

idrequired
integer
integer
subjectBlobCids
array
items=
string
format=cid
subjectRepoHandle
string
updatedAtrequired
string

Timestamp referencing when the last update was made to the moderation status of the subject

format=datetime
createdAtrequired
string

Timestamp referencing the first moderation status impacting event was emitted on the subject

format=datetime
reviewStaterequired
comment
string

Sticky comment on the subject.

priorityScore
integer
integer

Numeric value representing the level of priority. Higher score means higher priority.

maximum=100
muteUntil
string
format=datetime
muteReportingUntil
string
format=datetime
lastReviewedBy
string
format=did
lastReviewedAt
string
format=datetime
lastReportedAt
string
format=datetime
lastAppealedAt
string

Timestamp referencing when the author of the subject appealed a moderation action

format=datetime
takendown
boolean
appealed
boolean

True indicates that the a previously taken moderator action was appealed against, by the author of the content. False indicates last appeal was resolved by moderators.

suspendUntil
string
format=datetime
tags
array
items=
string
accountStats
ref

Statistics related to the account subject

ref=#accountStats
recordsStats
ref

Statistics related to the record subjects authored by the subject's account

ref=#recordsStats
object

tools.ozone.moderation.defs#videoDetails

widthrequired
integer
integer
heightrequired
integer
integer
lengthrequired
integer
integer
procedure

tools.ozone.moderation.emitEvent

Take a moderation action on an actor.

output:
encoding: application/json
errors:
  • SubjectHasAction
query

tools.ozone.moderation.getEvent

Get details about a moderation event.

parameters:
idrequired
integer
integer
output:
encoding: application/json
query

tools.ozone.moderation.getRecord

Get details about a record.

parameters:
urirequired
string
format=at-uri
cid
string
format=cid
output:
encoding: application/json
errors:
  • RecordNotFound
query

tools.ozone.moderation.getRecords

Get details about some records.

parameters:
urisrequired
array
items=
string
format=at-uri
maxLength=100
output:
encoding: application/json
query

tools.ozone.moderation.getRepo

Get details about a repository.

parameters:
didrequired
string
format=did
output:
encoding: application/json
errors:
  • RepoNotFound
query

tools.ozone.moderation.getReporterStats

Get reporter stats for a list of users.

parameters:
didsrequired
array
items=
string
format=did
maxLength=100
output:
encoding: application/json
statsrequired
query

tools.ozone.moderation.getRepos

Get details about some repositories.

parameters:
didsrequired
array
items=
string
format=did
maxLength=100
output:
encoding: application/json
query

tools.ozone.moderation.queryEvents

List moderation events related to a subject.

parameters:
types
array

The types of events (fully qualified string in the format of tools.ozone.moderation.defs#modEvent) to filter by. If not specified, all events are returned.

items=
string
createdBy
string
format=did
sortDirection
string

Sort direction for the events. Defaults to descending order of created at timestamp.

enum=['asc', 'desc'] default=desc
createdAfter
string

Retrieve events created after a given timestamp

format=datetime
createdBefore
string

Retrieve events created before a given timestamp

format=datetime
subject
string
format=uri
collections
array

If specified, only events where the subject belongs to the given collections will be returned. When subjectType is set to 'account', this will be ignored.

items=
string
format=nsid
maxLength=20
subjectType
string

If specified, only events where the subject is of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.

knownValues=['account', 'record']
includeAllUserRecords
boolean

If true, events on all record types (posts, lists, profile etc.) or records from given 'collections' param, owned by the did are returned.

limit
integer
integer
minimum=1 maximum=100 default=50
hasComment
boolean

If true, only events with comments are returned

comment
string

If specified, only events with comments containing the keyword are returned. Apply || separator to use multiple keywords and match using OR condition.

addedLabels
array

If specified, only events where all of these labels were added are returned

items=
string
removedLabels
array

If specified, only events where all of these labels were removed are returned

items=
string
addedTags
array

If specified, only events where all of these tags were added are returned

items=
string
removedTags
array

If specified, only events where all of these tags were removed are returned

items=
string
reportTypes
array
items=
string
policies
array
items=
string

If specified, only events where the action policies match any of the given policies are returned

cursor
string
output:
encoding: application/json
cursor
string
eventsrequired
query

tools.ozone.moderation.queryStatuses

View moderation statuses of subjects (record or repo).

parameters:
queueCount
integer
integer

Number of queues being used by moderators. Subjects will be split among all queues.

queueIndex
integer
integer

Index of the queue to fetch subjects from. Works only when queueCount value is specified.

queueSeed
string

A seeder to shuffle/balance the queue items.

includeAllUserRecords
boolean

All subjects, or subjects from given 'collections' param, belonging to the account specified in the 'subject' param will be returned.

subject
string

The subject to get the status for.

format=uri
comment
string

Search subjects by keyword from comments

reportedAfter
string

Search subjects reported after a given timestamp

format=datetime
reportedBefore
string

Search subjects reported before a given timestamp

format=datetime
reviewedAfter
string

Search subjects reviewed after a given timestamp

format=datetime
hostingDeletedAfter
string

Search subjects where the associated record/account was deleted after a given timestamp

format=datetime
hostingDeletedBefore
string

Search subjects where the associated record/account was deleted before a given timestamp

format=datetime
hostingUpdatedAfter
string

Search subjects where the associated record/account was updated after a given timestamp

format=datetime
hostingUpdatedBefore
string

Search subjects where the associated record/account was updated before a given timestamp

format=datetime
hostingStatuses
array

Search subjects by the status of the associated record/account

items=
string
reviewedBefore
string

Search subjects reviewed before a given timestamp

format=datetime
includeMuted
boolean

By default, we don't include muted subjects in the results. Set this to true to include them.

onlyMuted
boolean

When set to true, only muted subjects and reporters will be returned.

reviewState
string

Specify when fetching subjects in a certain state

ignoreSubjects
array
items=
string
format=uri
lastReviewedBy
string

Get all subject statuses that were reviewed by a specific moderator

format=did
sortField
string
enum=['lastReviewedAt', 'lastReportedAt', 'reportedRecordsCount', 'takendownRecordsCount', 'priorityScore'] default=lastReportedAt
sortDirection
string
enum=['asc', 'desc'] default=desc
takendown
boolean

Get subjects that were taken down

appealed
boolean

Get subjects in unresolved appealed status

limit
integer
integer
minimum=1 maximum=100 default=50
tags
array
items=
string

Items in this array are applied with OR filters. To apply AND filter, put all tags in the same string and separate using && characters

maxLength=25
excludeTags
array
items=
string
cursor
string
collections
array

If specified, subjects belonging to the given collections will be returned. When subjectType is set to 'account', this will be ignored.

items=
string
format=nsid
maxLength=20
subjectType
string

If specified, subjects of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.

knownValues=['account', 'record']
minAccountSuspendCount
integer
integer

If specified, only subjects that belong to an account that has at least this many suspensions will be returned.

minReportedRecordsCount
integer
integer

If specified, only subjects that belong to an account that has at least this many reported records will be returned.

minTakendownRecordsCount
integer
integer

If specified, only subjects that belong to an account that has at least this many taken down records will be returned.

minPriorityScore
integer
integer

If specified, only subjects that have priority score value above the given value will be returned.

maximum=100
output:
encoding: application/json
cursor
string
subjectStatusesrequired
query

tools.ozone.moderation.searchRepos

Find repositories based on a search term.

parameters:
term
string

DEPRECATED: use 'q' instead

q
string
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
reposrequired
query

tools.ozone.server.getConfig

Get details about ozone's server configuration.

output:
encoding: application/json
appview
blobDivert
viewer
object

tools.ozone.server.getConfig#serviceConfig

url
string
format=uri
object

tools.ozone.server.getConfig#viewerConfig

role
string
knownValues=['tools.ozone.team.defs#roleAdmin', 'tools.ozone.team.defs#roleModerator', 'tools.ozone.team.defs#roleTriage']
procedure

tools.ozone.set.addValues

Add values to a specific set. Attempting to add values to a set that does not exist will result in an error.

input:
encoding: application/json
namerequired
string

Name of the set to add values to

valuesrequired
array

Array of string values to add to the set

items=
string
minLength=1 maxLength=1000
object

tools.ozone.set.defs#set

namerequired
string
minLength=3 maxLength=128
description
string
maxLength=10240 maxGraphemes=1024
object

tools.ozone.set.defs#setView

namerequired
string
minLength=3 maxLength=128
description
string
maxLength=10240 maxGraphemes=1024
setSizerequired
integer
integer
createdAtrequired
string
format=datetime
updatedAtrequired
string
format=datetime
procedure

tools.ozone.set.deleteSet

Delete an entire set. Attempting to delete a set that does not exist will result in an error.

input:
encoding: application/json
namerequired
string

Name of the set to delete

output:
encoding: application/json
()
errors:
  • SetNotFound - set with the given name does not exist
procedure

tools.ozone.set.deleteValues

Delete values from a specific set. Attempting to delete values that are not in the set will not result in an error

input:
encoding: application/json
namerequired
string

Name of the set to delete values from

valuesrequired
array

Array of string values to delete from the set

items=
string
minLength=1
errors:
  • SetNotFound - set with the given name does not exist
query

tools.ozone.set.getValues

Get a specific set and its values

parameters:
namerequired
string
limit
integer
integer
minimum=1 maximum=1000 default=100
cursor
string
output:
encoding: application/json
valuesrequired
array
items=
string
cursor
string
errors:
  • SetNotFound - set with the given name does not exist
query

tools.ozone.set.querySets

Query available sets

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
namePrefix
string
sortBy
string
enum=['name', 'createdAt', 'updatedAt'] default=name
sortDirection
string

Defaults to ascending order of name field.

enum=['asc', 'desc'] default=asc
output:
encoding: application/json
setsrequired
cursor
string
procedure

tools.ozone.set.upsertSet

Create or update set metadata

input:
encoding: application/json
output:
encoding: application/json
object

tools.ozone.setting.defs#option

keyrequired
string
format=nsid
didrequired
string
format=did
valuerequired
unknown
description
string
maxLength=10240 maxGraphemes=1024
createdAt
string
format=datetime
updatedAt
string
format=datetime
managerRole
string
knownValues=['tools.ozone.team.defs#roleModerator', 'tools.ozone.team.defs#roleTriage', 'tools.ozone.team.defs#roleAdmin']
scoperequired
string
knownValues=['instance', 'personal']
createdByrequired
string
format=did
lastUpdatedByrequired
string
format=did
query

tools.ozone.setting.listOptions

List settings with optional filtering

parameters:
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
scope
string
knownValues=['instance', 'personal'] default=instance
prefix
string

Filter keys by prefix

keys
array

Filter for only the specified keys. Ignored if prefix is provided

items=
string
format=nsid
maxLength=100
output:
encoding: application/json
cursor
string
optionsrequired
procedure

tools.ozone.setting.removeOptions

Delete settings by key

input:
encoding: application/json
keysrequired
array
items=
string
format=nsid
minLength=1 maxLength=200
scoperequired
string
knownValues=['instance', 'personal']
output:
encoding: application/json
()
procedure

tools.ozone.setting.upsertOption

Create or update setting option

input:
encoding: application/json
keyrequired
string
format=nsid
scoperequired
string
knownValues=['instance', 'personal']
valuerequired
unknown
description
string
maxLength=2000
managerRole
string
knownValues=['tools.ozone.team.defs#roleModerator', 'tools.ozone.team.defs#roleTriage', 'tools.ozone.team.defs#roleAdmin']
output:
encoding: application/json
object

tools.ozone.signature.defs#sigDetail

propertyrequired
string
valuerequired
string
query

tools.ozone.signature.findCorrelation

Find all correlated threat signatures between 2 or more accounts.

parameters:
didsrequired
array
items=
string
format=did
output:
encoding: application/json
detailsrequired
query

tools.ozone.signature.findRelatedAccounts

Get accounts that share some matching threat signatures with the root account.

parameters:
didrequired
string
format=did
cursor
string
limit
integer
integer
minimum=1 maximum=100 default=50
output:
encoding: application/json
cursor
string
accountsrequired
array
object

tools.ozone.signature.findRelatedAccounts#relatedAccount

similarities
query

tools.ozone.signature.searchAccounts

Search for accounts that match one or more threat signature values.

parameters:
valuesrequired
array
items=
string
cursor
string
limit
integer
integer
minimum=1 maximum=100 default=50
output:
encoding: application/json
cursor
string
accountsrequired
procedure

tools.ozone.team.addMember

Add a member to the ozone team. Requires admin role.

input:
encoding: application/json
didrequired
string
format=did
rolerequired
string
knownValues=['tools.ozone.team.defs#roleAdmin', 'tools.ozone.team.defs#roleModerator', 'tools.ozone.team.defs#roleTriage']
output:
encoding: application/json
errors:
  • MemberAlreadyExists - Member already exists in the team.
object

tools.ozone.team.defs#member

didrequired
string
format=did
disabled
boolean
createdAt
string
format=datetime
updatedAt
string
format=datetime
lastUpdatedBy
string
rolerequired
string
knownValues=['#roleAdmin', '#roleModerator', '#roleTriage']
token

tools.ozone.team.defs#roleAdmin

Admin role. Highest level of access, can perform all actions.

token

tools.ozone.team.defs#roleModerator

Moderator role. Can perform most actions.

token

tools.ozone.team.defs#roleTriage

Triage role. Mostly intended for monitoring and escalating issues.

procedure

tools.ozone.team.deleteMember

Delete a member from ozone team. Requires admin role.

input:
encoding: application/json
didrequired
string
format=did
errors:
  • MemberNotFound - The member being deleted does not exist
  • CannotDeleteSelf - You can not delete yourself from the team
query

tools.ozone.team.listMembers

List all members with access to the ozone service.

parameters:
disabled
boolean
roles
array
items=
string
limit
integer
integer
minimum=1 maximum=100 default=50
cursor
string
output:
encoding: application/json
cursor
string
membersrequired
procedure

tools.ozone.team.updateMember

Update a member in the ozone service. Requires admin role.

input:
encoding: application/json
didrequired
string
format=did
disabled
boolean
role
string
knownValues=['tools.ozone.team.defs#roleAdmin', 'tools.ozone.team.defs#roleModerator', 'tools.ozone.team.defs#roleTriage']
output:
encoding: application/json
errors:
  • MemberNotFound - The member being updated does not exist in the team