diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 3d30fbd..0b441b1 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -28,6 +28,10 @@
 import uritemplate
 import urllib
 import urlparse
+try:
+    from urlparse import parse_qsl
+except ImportError:
+    from cgi import parse_qsl
 from apiclient.http import HttpRequest
 
 try: # pragma: no cover
@@ -109,7 +113,7 @@
 
 
 def build(serviceName, version, http=None,
-    discoveryServiceUrl=DISCOVERY_URI, auth=None, model=JsonModel()):
+    discoveryServiceUrl=DISCOVERY_URI, developerKey=None, model=JsonModel()):
   params = {
       'api': serviceName,
       'apiVersion': version
@@ -141,6 +145,7 @@
       self._http = http
       self._baseUrl = base
       self._model = model
+      self._developerKey = developerKey
 
     def auth_discovery(self):
       return auth_discovery
@@ -149,7 +154,7 @@
 
     def method(self, **kwargs):
       return createResource(self._http, self._baseUrl, self._model,
-          methodName, methodDesc, futureDesc)
+          methodName, self._developerKey, methodDesc, futureDesc)
 
     setattr(method, '__doc__', 'A description of how to use this function')
     setattr(theclass, methodName, method)
@@ -159,8 +164,8 @@
   return Service()
 
 
-def createResource(http, baseUrl, model, resourceName, resourceDesc,
-    futureDesc):
+def createResource(http, baseUrl, model, resourceName, developerKey,
+                   resourceDesc, futureDesc):
 
   class Resource(object):
     """A class for interacting with a resource."""
@@ -169,6 +174,7 @@
       self._http = http
       self._baseUrl = baseUrl
       self._model = model
+      self._developerKey = developerKey
 
   def createMethod(theclass, methodName, methodDesc, futureDesc):
     pathUrl = methodDesc['pathUrl']
@@ -223,6 +229,9 @@
           actual_path_params[argmap[key]] = value
       body_value = kwargs.get('body', None)
 
+      if self._developerKey:
+        actual_query_params['key'] = self._developerKey
+
       headers = {}
       headers, params, query, body = self._model.request(headers,
           actual_path_params, actual_query_params, body_value)
@@ -266,6 +275,13 @@
       except (KeyError, TypeError):
         return None
 
+      if self._developerKey:
+        parsed = list(urlparse.urlparse(url))
+        q = parse_qsl(parsed[4])
+        q.append(('key', self._developerKey))
+        parsed[4] = urllib.urlencode(q)
+        url = urlparse.urlunparse(parsed)
+
       headers = {}
       headers, params, query, body = self._model.request(headers, {}, {}, None)
 
