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

# Read the book version

> Whether anything was recorded about a Client since you last looked, from one statement, with nothing derived.

How far a Client's recorded facts reach: the latest moment anything was recorded about the Client — its Loans, every act and retraction on them, its Receipts and their reversals — and how many such facts there are. Nothing is derived to answer it; it is one statement.

Ask it **before** asking for anything else. A sweep over a portfolio reads each Client's version and asks for [the book](/api-reference/clients/book) or [the payment options](/api-reference/clients/payment-options) only where it moved. The dated reads' `ETag` is taken over the same version, with the date and the build answering, so a read sent with `If-None-Match` makes the same saving per request.

<Note>
  **Compare both fields.** A fact can be recorded a moment earlier than one already visible — two writes to one Client commit in the order they take the Client's turn, not the order they began. `facts` moves on every write, because nothing recorded is ever edited or removed.
</Note>

## Path parameters

<ParamField path="tenant_id" type="string" required>
  The Tenancy asking.
</ParamField>

<ParamField path="client_id" type="string" required>
  The Client.
</ParamField>

## Response

<ResponseField name="client_id" type="string" required>
  The Client.
</ResponseField>

<ResponseField name="version" type="string">
  RFC 3339 in UTC: the latest recording moment. Absent where nothing is recorded about the Client — which is an answer, not a refusal.
</ResponseField>

<ResponseField name="facts" type="integer" required>
  How many recorded facts the version is taken over.
</ResponseField>

| Moves the version | Does not |
| - | - |
| An issuance, any act on a Loan, a retraction | Any read |
| A Receipt, a reversal | A [recorded payoff quote](/api-reference/loans/record-payoff-quote) — it enters no derivation |

<RequestExample>
  ```bash Read theme={null}
  curl "https://api.capcells.com/v1/tenants/$TENANT_ID/clients/c-0001/book-version" \
    -H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET "/v1/tenants/$TENANT_ID/clients/c-0001/book-version")"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "client_id": "c-0001",
    "version": "2026-04-20T15:02:11.481930Z",
    "facts": 7
  }
  ```

  ```json 200 Nothing recorded theme={null}
  {
    "client_id": "c-0002",
    "facts": 0
  }
  ```
</ResponseExample>


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