---
title: "List all filter sets"
method: GET
path: "/api/v1/filter-sets/"
tags: ["filterSets"]
---

# List all filter sets

`GET /api/v1/filter-sets/`

List of all filter sets in the specified workspace.

## Query parameters

- `workspace_id` string
- `organisation_id` string

## Headers

- `Authorization` string, required

## Response `200`

List of filter sets

- FilterSetList
  - `results` FilterSet[] — List of filter sets.
    - `id` string — ID of the filter set.
    - `version` integer — An incrementing integer indicating the version of the filter set.
    - `is_deleted` boolean — Whether the filter set has been deleted.
    - `is_locked` boolean — Whether the filter set has been locked.
    - `workspace_id` string, nullable — ID of the workspace where the filter set can be used.
    - `organisation_id` string, nullable — ID of the workspace where the filter set can be used.
    - `name` string — Name of the filter set.
    - `description` string, nullable — Description of the filter set.
    - `filters` FilterSetFiltersItems[] — List of all filters contained in the filter set.
      - union
        - SelectFilter
          - `filter_id` string, required — ID of the "select" type filter.
          - `selected_values` string[], required — This schema applies for filters of the `select` type, as defined in the [filter list response](\#tag/Filters/paths/~1api~1v1~1filters~1/get). Array of IDs matching the response IDs, from the `select` filter's `choices` (see response linked above). String format should match the `data_type` of the `select` filter's `choices` (see response linked above).
          - `weightings` object — Ratios to control the distribution of participants across the selected values. Integer percentages, floats, and exact quantities are valid inputs.
        - RangeFilter
          - `filter_id` string, required — ID of the "range" type filter.
          - `selected_range` RangeFilterSelectedRange, required — This schema applies for filters of the `range` type, as defined in the [filter list response](\#tag/Filters/paths/~1api~1v1~1filters~1/get). A dictionary with two possible objects, 'lower' and 'upper'. At least one must be present and a non-null value. The expected data type for these values is defined by the `range` filter's `data_type` (see response linked above). If the data_type is a date, string format should be a parseable ISO8601 date string. Date values should be provided as a string in ISO 8601 format. Leaving a value as null will result in that bound being set to the lowest or highest possible value, depending on whether it is the upper or lower bound.
            - `lower` union — Your selected lower bound for the range.
              - …
            - `upper` union — Your selected upper bound for the range.
              - …
          - `weightings` object — Ratios to control the distribution of participants across the selected values. Integers and exact quantities are valid inputs.
        - CompositeFilter
          - `filter_id` 'and' | 'or', required — Composite filter group operator. Use `and` when every child filter must match, or `or` when at least one child filter must match.
          - `selected_filters` CompositeFilterSelectedFiltersItems[], required — Child filters in this group. Children can be select filters, range filters, or supported nested composite groups.
            - union
              - …

## Other responses

- `400` — Error

## Changes

> 11 revisions in range; 8 could not be searched.

- **2026-07-26** `421c6aa415ef` — 1 info
  - added the optional property `results/items/description` to the response with the `200` status

[Change history](https://skmtc.dev/prolific/apis/api-reference/changes/api/v1/filter-sets/get.md)

---

[API](https://skmtc.dev/prolific/apis/api-reference.md) · [All operations](https://skmtc.dev/prolific/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/prolific/api-reference/revisions/578f400cea53/schema)
