Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time


  • Add Accept-Encoding header ("identity" by default)
  • Include Content-Type and Content-Length for GET requests with non-empty Body
  • Allow async timeouts >60 seconds


  • Update UrlEncode behavior to target different encoding RFCs based on UrlEncodingMode
  • Add UrlEncodingMode with support for Strict, Form, Query, Cookie, and Path
  • UrlEncodingMode.StrictUrlEncoding uses RFC 3986 and is the default
  • UrlEncodingMode.FormUrlEncoding uses HTML5 form url-encoding and is used with WebFormat.FormUrlEncoded
  • UrlEncodingMode.QueryUrlEncoding uses subset of Strict and Form for default querystring encoding
  • UrlEncodingMode.CookieUrlEncoding uses RFC 6265
  • UrlEncodingMode.PathUrlEncoding uses "pchar" from RFC 3986 and is the default
  • Update VBA-JSON to v2.2.2
  • 4.1.1 Adjust CookieUrlEncoding mode to match value encoding in RFC 6265 (rather than name encoding)
  • 4.1.2 Compatibility with 64-bit Mac
  • 4.1.3 Mac bugfix for % encoding
  • 4.1.4 Fix compilation issues for 64-bit Mac
  • 4.1.5 Update VBA-JSON to v2.3.0 (fixes JSON slowdown on Windows)
  • 4.1.6 Fix libc bug in Mac 16.21.1


Major Changes:

  • Mac Support!
  • General VBA support (no Excel-specific code)
  • Custom formatters
  • Automatic proxy detection
  • Windows authentication
  • Switch to WinHttpRequest (Windows' modern web library)
  • General API cleanup and bugfixes
  • 4.0.1 cURL escape parameters in authenticators, url-encode UrlSegments, and add SetHeader
  • 4.0.2 Add Base64Decode
  • 4.0.3 Fix out-of-date workbooks
  • 4.0.4 Move Application.OnTime to WebAsyncWrapper and add dislaimer that it's Excel-only
  • 4.0.5 Fix incorrect regional guard in ParseNumber in VBA-JSON (upgrade to v1.0.1)
  • 4.0.6 Resolve 64-bit compilation issues in VBA-JSON
  • 4.0.7 Handle resolve error when offline as timeout and add EnableCustomFormatting flag for Application.Run issues
  • 4.0.8 Fix a critical bug that caused Excel to crash if an error was thrown with AutoProxy
  • 4.0.9 Add VBA-Dictionary to installer and fix AddBodyParameter bug in 64-bit Excel
  • 4.0.10 Fix SysAllocString bug for 32-bit Excel
  • 4.0.11 Fix extract header bug in DigestAuthenticator
  • 4.0.12 Fix revocation check bug for Insecure, Split bug in credentials, and fix Example workbook
  • 4.0.13 Fix 100 Continue bug for Mac, fix regional issues for url-encoded numbers and dates
  • 4.0.14 Fix cached Body issue with AddBodyParameter
  • 4.0.15 Fix cookie decoding issue
  • 4.0.16 Add Access support to installer and fix installer bugs (long paths on Mac, check if files exist, password protected)
  • 4.0.17 Add FollowRedirects and follow redirects by default, convert stored body to Variant, fix multiple 100 Continue bug
  • 4.0.18 Add VBA.Randomize to CreateNonce and add TodoistAuthenticator
  • 4.0.19 Fix installer and update VBA-JSON to v1.0.3
  • 4.0.20 Update VBA-JSON to v2.0.1 (Note: Breaking change in VBA-JSON, Solidus is no longer escaped by default)
  • 4.0.21 Fix vbCrLf issue in Excel for Mac 2016 and namespace internal method calls
  • 4.0.22 Add Request.UserAgent, sort OAuth1 querystring parameters, fix UrlEncode issues, and WebClient tweaks

Breaking Changes:

  • Excel-REST is now VBA-Web and all classes/modules have been renamed
  • ExecuteAsync is Window-only and has been moved to WebAsyncWrapper
  • {format} UrlSegment is no longer automatically replaced
  • Many methods removed, renamed, or moved (see the Upgrade Guide for a detailed breakdown)


  • Add Request.RequestFormat, Request.ResponseFormat, and Request.Accept for setting separate request and response formats (e.g. form-urlencoded request with json response)
  • Add LogRequest and LogResponse for better logging detail (enable with RestHelpers.EnableLogging = True)
  • Allow headers and content-type to be set in authenticator BeforeExecute
  • 3.1.1 Fix importing class incorrectly as module bug
  • 3.1.2 Add XML and plain text formats
  • 3.1.3 Fix hard dependency for XML
  • 3.1.4 Fix logging in PrepareProxyForHttpRequest


  • Add Client.GetJSON and Client.PostJSON helpers to GET and POST JSON without setting up request
  • Add AfterExecute to IAuthenticator (Breaking change, all IAuthenticators must implement this new method)
  • 3.0.1 Add DigestAuthenticator, new helpers, and cleanup
  • 3.0.2 Switch timeout to Long and remove RestClientBase (out of sync with v3)
  • 3.0.3 Update OAuth1, deprecate IncludeCacheBreaker, update True/False formatting to lowercase, add LinkedIn example
  • 3.0.4 Fix formatting of parameters with spaces for OAuth1 and add logging
  • 3.0.5 Allow Array and Collection for Body in Request.AddBody and Client.PostJSON
  • 3.0.6 Convert Empty to null for json
  • 3.0.7 Add install.bat script for easy installation and upgrade


  • Add form-urlencoded format and helpers
  • Combine Body + Parameters and Querystring + Parameters with priority given to Body or Querystring, respectively


  • Add cookies support with Request.AddCookie(key, value) and Response.Cookies
  • 2.2.1 Add Response.Headers collection of response headers


  • Add Microsoft Scripting Runtime dependency (for Dictionary support)
  • Add RestClient.SetProxy for use in proxy environments
  • 2.1.1 Use Val for number parsing in locale-dependent settings
  • 2.1.2 Add raw binary Body to RestResponse for handling files (thanks @berkus)
  • 2.1.3 Bugfixes and refactor


  • Remove JSONLib dependency (merged with RestHelpers)
  • Add RestClientBase for future use with extension for single-client applications
  • Add build scripts for import/export
  • New specs and bugfixes
  • 2.0.1 Handle duplicate keys when parsing json
  • 2.0.2 Add Content-Length header and 408 status code for timeout


  • Integrate Excel-TDD to fully test Excel-REST library
  • Handle timeouts for sync and async requests
  • Remove reference dependencies and use CreateObject instead
  • Add cachebreaker as querystring param only
  • Add Join helpers to resolve double-slash issue between base and resource url
  • Only add "?" for querystring if querystring will be created and "?" isn't present
  • Only put parameters in body if there are parameters


  • Add async support