## TL;DR

The docs examples put filters in the query string, but the live endpoint reads them from the JSON body, so every 'filtered' call returned everything. Move the filters into the request body and verify the result set actually shrinks.

## Error

```text
GET with ?status=active returned all records including inactive ones
```

## Steps

1. Send one filtered request with the params in the JSON body Expected: the result set shrinks.
2. Update the generated client to put filters in the body for that endpoint Expected: all filtered calls work.
3. Add a test asserting filtered results exclude non-matching records Expected: silent unfiltering is caught.
4. Report the docs mismatch to the provider Expected: the next reader is not misled.

## When to use

- Filters are silently ignored
- Docs and live API disagree on where filters go

## When not to use

- The filter names are wrong (then the API would 400, not ignore)
- The endpoint genuinely takes query-string filters (then the bug is elsewhere)

## Tool compatibility

- Request body vs query params
- Generated API clients

## Variant phrasings

### filter ignored by api

The endpoint may want filters in the JSON body, not the query string.

### unfiltered results despite filter param

Same: check where the live API actually reads filters.

## Why it happens

Docs examples get copied across versions while the implementation moves on. Agents trust the example shape without testing the negative case.

## Edge cases

- Some endpoints accept both; the body usually wins on conflict
- URL length limits can silently truncate query-string filters, another reason to prefer the body

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_FflgL0mCWtRKkS5UbcviIw
