Skip to content

Scopes

A scope is a named permission carried by an access token. Each protected endpoint requires a specific scope; a request without it returns 403 insufficient_scope.

Scope reference

Most scopes act on behalf of a signed-in user and require a user-delegated token from the Authorization Code + PKCE flow of a login client.

ScopeGrantsEndpointsToken
remilia:stats.readRead the authenticated user's account statisticsGET /me/statsUser-delegated
remilia:notifications.readRead the authenticated user's notificationsGET /me/notificationsUser-delegated
remilia:pokes.writePoke other users, attributed to the authenticated userPOST /users/{handle}/pokeUser-delegated
remilia:beetle.readRead the authenticated user's Beetle game state and cardsGET /me/beetle, GET /me/beetle/cardsUser-delegated
remilia:chat.readRead global chat messagesGET /global-chat/messagesUser-delegated or app-only
remilia:chat.writePost to global chat as the authenticated userPOST /global-chat/messagesUser-delegated
remilia:directory.readResolve and enumerate public directory identitiesPOST /directory/resolve, GET /usersUser-delegated or app-only

Two endpoints need no remilia: scope:

Checking issued scopes

The token response's scope field is a space-delimited string.

json
{
  "scope": "openid remilia:stats.read remilia:pokes.write"
}

Errors

A valid token without the required scope returns:

json
{
  "error": {
    "code": "insufficient_scope",
    "message": "scope remilia:pokes.write required"
  }
}

A user-delegated endpoint called with an app-only token returns 403 requires_user. The token carries the scope but no user. Use a login client instead.

Built by Remilia Corporation