> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kirafin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# The capability grant object

> One event in whether a sub-client holds a capability: granted, or taken back.

A capability grant records that a sub-client was granted a capability, or lost it. Each capability a sub-client has held has its own chain of events, and the newest one says where it stands now.

## Example

```json theme={null}
{
  "id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
  "user_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "capability": "pobo",
  "kind": "feature",
  "status": "granted",
  "request_id": "5d2e8f14-7a3b-4c6d-9e1f-2a3b4c5d6e7f",
  "decided_at": "2026-10-20T09:12:44.103Z",
  "source": "recorded"
}
```

## Fields

| Field | Type | Description |
| - | - | - |
| `id` | string or `null` | The event's identifier. `null` when `source` is `projected`. |
| `user_id` | string, uuid | The sub-client the event is about. |
| `capability` | string | The capability's `code`. [Values](https://docs.kirafin.ai/reference/capabilities/values.md#code) |
| `kind` | string | Whether it is a feature or a bank. [Values](https://docs.kirafin.ai/reference/capabilities/values.md#kind) |
| `status` | string | `granted` or `revoked`. [Values](https://docs.kirafin.ai/reference/capabilities/values.md#grant-status) |
| `request_id` | string or `null` | The [capability request](https://docs.kirafin.ai/reference/capabilities/the-capability-request-object.md) whose approval granted it. `null` on a bank. |
| `decided_at` | string, date-time or `null` | When the event happened, ISO 8601. `null` when `source` is `projected`. |
| `source` | string | Whether Kira stored the event or worked it out on this read. [Values](https://docs.kirafin.ai/reference/capabilities/values.md#grant-source) |

## Feature grants and bank grants

A **feature** is granted when compliance approves its request. That event, and a later revocation, are stored, so they carry an `id`, a `request_id` and a `decided_at`.

A **bank** is read from the sub-client's verification for that bank each time you list grants. A sub-client the bank approved gets one `granted` event with `source: "projected"`, and `null` in `id`, `request_id` and `decided_at`. For `jp_morgan`, that takes one more condition: the sub-client declared `jp_morgan`, or declared no bank at all. A sub-client the bank has not approved, or is still reviewing, gets no event for it. A bank with no event means the sub-client does not hold it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.