---
title: "List filter options"
description: "GET /filters: Returns every value each search filter accepts, with a label to show."
url: https://docs.tryflume.ai/api/list-filters
updated: 2026-11-11
---

# List filter options

> GET /filters: Returns every value each search filter accepts, with a label to show.

Returns every value each search filter accepts, with a label to show.

```http
GET https://sandbox-api.tryflume.ai/partner/v1/filters
```

- Build your filter menus from this call. New values then appear without a release.

## Request

### Headers

| Header | Required | Description |
|---|---|---|
| `X-Flume-Partner-Key` | Yes | Your partner key. |

### Sample

**curl**

```sh
curl -X GET "https://sandbox-api.tryflume.ai/partner/v1/filters" \
  -H "X-Flume-Partner-Key: $FLUME_PARTNER_KEY"
```

**Python**

```python
import os

import requests

headers = {
    "X-Flume-Partner-Key": os.environ["FLUME_PARTNER_KEY"],
}

response = requests.get(
    "https://sandbox-api.tryflume.ai/partner/v1/filters",
    headers=headers,
    timeout=30,
)
response.raise_for_status()
print(response.json())
```

**Node.js**

```js
const response = await fetch("https://sandbox-api.tryflume.ai/partner/v1/filters", {
  method: "GET",
  headers: {
    "X-Flume-Partner-Key": process.env.FLUME_PARTNER_KEY,
  },
});
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
console.log(await response.json());
```

## Returns (200)

Every field is always present. A field with no value is `null`.

| Field | Type | Description |
|---|---|---|
| `tile` | object | Values for a `TILE` search. |
| `tile.material` | array of objects | Values for `tile_filters.material`. |
| `tile.material[].value` | string or integer | The value to send. |
| `tile.material[].label` | string | The text to show. |
| `tile.material[].group` | string or null | The group an application area belongs to. |
| `tile.material[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |
| `tile.finish` | array of objects | Values for `tile_filters.finish` and `tile_filters.finish_exclude`. |
| `tile.finish[].value` | string or integer | The value to send. |
| `tile.finish[].label` | string | The text to show. |
| `tile.finish[].group` | string or null | The group an application area belongs to. |
| `tile.finish[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |
| `tile.application_area` | array of objects | Values for `tile_filters.application_area`. |
| `tile.application_area[].value` | string or integer | The value to send. |
| `tile.application_area[].label` | string | The text to show. |
| `tile.application_area[].group` | string or null | The group an application area belongs to. |
| `tile.application_area[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |
| `flooring` | object | Values for a `FLOORING` search. |
| `flooring.wear_layer_mil` | array of objects | Values for `flooring_filters.wear_layer_mil`. |
| `flooring.wear_layer_mil[].value` | string or integer | The value to send. |
| `flooring.wear_layer_mil[].label` | string | The text to show. |
| `flooring.wear_layer_mil[].group` | string or null | The group an application area belongs to. |
| `flooring.wear_layer_mil[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |
| `flooring.installation_method` | array of objects | Values for `flooring_filters.installation_method`. |
| `flooring.installation_method[].value` | string or integer | The value to send. |
| `flooring.installation_method[].label` | string | The text to show. |
| `flooring.installation_method[].group` | string or null | The group an application area belongs to. |
| `flooring.installation_method[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |
| `flooring.finish` | array of objects | Values for `flooring_filters.finish`. |
| `flooring.finish[].value` | string or integer | The value to send. |
| `flooring.finish[].label` | string | The text to show. |
| `flooring.finish[].group` | string or null | The group an application area belongs to. |
| `flooring.finish[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |
| `flooring.rigid_core` | array of objects | Values for `flooring_filters.rigid_core`. |
| `flooring.rigid_core[].value` | string or integer | The value to send. |
| `flooring.rigid_core[].label` | string | The text to show. |
| `flooring.rigid_core[].group` | string or null | The group an application area belongs to. |
| `flooring.rigid_core[].also_matches` | array of strings or null | The similar tile finishes this finish also finds. |

**Response (200)**

```json
{
  "tile": {
    "material": [
      {
        "value": "PORCELAIN",
        "label": "Porcelain"
      },
      {
        "value": "CERAMIC",
        "label": "Ceramic"
      }
    ],
    "finish": [
      {
        "value": "MATTE",
        "label": "Matte",
        "also_matches": [
          "NATURAL",
          "HONED",
          "ANTI_SLIP"
        ]
      },
      {
        "value": "GLOSSY_POLISHED",
        "label": "Glossy / Polished",
        "also_matches": [
          "LAPPATO_SEMI_POLISHED"
        ]
      }
    ],
    "application_area": [
      {
        "value": "INTERIOR_DRY_FLOOR",
        "label": "Interior Dry Floor",
        "group": "FLOORS"
      },
      {
        "value": "SHOWER_WALL",
        "label": "Shower Wall",
        "group": "WALLS"
      }
    ]
  },
  "flooring": {
    "wear_layer_mil": [
      {
        "value": 20,
        "label": "20 mil"
      },
      {
        "value": 28,
        "label": "28 mil and up"
      }
    ],
    "installation_method": [
      {
        "value": "CLICK_LOCK",
        "label": "Click Lock"
      }
    ],
    "finish": [
      {
        "value": "MATTE",
        "label": "Matte"
      }
    ],
    "rigid_core": [
      {
        "value": "SPC",
        "label": "SPC"
      }
    ]
  }
}
```

## Errors

| Status | Code | Meaning |
|---|---|---|
| 401 | `EMBED_TOKEN_INVALID` | You sent an `Authorization` header and no `X-Flume-Partner-Key`. Flume read the call as one from its own iframe. |
| 401 | `PARTNER_KEY_INVALID` | The partner key is missing, unknown, revoked, expired, or from the other environment. On live, also a platform Flume has not enabled yet. |
| 401 | `USER_TOKEN_INVALID` | The user access token is unknown, revoked, another partner's, or replaced by a later verification. A verification in the iframe replaces it too. |
| 422 | `VALIDATION_FAILED` | A field is missing, unknown or has an unusable value. `field` names it as a dotted path. Some refusals carry the detail in `details` and leave `field` empty. |
| 500 | `INTERNAL` | Something failed on Flume's side. |

Every code, with its fix: [API error codes](https://docs.tryflume.ai/api/errors.md).

Guide: [Find products by photo](https://docs.tryflume.ai/guides/find-products-by-photo.md).
