diff --git a/README.md b/README.md
index ee3edd5..b09c3ee 100644
--- a/README.md
+++ b/README.md
@@ -110,6 +110,7 @@
 *Client constructor supports the following optional parameters:*
 
 - **api.** Full API URL for OpenWhisk platform, e.g. `https://openwhisk.ng.bluemix.net/api/v1/`. This value overrides `apihost` if both are present.
+- **apiversion** Api version for the OpenWhisk platform, e.g. the `v1` in `https://openwhisk.ng.bluemix.net/api/v1/`, when used with `apihost` (and `api` is not set)
 - **namespace**. Namespace for resource requests, defaults to `_`.
 - **ignore_certs**. Turns off server SSL/TLS certificate verification. This allows the client to be used against local deployments of OpenWhisk with a self-signed certificate. Defaults to false.
 - **apigw_token**. API Gateway service authentication token. This is mandatory for using an external API Gateway service, rather than the built-in api gateway.
diff --git a/lib/client.js b/lib/client.js
index 70205c4..7e4e10d 100644
--- a/lib/client.js
+++ b/lib/client.js
@@ -74,6 +74,7 @@
    * @param {string} [options.api]
    * @param {string} [options.api_key]
    * @param {string} [options.apihost]
+   * @param {string} [options.apiversion]
    * @param {string} [options.namespace]
    * @param {boolean} [options.ignore_certs]
    * @param {string} [options.apigw_token]
@@ -94,9 +95,12 @@
         ? process.env['__OW_IGNORE_CERTS'].toLowerCase() === 'true'
         : false)
 
+    // if apiversion is available, use it
+    const apiversion = options.apiversion || 'v1'
+
     // if apihost is available, parse this into full API url
     const api = options.api ||
-      this.urlFromApihost(options.apihost || process.env['__OW_API_HOST'])
+      this.urlFromApihost(options.apihost || process.env['__OW_API_HOST'], apiversion)
 
     // optional tokens for API GW service
     const apigwToken = options.apigw_token || process.env['__OW_APIGW_TOKEN']
@@ -113,12 +117,12 @@
       throw new Error(`${messages.INVALID_OPTIONS_ERROR} Missing either api or apihost parameters.`)
     }
 
-    return {apiKey: apiKey, api, ignoreCerts: ignoreCerts, namespace: options.namespace, apigwToken: apigwToken, apigwSpaceGuid: apigwSpaceGuid, authHandler: options.auth_handler, noUserAgent: options.noUserAgent, cert: options.cert, key: options.key}
+    return {apiKey: apiKey, api, apiVersion: apiversion, ignoreCerts: ignoreCerts, namespace: options.namespace, apigwToken: apigwToken, apigwSpaceGuid: apigwSpaceGuid, authHandler: options.auth_handler, noUserAgent: options.noUserAgent, cert: options.cert, key: options.key}
   }
 
-  urlFromApihost (apihost) {
+  urlFromApihost (apihost, apiversion = 'v1') {
     if (!apihost) return apihost
-    let url = `${apihost}/api/v1/`
+    let url = `${apihost}/api/${apiversion}/`
 
     // if apihost does not the protocol, assume HTTPS
     if (!url.match(/http(s)?:\/\//)) {
diff --git a/test/unit/client.test.js b/test/unit/client.test.js
index d4f7da6..3684108 100644
--- a/test/unit/client.test.js
+++ b/test/unit/client.test.js
@@ -12,6 +12,7 @@
   const client = new Client({api_key: 'aaa', apihost: 'my_host'})
   t.false(client.options.ignoreCerts)
   t.is(client.options.apiKey, 'aaa')
+  t.is(client.options.apiVersion, 'v1')
   t.is(client.options.api, 'https://my_host/api/v1/')
   t.falsy(client.options.namespace)
   t.falsy(client.options.cert)
@@ -24,12 +25,14 @@
     ignore_certs: true,
     api_key: 'aaa',
     api: 'my_host',
+    apiversion: 'v2',
     apigw_token: 'oauth_token',
     apigw_space_guid: 'space_guid',
     cert: 'mycert=',
     key: 'mykey='
   })
   t.is(client.options.api, 'my_host')
+  t.is(client.options.apiVersion, 'v2')
   t.true(client.options.ignoreCerts)
   t.is(client.options.namespace, 'ns')
   t.is(client.options.apigwToken, 'oauth_token')
@@ -38,6 +41,16 @@
   t.is(client.options.key, 'mykey=')
 })
 
+test('apihost and apiversion set', t => {
+  const client = new Client({
+    api_key: 'aaa',
+    apihost: 'https://my_host',
+    apiversion: 'v2'
+  })
+  t.is(client.options.api, 'https://my_host/api/v2/')
+  t.is(client.options.apiVersion, 'v2')
+})
+
 test('should support deprecated explicit constructor options', t => {
   const client = new Client({
     namespace: 'ns',
