Unauthenticated
The server could not tell who is calling.
Why it happens
- The request carries no credentials, or they have expired.
- A capability token was edited, is signed with another secret, or has expired.
- A command carried an idempotency key but nobody is signed in: a replay record is scoped to the caller it belongs to, so it needs one.
- An upload was sent with nobody signed in. An open upload route would let anyone fill your storage with nothing to trace it to.
What to do
- Sign in again or refresh the token, then repeat the request. A command keeps its idempotency key, so repeating it is safe.
What it looks like
Inside a batch, the operation's frame carries it:
json
{
"id": 1,
"error": {
"code": "unauthenticated",
"message": "Capability has expired"
},
"fin": true
}retryable appears only where it differs from the code's default, which is the one at the top of this page.
When the whole request is refused over HTTP, the answer is a problem document:
json
{
"type": "https://eddyboutros.github.io/rayfold/errors/unauthenticated",
"title": "unauthenticated",
"status": 401,
"detail": "Capability has expired",
"code": "unauthenticated"
}See also all error types and the errors chapter of the specification.