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

# Filtering

> The filters bills, documents, events, and transcripts share, including filtering by what PolicyMate recommended to your workspaces.

Bills, documents, events, and transcripts are filtered the same way. Each list endpoint accepts the shared filters below, along with a few filters of its own, such as `introduced_after` for bills or `starts_after` for events, which are listed on each resource's page.

## Combining Filters

You may combine any number of filters. A record must match every filter you pass. Filters marked as accepting a list take comma-separated values, in which case a record must match any one of them. For example, the following request retrieves bills from Texas or Virginia that are still in procedure:

```http theme={null}
GET /api/v0/bills?jurisdiction=US-TX,US-VA&status=in_procedure
```

Date ranges, such as `published_after` and `published_before`, include the dates you pass. Contradictory or unknown parameters are rejected with a `422` response, as described in [Query Parameters](https://docs.policymate.io/requests.md#query-parameters).

## Shared Filters

The `/bills`, `/documents`, `/events`, and `/transcripts` endpoints all accept the following query parameters:

| Parameter | Example | Description |
| - | - | - |
| `jurisdiction` | `US-TX` | Only records from this [jurisdiction](https://docs.policymate.io/reference/jurisdictions-and-categories.md#jurisdictions). Accepts a list. |
| `q` | `data center` | Full-text search. Wrap words in quotes to match a phrase, such as `"data center"`. |
| `category` | a category `id` | Only records in this [category](https://docs.policymate.io/reference/jurisdictions-and-categories.md#categories) or its children. Accepts a list. For transcripts, only transcripts with a chapter in this category. Not available for events, which have no categories. |
| `updated_since` | `2026-11-04T00:00:00Z` | Only records that changed since this time, inclusive. See [Fetching Recent Changes](https://docs.policymate.io/pagination.md#fetching-recent-changes). |
| `sort` | `-updated_at` | The order of the results. Prefix with `-` for descending order. Each resource lists the values it accepts. |

## Recommendation Filters

Bills, documents, events, and transcripts all accept the same recommendation filters. They only consider the workspaces your API key can read. A transcript or a document counts as recommended when the whole record, or one of its [parts](https://docs.policymate.io/reference/recommendations.md#recommended-parts), such as a chapter of a hearing or a section of a gazette, was recommended:

| Parameter | Example | Description |
| - | - | - |
| `recommended` | `true` | Only records with a current recommendation to at least one workspace. Pass `false` for records with none, which includes records PolicyMate has not finished reading yet. |
| `min_importance` | `high` | Only records recommended at this importance or above: `low`, `medium`, `high`, or `critical`. |
| `workspace` | a workspace `id` | Only consider recommendations made to this workspace. Accepts a list. |
| `topic` | a topic `id` | Only records recommended for this topic. Accepts a list. |

Passing `min_importance`, `workspace`, or `topic` implies `recommended=true`, so you never need to pass both, and combining them with `recommended=false` is rejected. When you pass several recommendation filters, a single recommendation must match all of them: `workspace=A&min_importance=high` returns records recommended at `high` or above to workspace A, not records recommended to A at any level and to another workspace at `high`. For example, the following request retrieves Texas bills recommended at `high` importance or above to the "Data centers" workspace:

```http theme={null}
GET /api/v0/bills?jurisdiction=US-TX&workspace=3a9d...&min_importance=high
```

The same parameters work on `/documents`, `/events`, and `/transcripts`, so the request for upcoming events recommended to that workspace looks just the same:

```http theme={null}
GET /api/v0/events?workspace=3a9d...&recommended=true&starts_after=2026-11-06
```

## Recommendations on Records

Every bill, document, event, and transcript includes a `recommendations` attribute, so you can tell at a glance whether a record matters to your team without a second request:

```json theme={null}
"recommendations": [
  { "workspace": { "id": "3a9d...", "name": "Data centers" }, "importance": "high" },
  { "workspace": { "id": "8c41...", "name": "Water utilities" }, "importance": "low" }
]
```

The array holds one entry for each of your key's workspaces the record, or one of its parts, was recommended to, with the highest importance among them. It is empty when the record was not recommended to any. A record may matter a great deal to one workspace and little to another, which is why the API lists each workspace rather than a single level.

To read why a record was recommended, and for which topics, pass its `id` to the [recommendations](https://docs.policymate.io/reference/recommendations.md#retrieving-recommendations) endpoint, such as `GET /recommendations?record_type=bill&record_id=9b3e2c1a-...`.


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