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

# Filtering: Rows and Columns

> How to filter rows via query parameters, and how column-level access is controlled per API key in the Data API.

The Data API has two independent filtering axes: which **rows** come back, controlled by you via query parameters, and which **columns** come back, controlled by an admin per API key.

## Row filtering (horizontal)

Category endpoints accept query parameters named after the columns you can filter on — each one does an exact match. Which columns are filterable varies per endpoint; check the **API Reference** tab for the exact list on the endpoint you're calling.

```text theme={null}
GET /v1/property/properties?city=Berlin&use_type=Wohnen
GET /v1/contracts/contract_ends?property_id=1234
```

There is no range, wildcard, or `OR` syntax — a query parameter matches rows where that column equals the given value exactly. To narrow further, combine multiple parameters; they are ANDed together.

### Required filters

Filters are optional on almost every endpoint, but a few require one and reject a request that omits it with `400 Bad Request`:

```json theme={null}
{ "detail": "Missing required filter(s): ['property_id']" }
```

`/v1/contracts/contract_ends` is the current case — it always needs a `property_id`. Required parameters are marked as required per endpoint in the **API Reference** tab, so check there rather than assuming an unfiltered call will work.

> [!NOTE]
>
> Raw endpoints (`/v1/raw/{table_name}`) do not support these filters — they always return the full unfiltered table, paginated via cursor. See [Endpoint Types](https://docs.trassets.ai/v1/concepts/endpoint-types.md).

## Column filtering (vertical)

Which fields an entity's response includes can be restricted per API key. An admin configures this in the Trassets portal, per key and per entity — a key without explicit configuration returns the full column set documented in the **API Reference**. Changes take effect within about a minute, because permissions are cached for up to 60 seconds.

This is not something you control via the request itself — there is no `fields` or `select` query parameter. If a field you expect is missing from a response even though it's listed in the API Reference for that entity, your API key's column configuration is the likely cause; contact Trassets support to review or change it. Fields with personal data additionally require a [grant](https://docs.trassets.ai/v1/authentication.md#personal-data-grants).


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