diff --git a/plstackapi/core/api/deployment_networks.py b/plstackapi/core/api/deployment_networks.py
index 80b4ff3..00ee2e8 100644
--- a/plstackapi/core/api/deployment_networks.py
+++ b/plstackapi/core/api/deployment_networks.py
@@ -1,14 +1,17 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
 from plstackapi.core.models import DeploymentNetwork
 
 def _get_deployment_networks(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         deployment_networks = DeploymentNetwork.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         deployment_networks = DeploymentNetwork.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         deployment_networks = DeploymentNetwork.objects.filter(**filter)
     else:
         deployment_networks = []
diff --git a/plstackapi/core/api/flavors.py b/plstackapi/core/api/flavors.py
index ee55f73..94c38eb 100644
--- a/plstackapi/core/api/flavors.py
+++ b/plstackapi/core/api/flavors.py
@@ -1,14 +1,17 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
 from plstackapi.core.models import Flavor
  
 def _get_flavors(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         flavors = Flavor.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         flavors = Flavor.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         flavors = Flavor.objects.filter(**filter)
     else:
         flavors = []
diff --git a/plstackapi/core/api/images.py b/plstackapi/core/api/images.py
index 0b14043..ef197a6 100644
--- a/plstackapi/core/api/images.py
+++ b/plstackapi/core/api/images.py
@@ -1,14 +1,17 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
 from plstackapi.core.models import Image
  
 def _get_images(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         images = image.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         images = image.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         images = image.objects.filter(**filter)
     else:
         images = []
diff --git a/plstackapi/core/api/keys.py b/plstackapi/core/api/keys.py
index 2c90140..42ffe46 100644
--- a/plstackapi/core/api/keys.py
+++ b/plstackapi/core/api/keys.py
@@ -1,3 +1,4 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -6,11 +7,13 @@
 
 
 def _get_keys(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         keys = Key.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         keys = Key.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         keys = Key.objects.filter(**filter)
     else:
         keys = []
diff --git a/plstackapi/core/api/nodes.py b/plstackapi/core/api/nodes.py
index 47934ba..9b6a65c 100644
--- a/plstackapi/core/api/nodes.py
+++ b/plstackapi/core/api/nodes.py
@@ -1,14 +1,17 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
 from plstackapi.core.models import Node
  
 def _get_nodes(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         nodes = Node.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         nodes = Node.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         nodes = Node.objects.filter(**filter)
     else:
         nodes = []
diff --git a/plstackapi/core/api/roles.py b/plstackapi/core/api/roles.py
index 6c61e25..b243d78 100644
--- a/plstackapi/core/api/roles.py
+++ b/plstackapi/core/api/roles.py
@@ -6,6 +6,8 @@
  
 
 def _get_roles(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         roles = Role.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
diff --git a/plstackapi/core/api/site_privileges.py b/plstackapi/core/api/site_privileges.py
index 4c4158e..73280c6 100644
--- a/plstackapi/core/api/site_privileges.py
+++ b/plstackapi/core/api/site_privileges.py
@@ -1,3 +1,4 @@
+from types import StringTypes
 import re
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
@@ -9,11 +10,13 @@
 
 
 def _get_site_privileges(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         site_privileges = SitePrivilege.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         site_privileges = SitePrivilege.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         site_privileges = SitePrivilege.objects.filter(**filter)
     else:
         site_privileges = []
diff --git a/plstackapi/core/api/sites.py b/plstackapi/core/api/sites.py
index 540f815..daf8fa1 100644
--- a/plstackapi/core/api/sites.py
+++ b/plstackapi/core/api/sites.py
@@ -1,3 +1,4 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -5,11 +6,13 @@
 
 
 def _get_sites(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         sites = Site.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         sites = Site.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         sites = Site.objects.filter(**filter)
     else:
         sites = []
diff --git a/plstackapi/core/api/slice_memberships.py b/plstackapi/core/api/slice_memberships.py
index 9193632..54a1cba 100644
--- a/plstackapi/core/api/slice_memberships.py
+++ b/plstackapi/core/api/slice_memberships.py
@@ -1,4 +1,4 @@
-import re
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -8,11 +8,13 @@
 from plstackapi.core.api.roles import _get_roles
 
 def _get_slice_memberships(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         slice_memberships = SitePrivilege.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         slice_memberships = SitePrivilege.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         slice_memberships = SitePrivilege.objects.filter(**filter)
     else:
         slice_memberships = []
diff --git a/plstackapi/core/api/slices.py b/plstackapi/core/api/slices.py
index 731fa75..bfbc4d9 100644
--- a/plstackapi/core/api/slices.py
+++ b/plstackapi/core/api/slices.py
@@ -1,4 +1,4 @@
-import re
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -7,11 +7,13 @@
 
 
 def _get_slices(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         slices = Slice.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         slices = Slice.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         slices = Slice.objects.filter(**filter)
     else:
         slices = []
diff --git a/plstackapi/core/api/slivers.py b/plstackapi/core/api/slivers.py
index 0bdaa5d..f3807ab 100644
--- a/plstackapi/core/api/slivers.py
+++ b/plstackapi/core/api/slivers.py
@@ -1,4 +1,4 @@
-import re
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -12,11 +12,13 @@
  
 
 def _get_slivers(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         slivers = Sliver.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         slivers = Sliver.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         slivers = Sliver.objects.filter(**filter)
     else:
         slivers = []
diff --git a/plstackapi/core/api/subnets.py b/plstackapi/core/api/subnets.py
index ad53da0..33a0269 100644
--- a/plstackapi/core/api/subnets.py
+++ b/plstackapi/core/api/subnets.py
@@ -1,4 +1,4 @@
-import re
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -6,11 +6,13 @@
 from plstackapi.core.api.slices import _get_slices
 
 def _get_subnets(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         subnets = Subnet.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         subnets = Subnet.objects.filter(name=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         subnets = Subnet.objects.filter(**filter)
     else:
         subnets = []
diff --git a/plstackapi/core/api/users.py b/plstackapi/core/api/users.py
index d543782..b2ba681 100644
--- a/plstackapi/core/api/users.py
+++ b/plstackapi/core/api/users.py
@@ -1,3 +1,4 @@
+from types import StringTypes
 from plstackapi.openstack.client import OpenStackClient
 from plstackapi.openstack.driver import OpenStackDriver
 from plstackapi.core.api.auth import auth_check
@@ -5,11 +6,13 @@
 from plstackapi.core.api.sites import _get_sites
 
 def _get_users(filter):
+    if isinstance(filter, StringTypes) and filter.isdigit():
+        filter = int(filter)
     if isinstance(filter, int):
         users = User.objects.filter(id=filter)
     elif isinstance(filter, StringTypes):
         users = User.objects.filter(role_type=filter)
-    elif isinstance(filer, dict):
+    elif isinstance(filter, dict):
         users = User.objects.filter(**filter)
     else:
         users = []
