> ## 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 RFI object

A request for information is the compliance check asking for something rather than declining. It is raised against one sub-client, it carries one or more **items**, and whatever it blocks stays blocked until it closes.

The item is the unit of work: each asks for its own thing, is answered on its own, and can be returned on its own without undoing the others.

## Example

```json theme={null}
{
  "rfi_id": "7f1c9a20-3b4d-4e5f-8a91-2c3d4e5f6a7b",
  "user_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "status": "pending",
  "due_at": "2026-09-15T23:59:59.000Z",
  "blocking": {
    "type": "transfer",
    "transfer_uuid": "99999999-aaaa-bbbb-cccc-dddddddddddd"
  },
  "resolution_reason": null,
  "created_at": "2026-09-01T12:00:00.000Z",
  "first_answered_at": null,
  "updated_at": null,
  "closed_at": null,
  "items": [ ... ]
}
```

## The request

| Field               | Type                        | Description                                                                                                       |
| ------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `rfi_id`            | string, uuid                | The request's identifier.                                                                                         |
| `user_id`           | string, uuid                | The sub-client it was raised against.                                                                             |
| `status`            | string                      | Where the request is. [Values](/reference/rfis/values#status)                                                     |
| `due_at`            | string, date-time           | When it stops being answerable.                                                                                   |
| `blocking`          | object or `null`            | What it is anchored to. [Values](/reference/rfis/values#blocking-type)                                            |
| `resolution_reason` | string or `null`            | Why it closed unsatisfied. `null` on any request that has not. [Values](/reference/rfis/values#resolution_reason) |
| `created_at`        | string, date-time           | When it was raised.                                                                                               |
| `first_answered_at` | string or `null`, date-time | When the first answer arrived.                                                                                    |
| `updated_at`        | string or `null`, date-time | When it last changed.                                                                                             |
| `closed_at`         | string or `null`, date-time | When it closed.                                                                                                   |
| `items`             | array                       | What is being asked.                                                                                              |

<Note>
  `blocking` says what is held, not which account. A request anchored to a transfer or a deposit names that movement; one about the sub-client itself is `null`.
</Note>

## An item

| Field          | Type                              | Description                                                                   |
| -------------- | --------------------------------- | ----------------------------------------------------------------------------- |
| `item_id`      | string, uuid                      | The item's identifier. What you answer against.                               |
| `ordinal`      | integer                           | Its position in the request.                                                  |
| `prompt`       | string                            | What is being asked, in words meant for a person.                             |
| `answer_type`  | string                            | What kind of answer it takes. [Values](/reference/rfis/values#answer_type)    |
| `answer_spec`  | object                            | The rules an answer is validated against, fixed per `answer_type`.            |
| `status`       | string                            | Whether this item is answered. [Values](/reference/rfis/values#item-status)   |
| `answer_value` | string, number, boolean or `null` | The answer recorded, for every type except `document`.                        |
| `documents`    | array                             | Files attached. Always present, and empty unless `answer_type` is `document`. |
| `target_key`   | string or `null`                  | The field on the sub-client this item fills in, when it maps to one.          |
| `subject`      | object or `null`                  | The person the item is about, when it is about one rather than the business.  |
| `review_note`  | string or `null`                  | Why an answer was not accepted. Present on a returned item.                   |
| `updated_at`   | string or `null`, date-time       | When the item last changed.                                                   |
| `returned_at`  | string or `null`, date-time       | When it was last sent back for another answer.                                |

<Warning>
  `answer_spec` is not a suggestion. It is the complete set of rules the item validates an answer against, and it is fixed by the `answer_type` — an answer that does not satisfy it is rejected rather than accepted and flagged.
</Warning>

## A document on an item

| Field         | Type              | Description                     |
| ------------- | ----------------- | ------------------------------- |
| `document_id` | string            | The file's identifier.          |
| `file_name`   | string            | The name it was uploaded under. |
| `mime_type`   | string            | Its type.                       |
| `size_bytes`  | integer           | Its size.                       |
| `checksum`    | string            | A digest of its contents.       |
| `uploaded_at` | string, date-time | When it was attached.           |

A file is fetched through a short-lived download link rather than served directly — the link expires, so request one when you need it rather than storing it.
