diff --git a/wsclient_rest/wsclient_rest.api.php b/wsclient_rest/wsclient_rest.api.php
new file mode 100644
index 0000000..24147a9
--- /dev/null
+++ b/wsclient_rest/wsclient_rest.api.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @file
+ * This file contains no working PHP code; it exists to provide additional
+ * documentation for doxygen as well as to document hooks in the standard
+ * Drupal manner.
+ */
+
+/**
+ * @defgroup wsclient_rest_hooks Web service client REST's hooks
+ * @{
+ * Hooks that can be implemented by other modules in order to extend web service
+ * client REST.
+ */
+
+/**
+ * Alter the http request.
+ *
+ * @param HttpClientRequest $request
+ *   The http request to be manipulated before it's handed over to curl.
+ * @param WSClientServiceDescription $service
+ *   The web service description.
+ *
+ * @see WSClientRESTEndpoint::alterRequest()
+ */
+function hook_wsclient_rest_request_alter(&$request, &$service) {
+  if ($service->name == 'myservice') {
+    // remove empty parameters
+    $request->parameters = array_filter($request->parameters, 'strlen');
+  }
+}
+
+/**
+ * @}
+ */
diff --git a/wsclient_rest/wsclient_rest.module b/wsclient_rest/wsclient_rest.module
index caa426d..c82fbe0 100644
--- a/wsclient_rest/wsclient_rest.module
+++ b/wsclient_rest/wsclient_rest.module
@@ -39,10 +39,10 @@ class WSClientRESTEndpoint extends WSClientEndpoint {
     if (!isset($this->client)) {
       if (isset($this->service->settings['formatter'])) {
         $formatter = new $this->service->settings['formatter']();
-        $this->client = new HttpClient(NULL, $formatter);
+        $this->client = new HttpClient(NULL, $formatter, $this);
       }
       else {
-        $this->client = new HttpClient(NULL, new HttpClientBaseFormatter(HttpClientBaseFormatter::FORMAT_JSON));
+        $this->client = new HttpClient(NULL, new HttpClientBaseFormatter(HttpClientBaseFormatter::FORMAT_JSON), $this);
       }
       // Pass through additional curl options.
       if (!empty($this->service->settings['curl options'])) {
@@ -105,6 +105,23 @@ class WSClientRESTEndpoint extends WSClientEndpoint {
     }
   }
 
+  /**
+   * Alters the given request.
+   *
+   * The public alterRequest method supported by Hugo Wetterberg's HttpClient.
+   * The request to be altered is passed to drupal_alter() with the service
+   * definition as a context.
+   *
+   * @param HttpClientRequest $request
+   *   The request to be altered.
+   *
+   * @see HttpClient
+   * @see hook_wsclient_rest_request_alter()
+   */
+  public function alterRequest($request) {
+    drupal_alter('wsclient_rest_request', $request, $this->service);
+  }
+
 }
 
 /**
