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

# The response envelope

> data, page, summary and meta: the four keys every response carries.

Every JSON response has the same shape. A single record carries `data` and `meta`. A list adds `page`, and some
lists add `summary`.

```json theme={null}
{
  "data": [],
  "page": { "next_cursor": "eyJ2IjoxLC...", "limit": 100, "returned": 100 },
  "summary": { "n_investors_ranked": 5813 },
  "meta": { "coverage": [], "terms": "..." }
}
```

| Key       | What it is                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`    | The answer: one record, or the rows of this page.                                                                                                                                                                                                                                                                                                                                                                                                         |
| `page`    | `next_cursor`, `limit` and `returned`. Pass `next_cursor` back as `cursor=`. It is null on the last page. A paged list carries no total. The name searches add `capped`. It is true when more names matched than `limit` allowed and the API cut the page at it. So a page with exactly `limit` hits and `capped: false` is the whole set. When `capped` is true, narrow with `market=` or a longer query. See [Pagination](/guides/concepts/pagination). |
| `summary` | Totals over the **whole** filtered set, not this page.                                                                                                                                                                                                                                                                                                                                                                                                    |
| `meta`    | Everything about the answer, not in it. The list below describes the parts.                                                                                                                                                                                                                                                                                                                                                                               |

Know five parts of `meta` before you read the field list:

* **`coverage[]`** is the markets that answered, the area each covers, and its as-of dates. `dataset_version` is
  your cache key. [Coverage and freshness](/guides/concepts/coverage) has the rules.
* **`geometry`** appears on every route that takes a location. It is the shape that ran, with the defaults filled. It
  carries the keys of the query: `kind`, `lat`, `lng`, `radius_miles`, `bbox`, `property_id`, `zip`, `city`. A key is
  null where the kind has no such value. Copy it back as the query to repeat the request. `reference_point` stays
  beside it as the point the API measures distances from.
  * A bare point carries the `radius_miles` that ran.
  * A `property_id` request reads as a `radius` around the parcel's centroid with `property_id` set.
  * A `bbox` is the parsed tuple.
  * The API echoes a `zip` list as sent, and a `city` as the folded upper-case value the API compared.
  * The lender routes echo a geometry, a `zip` or a `city` and never a `county`.
  * A county-only parcel search echoes nothing.
  * The property resolve echoes nothing. Its `lat` + `lng` is a hint for the nearest parcel, not an area that ran.
* **`dated[]`** appears only when the response carries a block that is a dated snapshot, not current data. Those
  blocks are the financing, lien and valuation blocks of the parcel routes. It has one entry per block, with its
  `as_of` date and the reason. Its presence is the test. [Dated data](/guides/concepts/dated-data) explains the rule
  and `require_current`.
* **`resolved_from`** appears when an id you sent was an old one from an earlier refresh: an investor, an agent or,
  since 0.17.0, a lender id. It lists the ids the API followed, in order. Store the current one.
* **`terms`** is a one-sentence attribution. Show it where you show the data.
  [Terms and attribution](/guides/terms) carries the terms in full.

An error replaces the whole envelope with an RFC 9457 problem body. Every code has its own section on the
[Errors](/guides/concepts/errors) page.


## Related topics

- [The response envelope](/guides/concepts/envelope.md)
- [Authentication](/guides/concepts/authentication.md)
- [API reference](/api-reference/introduction.md)
- [Introduction](/index.md)
- [Quickstart](/guides/quickstart.md)
