diff --git a/app/api/network.py b/app/api/network.py
index 2eb6ba4482ded08c88401e174b3f19166999acd1..b89b1882abd97cd3a2917a9523208a11fc8546a0 100644
--- a/app/api/network.py
+++ b/app/api/network.py
@@ -108,6 +108,14 @@ def get_interfaces():
         )
         query = query.order_by(models.Interface.ip)
         return get_generic_model(model=None, query=query)
+    network = request.args.get("network", None)
+    if network is not None:
+        query = models.Interface.query
+        query = query.join(models.Interface.network).filter(
+            models.Network.vlan_name == network
+        )
+        query = query.order_by(models.Interface.ip)
+        return get_generic_model(model=None, query=query)
     return get_generic_model(models.Interface, order_by=models.Interface.ip)
 
 
diff --git a/tests/functional/test_api.py b/tests/functional/test_api.py
index 681af8d9e180f224a086e98676696f861f9d46ef..9efc9fcb69cb1858c1fca020b770babb6b45517f 100644
--- a/tests/functional/test_api.py
+++ b/tests/functional/test_api.py
@@ -914,6 +914,46 @@ def test_get_interfaces_by_domain(
     check_input_is_subset_of_response(response, (interface3.to_dict(),))
 
 
+def test_get_interfaces_by_network(
+    client, network_factory, interface_factory, readonly_token
+):
+    # Create some interfaces
+    network1 = network_factory(
+        vlan_name="MyNetwork1",
+        address="192.168.1.0/24",
+        first_ip="192.168.1.10",
+        last_ip="192.168.1.250",
+    )
+    network2 = network_factory(
+        vlan_name="MyNetwork2",
+        address="192.168.2.0/24",
+        first_ip="192.168.2.10",
+        last_ip="192.168.2.250",
+    )
+    interface1 = interface_factory(network=network1, ip="192.168.1.10")
+    interface2 = interface_factory(
+        network=network1, ip="192.168.1.11", name="interface2"
+    )
+    interface3 = interface_factory(network=network2, ip="192.168.2.10")
+
+    # test filtering by network name
+    response = get(
+        client, f"{API_URL}/network/interfaces?network=MyNetwork1", token=readonly_token
+    )
+    assert response.status_code == 200
+    assert len(response.json) == 2
+    check_input_is_subset_of_response(
+        response, (interface1.to_dict(), interface2.to_dict())
+    )
+
+    response = get(
+        client, f"{API_URL}/network/interfaces?network=MyNetwork2", token=readonly_token
+    )
+    assert response.status_code == 200
+    assert len(response.json) == 1
+    check_input_is_subset_of_response(response, (interface3.to_dict(),))
+
+
 def test_get_interfaces_with_model(
     client, model_factory, item_factory, host_factory, interface_factory, readonly_token
 ):