diff --git a/xos/core/xoslib/methods/sshkeys.py b/xos/core/xoslib/methods/sshkeys.py
index 31121fc..9bbe55d 100644
--- a/xos/core/xoslib/methods/sshkeys.py
+++ b/xos/core/xoslib/methods/sshkeys.py
@@ -16,21 +16,41 @@
 
     def get(self, request, format=None):
         instances=[]
-        for sliver in Sliver.objects.all():
+        for sliver in self.get_queryset().all():
             if sliver.instance_id:
                 instances.append( {"id": sliver.instance_id,
-                                   "public_keys": sliver.get_public_keys() } )
+                                   "public_keys": sliver.get_public_keys(),
+                                   "node_name": sliver.node.name } )
 
         return Response(instances)
 
+    def get_queryset(self):
+        queryset = queryset=Sliver.objects.all()
+
+        node_name = self.request.QUERY_PARAMS.get('node_name', None)
+        if node_name is not None:
+            queryset = queryset.filter(node__name = node_name)
+
+        return queryset
+
 class SSHKeyDetail(APIView):
     method_kind = "detail"
     method_name = "sshkeys"
 
     def get(self, request, format=None, pk=0):
-        slivers = Sliver.objects.filter(instance_id=pk)
+        slivers = self.get_queryset().filter(instance_id=pk)
         if not slivers:
             raise XOSNotFound("didn't find sliver for instance %s" % pk)
         return Response( [ {"id": slivers[0].instance_id,
-                            "public_keys": slivers[0].get_public_keys() } ])
+                            "public_keys": slivers[0].get_public_keys(),
+                            "node_name": sliver.node.name } ])
+
+    def get_queryset(self):
+        queryset = queryset=Sliver.objects.all()
+
+        node_name = self.request.QUERY_PARAMS.get('node_name', None)
+        if node_name is not None:
+            queryset = queryset.filter(node__name = node_name)
+
+        return queryset
 
