Lxd cluster api with ?filter show results only from queried node

I have a following running containers in my cluster

lxc list -c nsL "status=Running"
+----------+---------+----------+
|   NAME   |  STATE  | LOCATION |
+----------+---------+----------+
| CT12     | RUNNING | pc       |
+----------+---------+----------+
| CT98     | RUNNING | hp       |
+----------+---------+----------+
| candid   | RUNNING | pc       |
+----------+---------+----------+
| latency  | RUNNING | pc       |
+----------+---------+----------+
| metadata | RUNNING | hp       |
+----------+---------+----------+
| pow      | RUNNING | hp       |
+----------+---------+----------+

but when I query API (from cluster member “pc”) I get the following result:

lxc query "/1.0/instances?filter=status%20eq%20Running" 
[
	"/1.0/instances/latency",
	"/1.0/instances/candid",
	"/1.0/instances/CT12"
]

Using curl on local unix socket or via https gives similar results.
On the other hand, without ?filter return list of all instances on all cluster members

lxc query "/1.0/instances" 
[
	"/1.0/instances/pow",
	"/1.0/instances/metadata",
	"/1.0/instances/CT98",
	"/1.0/instances/pxe1",
	"/1.0/instances/CT70",
	"/1.0/instances/agent4",
	"/1.0/instances/pwsh",
	"/1.0/instances/latency",
	"/1.0/instances/arch",
	"/1.0/instances/candid",
	"/1.0/instances/CT12"
]

How can I query API to get all running instances in my cluster? Or is it a bug and I should report it on github?

That’s a bug. I suspect that for some reason the &recursion=2 output isn’t affected which is why lxc list still works as expected.