Hand bard a delegation token so it can keep reading a space. Any member may grant; the calling identity must be the token's issuer. Bard exchanges it under its own key, stores the credential, renews the notification registration when due, drains a queued receipt, and runs a head check if the space had lapsed.
Input
application/jsondelegationToken
string
Required
A delegation token minted by the calling identity for this space; spent immediately and never stored.
space
stringat-uri
Required
An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).
Output
application/jsonaccessExpiresAt
stringdatetime
Required
When the credential bard now holds expires.
drained
integer
Required
Queued notification receipts turned into sync jobs by this grant.
registrationExpiresAt
stringdatetime
Optional
When bard's notification registration at the space host expires.
Errors
SpaceNotFound
Bard is not connected to that space; call connectSpace first. GrantIssuerMismatch
The delegation token's issuer is not the calling identity. GrantExpired
The delegation token is past its lifetime. GrantRefused
The space host refused the exchange. AppNotAllowed
The space's app access does not admit bard. SpacesDisabled
Space support is disabled on this deployment. Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"type": "procedure",
"input": {
"schema": {
"type": "object",
"required": [
"space",
"delegationToken"
],
"properties": {
"space": {
"type": "string",
"format": "at-uri"
},
"delegationToken": {
"type": "string",
"description": "A delegation token minted by the calling identity for this space; spent immediately and never stored."
}
}
},
"encoding": "application/json"
},
"errors": [
{
"name": "SpaceNotFound",
"description": "Bard is not connected to that space; call connectSpace first."
},
{
"name": "GrantIssuerMismatch",
"description": "The delegation token's issuer is not the calling identity."
},
{
"name": "GrantExpired",
"description": "The delegation token is past its lifetime."
},
{
"name": "GrantRefused",
"description": "The space host refused the exchange."
},
{
"name": "AppNotAllowed",
"description": "The space's app access does not admit bard."
},
{
"name": "SpacesDisabled",
"description": "Space support is disabled on this deployment."
}
],
"output": {
"schema": {
"type": "object",
"required": [
"accessExpiresAt",
"drained"
],
"properties": {
"drained": {
"type": "integer",
"description": "Queued notification receipts turned into sync jobs by this grant."
},
"accessExpiresAt": {
"type": "string",
"format": "datetime",
"description": "When the credential bard now holds expires."
},
"registrationExpiresAt": {
"type": "string",
"format": "datetime",
"description": "When bard's notification registration at the space host expires."
}
}
},
"encoding": "application/json"
},
"description": "Hand bard a delegation token so it can keep reading a space. Any member may grant; the calling identity must be the token's issuer. Bard exchanges it under its own key, stores the credential, renews the notification registration when due, drains a queued receipt, and runs a head check if the space had lapsed."
}