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

# Property Attributes & Query Builder

> Discover every property attribute, what it costs, and compose queries visually

## Overview

The property endpoints serve several hundred attributes, selected with the `attributes` parameter as dotted paths:

```json theme={null}
{
  "area": [{ "type": "postcode", "value": "SW1A" }],
  "attributes": ["address", "epc.rating.current.band", "pricing.currentSale"],
  "limit": 25
}
```

Two tools tell you exactly what is available:

* **The attribute catalogue** — `GET /v1/property/attributes`, a free, machine-readable list of every attribute.
* **The query builder** — a visual composer in the [dashboard](https://app.vepler.com/dashboard/query-builder) that shows live per-record cost as you pick attributes and generates the request for you.

## The attribute catalogue

```bash theme={null}
curl https://api.vepler.com/v1/property/attributes \
  -H "x-api-key: $VEPLER_API_KEY"
```

The response covers, for every attribute:

| Field                | Meaning                                  |
| -------------------- | ---------------------------------------- |
| `path`               | The dotted path accepted by `attributes` |
| `type`               | JSON type of the value                   |
| `tier`               | The billing tier requesting it triggers  |
| `requiresPermission` | Extended permission needed, or `null`    |

Plus the request vocabulary for `POST /v1/property/query`:

* `filterFields` — the whitelisted aliases accepted by `query[].groups[].conditions[].field`. **Filtering uses different names from attribute paths** — you project `roomDetails.beds` but filter on `beds`. Fields outside this list are rejected.
* `sortFields` — the fields accepted by `sort[].field`.
* `comparators` — the operators accepted by conditions.
* `tiers` — credit price per tier, and `pencePerCredit` to convert to GBP.
* `grantedPermissions` — the extended permissions your key holds. Attributes gated behind a permission you do not hold are silently omitted from responses, never a `403`.

The catalogue endpoint is free to call and safe to cache.

## Cost model

Attributes are priced in cumulative tiers, per property record returned. Requesting anything beyond the core identity/address set triggers the corresponding tier; any paid tier also charges Property detail, and Core is always charged. The catalogue's `tiers` array carries the current credit prices — or open the query builder to see the total move as you select.

## Requesting whole groups

A parent path serves the entire object beneath it — `"attributes": ["epc"]` returns the full EPC block. The query builder does this automatically when you select every field in a group.
