diff --git a/requirements.txt b/requirements.txt
index 62b133c..92acdd2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@ coverage
 mock
 requests
 enum34
+vcrpy
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_webapi.py b/tests/test_webapi.py
new file mode 100644
index 0000000..c40058c
--- /dev/null
+++ b/tests/test_webapi.py
@@ -0,0 +1,12 @@
+import unittest
+import mock
+import vcr
+
+from steam.webapi import WebAPI, requests
+from steam.enums import EType, EUniverse
+
+
+class TCwebapi(unittest.TestCase):
+    @vcr.use_cassette('vcr/webapi_init.json', mode='once', serializer='json')
+    def test_initialization(self):
+        api = WebAPI(None)
diff --git a/vcr/webapi_getserverinfo.json b/vcr/webapi_getserverinfo.json
new file mode 100644
index 0000000..2e7cdb4
--- /dev/null
+++ b/vcr/webapi_getserverinfo.json
@@ -0,0 +1,49 @@
+{
+    "version": 1, 
+    "interactions": [
+        {
+            "request": {
+                "body": null, 
+                "headers": {
+                    "Connection": [
+                        "keep-alive"
+                    ], 
+                    "Accept-Encoding": [
+                        "gzip, deflate"
+                    ], 
+                    "Accept": [
+                        "*/*"
+                    ], 
+                    "User-Agent": [
+                        "python-requests/2.7.0 CPython/2.7.10 CYGWIN_NT-10.0/2.2.0(0.289/5/3)"
+                    ]
+                }, 
+                "method": "GET", 
+                "uri": "https://api.steampowered.com/ISteamWebAPIUtil/GetServerInfo/v1/?key=test_api_key&format=json"
+            }, 
+            "response": {
+                "status": {
+                    "message": "OK", 
+                    "code": 200
+                }, 
+                "headers": {
+                    "date": [
+                        "Sun, 23 Aug 2015 22:58:10 GMT"
+                    ], 
+                    "content-length": [
+                        "78"
+                    ], 
+                    "expires": [
+                        "Sun, 23 Aug 2015 22:58:10 GMT"
+                    ], 
+                    "content-type": [
+                        "application/json; charset=UTF-8"
+                    ]
+                }, 
+                "body": {
+                    "string": "{\n\t\"servertime\": 1440370690,\n\t\"servertimestring\": \"Sun Aug 23 15:58:10 2015\"\n}"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/vcr/webapi_init.json b/vcr/webapi_init.json
new file mode 100644
index 0000000..108fa8f
--- /dev/null
+++ b/vcr/webapi_init.json
@@ -0,0 +1,49 @@
+{
+    "version": 1, 
+    "interactions": [
+        {
+            "request": {
+                "body": null, 
+                "headers": {
+                    "Connection": [
+                        "keep-alive"
+                    ], 
+                    "Accept-Encoding": [
+                        "gzip, deflate"
+                    ], 
+                    "Accept": [
+                        "*/*"
+                    ], 
+                    "User-Agent": [
+                        "python-requests/2.7.0 CPython/2.7.10 CYGWIN_NT-10.0/2.2.0(0.289/5/3)"
+                    ]
+                }, 
+                "method": "GET", 
+                "uri": "https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v1/?format=json"
+            }, 
+            "response": {
+                "status": {
+                    "message": "OK", 
+                    "code": 200
+                }, 
+                "headers": {
+                    "date": [
+                        "Sun, 23 Aug 2015 22:58:35 GMT"
+                    ], 
+                    "content-length": [
+                        "13742"
+                    ], 
+                    "expires": [
+                        "Sun, 23 Aug 2015 22:58:35 GMT"
+                    ], 
+                    "content-type": [
+                        "application/json; charset=UTF-8"
+                    ]
+                }, 
+                "body": {
+                    "string": "{\n\t\"apilist\": {\n\t\t\"interfaces\": [\n\t\t\t{\n\t\t\t\t\"name\": \"IGCVersion_205790\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetClientVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetServerVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IGCVersion_440\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetClientVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetServerVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IGCVersion_570\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetClientVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetServerVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IGCVersion_730\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetServerVersion\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IPortal2Leaderboards_620\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetBucketizedData\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"leaderboardName\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"The leaderboard name to fetch data for.\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IPortal2Leaderboards_841\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetBucketizedData\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"leaderboardName\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"The leaderboard name to fetch data for.\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamApps\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetAppList\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetAppList\",\n\t\t\t\t\t\t\"version\": 2,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetServersAtAddress\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"addr\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"IP or IP:queryport to list\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"UpToDateCheck\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"appid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"AppID of game\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"The installed version of the game\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamDirectory\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetCMList\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"cellid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Client's Steam cell ID\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"maxcount\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Max number of servers to return\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamEnvoy\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"PaymentOutNotification\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"PaymentOutReversalNotification\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamNews\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetNewsForApp\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"appid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"AppID to retrieve news for\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"maxlength\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit.\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"enddate\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Retrieve posts earlier than this date (unix epoch timestamp)\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"# of posts to retrieve (default 20)\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetNewsForApp\",\n\t\t\t\t\t\t\"version\": 2,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"appid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"AppID to retrieve news for\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"maxlength\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit.\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"enddate\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Retrieve posts earlier than this date (unix epoch timestamp)\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"# of posts to retrieve (default 20)\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"feeds\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Comma-seperated list of feed names to return news for\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamPayPalPaymentsHub\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"PayPalPaymentsHubPaymentNotification\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamRemoteStorage\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetCollectionDetails\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"collectioncount\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Number of collections being requested\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"publishedfileids[0]\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"collection ids to get the details for\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetPublishedFileDetails\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"itemcount\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Number of items being requested\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"publishedfileids[0]\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"published file id to look up\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamUserAuth\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"AuthenticateUser\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"steamid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Should be the users steamid, unencrypted.\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"sessionkey\",\n\t\t\t\t\t\t\t\t\"type\": \"rawbinary\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Should be a 32 byte random blob of data, which is then encrypted with RSA using the Steam system's public key.  Randomness is important here for security.\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"encrypted_loginkey\",\n\t\t\t\t\t\t\t\t\"type\": \"rawbinary\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Should be the users hashed loginkey, AES encrypted with the sessionkey.\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamUserOAuth\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetTokenDetails\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"access_token\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"OAuth2 token for which to return details\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamUserStats\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetGlobalAchievementPercentagesForApp\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"gameid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"GameID to retrieve the achievement percentages for\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetGlobalAchievementPercentagesForApp\",\n\t\t\t\t\t\t\"version\": 2,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"gameid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"GameID to retrieve the achievement percentages for\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetGlobalStatsForGame\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"appid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"AppID that we're getting global stats for\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Number of stats get data for\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"name[0]\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Names of stat to get data for\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"startdate\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Start date for daily totals (unix epoch timestamp)\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"enddate\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"End date for daily totals (unix epoch timestamp)\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetNumberOfCurrentPlayers\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"appid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"AppID that we're getting user count for\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamWebAPIUtil\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetServerInfo\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"GetSupportedAPIList\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"GET\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"key\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"access key\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"ISteamWebUserPresenceOAuth\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"PollStatus\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"steamid\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Steam ID of the user\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"umqid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"UMQ Session ID\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": false,\n\t\t\t\t\t\t\t\t\"description\": \"Message that was last known to the user\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"pollid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Caller-specific poll id\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"sectimeout\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Long-poll timeout in seconds\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"secidletime\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"How many seconds is client considering itself idle, e.g. screen is off\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"use_accountids\",\n\t\t\t\t\t\t\t\t\"type\": \"uint32\",\n\t\t\t\t\t\t\t\t\"optional\": true,\n\t\t\t\t\t\t\t\t\"description\": \"Boolean, 0 (default): return steamid_from in output, 1: return accountid_from\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IPlayerService\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"RecordOfflinePlaytime\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"description\": \"Tracks playtime for a user when they are offline\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"steamid\",\n\t\t\t\t\t\t\t\t\"type\": \"uint64\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"ticket\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"play_sessions\",\n\t\t\t\t\t\t\t\t\"type\": \"{message}\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"IAccountRecoveryService\",\n\t\t\t\t\"methods\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"ReportAccountRecoveryData\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"description\": \"Send account recovery data\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"loginuser_list\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"install_config\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"shasentryfile\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"machineid\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"RetrieveAccountRecoveryData\",\n\t\t\t\t\t\t\"version\": 1,\n\t\t\t\t\t\t\"httpmethod\": \"POST\",\n\t\t\t\t\t\t\"description\": \"Send account recovery data\",\n\t\t\t\t\t\t\"parameters\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"requesthandle\",\n\t\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\t\"optional\": false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t\n\t\t\t}\n\t\t]\n\t\t\n\t}\n}"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/vcr/webapi_resolovevanityurl.json b/vcr/webapi_resolovevanityurl.json
new file mode 100644
index 0000000..4d474df
--- /dev/null
+++ b/vcr/webapi_resolovevanityurl.json
@@ -0,0 +1,49 @@
+{
+    "version": 1, 
+    "interactions": [
+        {
+            "request": {
+                "body": null, 
+                "headers": {
+                    "Connection": [
+                        "keep-alive"
+                    ], 
+                    "Accept-Encoding": [
+                        "gzip, deflate"
+                    ], 
+                    "Accept": [
+                        "*/*"
+                    ], 
+                    "User-Agent": [
+                        "python-requests/2.7.0 CPython/2.7.10 CYGWIN_NT-10.0/2.2.0(0.289/5/3)"
+                    ]
+                }, 
+                "method": "GET", 
+                "uri": "https://api.steampowered.com/ISteamUser/ResolveVanityURL/v1/?url_type=2&vanityurl=valve&key=test_api_key&format=json"
+            }, 
+            "response": {
+                "status": {
+                    "message": "OK", 
+                    "code": 200
+                }, 
+                "headers": {
+                    "date": [
+                        "Sun, 23 Aug 2015 22:58:21 GMT"
+                    ], 
+                    "content-length": [
+                        "71"
+                    ], 
+                    "expires": [
+                        "Sun, 23 Aug 2015 22:58:21 GMT"
+                    ], 
+                    "content-type": [
+                        "application/json; charset=UTF-8"
+                    ]
+                }, 
+                "body": {
+                    "string": "{\n\t\"response\": {\n\t\t\"steamid\": \"103582791429521412\",\n\t\t\"success\": 1\n\t}\n}"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file