What's New?


Request available in `onHyperResponse` interception point.

Although this was already available by calling response.getRequest(), the request is now available as the second parameter of the onHyperResponse interceptor.



Added a convenience method to set the bodyFormat to binary and the Content-Type to application/octet-stream.


Retrying Failed Requests

You can now configure a HyperRequest to automatically retry failed requests. See the HyperRequest docs for details.

Default User-Agent

Hyper now sends a default User-Agent of HyperCFML/#versionNumber#.

Reset Fake Request Counts and Sequences

Hyper can now reset the fake request counts and sequences without losing the fake configuration using the resetFakes method.



Hyper can now send cookies with a request and parse the returned cookies from a response. See the HyperRequest and HyperResponse docs for details.


Fake Requests

Hyper now has the ability to fake requests and return fake responses as a result. This is perfect for testing scenarios where you don't actually want to make an HTTP request.

Custom Hyper Clients

It is now more straightforward to register a custom Hyper client. Inside your config/WireBox.cfc in an afterAspectsLoad method, you can get a reference to a HyperBuilder, configure it as you would for a request, and then call the registerAs method passing in your desired WireBox alias.

// config/WireBox.cfc
component {

   // ...
   function afterApsectsLoad() {
       injector.getInstance( "HyperBuilder@hyper" )
           .setBaseUrl( "https://api.github.com" )
           .withHeaders( {
               "Authorization": coldbox.getUtil().getSystemSetting( "GITHUB_TOKEN" )
           } )
           .registerAs( "GitHubClient" );


This is a welcome improvement as the init arguments do not exactly match the method names. Also, for defaults like requestCallbacks, responseCallbacks, or even queryParams, passing in arrays of functions or arrays or structs is not as straightforward as calling the related methods. Now, you can use the Hyper methods you are familiar with when registering your custom Hyper clients.

Putting the registration code in afterAspectsLoad is required so Hyper can be loaded and available for injection.


CFHttp HTTP Client

This client now returns more accurate status codes for 502 Bad Gateway and 408 Request Timeout responses.

Previously, these responses were returned as 504 Gateway Timeout responses. Hyper now normalizes the responses from the different CFML engines into a consistent response. 502 Bad Gateway is returned instead of 504 Gateway Timeout for invalid hosts. 408 Request Timeout is returned if the request takes longer than the configured timeout value.

Breaking Changes

If you were previously checking specifically for 504 status codes for bad hosts, you need to now either check for 502 status codes or use a more general method, like isServerError or isError.

If you were previously checking specifically for 504 status codes or isServerError for timed out requests, you need to now either check for 408 status codes, isClientError, or the more general isError.


Add head and options shortcut methods.


  • Add xml support and an asXML method to set the body format and Content-Type header.

  • Add adobe@2023 to testing matrix.

Breaking Changes

  • Remove default Content-Type header. You must set this manually or use a format helper, such as asJson.

  • Dropped adobe@2016 support.


Correctly handle cases when the body is a string and format is JSON.


Add a debug method to see what the HTTP client generates.

Breaking Changes

HyperHttpClientInterface now requires a debug method.

 * Return a struct of information showing how the client will execute the HyperRequest.
 * This will be used by a developer to debug any differences between the generated
 * request values and the expected request values.
 * @req     The HyperRequest to debug.
 * @returns A struct of information detailing how the client would execute the HyperRequest.
public struct function debug( required HyperRequest req );


  • Do not prepend the base url when a full url is passed.

  • Add resolveUrls and encodeUrl properties to the memento.

  • Correctly set the encodeUrl property when cloning a request.


Update README for builder initWith headers losing Content-Type.


Fix HyperBuilder example in the docs.


Allow adding multiple query params with the same key.

Breaking Changes

Previously, query params were stored as a struct. Some APIs expect multiple values for the same query param name to be passed as separate arguments. Hyper now stores the query params as an array and provides new methods for interacting with query params:

The following methods still exist, but now interact with arrays of query param structs instead of a simple struct.

The following methods have been deprecated:


Convert array values correctly when sending form fields


Add a workaround for CommandBox not having the box:asyncManager injection DSL.


Add async requests using ColdBox's AsyncManager.



Add MIT License file


Use processState over announce until CommandBox can update its interceptorService.





Allowing attaching file uploads.


Support WireBox outside of ColdBox.


Include response data as detail in DeserializeJsonException.


  • Add clone to quickly copy HyperRequest instances.

  • Add interceptors and local callbacks for lifecycle events.


Add execution time to HyperResponse instances.

Breaking Changes

Dropped support for ColdBox 5.



Fixed typo of Bulider to Builder.


Add withoutEncodingUrl flag.


Do not fail fast on cron job actions on CI.


Update fetch-depth for tests and release actions on CI.


Attempt to skip committing back changes on CI.


Add matrix and cron testing on CI.


Use better GitHub token on CI


Add workaround for boolean values in query strings.


Add certificate auth.


Use the previous host for redirect if redirect does not include a full URL.


Add resolveUrls flag.


  • Use OpenJDK instead of OracleJDK on CI.


Allow for pluggable HTTP Clients that follow the HyperHttpClientInterface. (Clients do not need to use the implements keyword.)


Avoid double encoding using cfhttpparam.


Remove Lucee 4.5 support from docs. (Support was dropped in v2.0.0)


  • Do not include username and password unless they have values.

  • Add adobe@2018 support to CI builds.

Breaking Changes

Dropped support for lucee@4.5.


Add throwOnError flag.


Use 504 Gateway Timeout for incomplete responses.


Include equal signs in query param values.

1.14.0 – 1.0.0

New Features

  • Add when helper to execute conditions without breaking chaining.

  • Add clear method to reset HyperRequest instances.

  • Add configurable timeout.

Bug Fixes

  • Fix for Lucee 4 compatibility on LinkedHashMaps and keyArray.

  • Preserve case in header names.

  • Preserve case for query parameters.

  • Serialize both params from the url and set on the HyperRequest instance.

  • Default to UTF-8 charset if none is present in the response.

  • Fix withHeaders and withQueryParams for Lucee compatibility.

  • Only map HyperBuilder as a singleton in WireBox


Last updated