# forbidden

> The credential is valid but may not do this: the key lacks a scope, is bound to another project, or the operation takes another kind of credential.

HTTP `403` · `retryable` is `false`

Kabu knows who is calling, and the answer is no: the key lacks a scope the operation needs (the hint names it), it is
bound to a different project or agent, a test key called a live-only operation, or `urgent` priority was used without
the `messages:urgent` scope.

**What to do:** use a key that holds the scope, or one for the right project; see
[Keys and scopes](/docs/concepts/keys). Each operation in the [reference](/docs/api/messages) lists its scopes.

## The response

Every error comes as `application/problem+json`; [Errors](/docs/errors) explains each field.

```json
{
  "type": "https://usekabu.com/docs/errors/forbidden",
  "title": "Forbidden",
  "status": 403,
  "code": "forbidden",
  "detail": "…",
  "hint": "…",
  "retryable": false,
  "request_id": "req_…",
  "doc_url": "https://usekabu.com/docs/errors/forbidden"
}
```
