Exports a function from a built-in module called http-request.

httpRequest() returns a Promise that resolves to an HttpResponse Object. This function is similar to fetch from the Fetch API.

See the HTTP sub-request limitations section for more information about limitations that apply to HTTP sub-requests.

To view debugging information for HTTP sub-requests you need to enable enhanced debug headers. For more information review the Response Headers for HTTP sub-requests section.
Note: Requests through the httpRequest() function will not trigger EdgeWorkers attached to the requested resource.

Only HTTPS is supported for the scheme. Specifying port numbers is not supported.
Note: You cannot currently use Sandbox to test EdgeWorkers that contain the httpRequest() function.
Note: HTTP requests made during the onClientRequest event only support the GET and HEAD methods.

httpRequest(url [,options])

The url is the absolute or relative URL to fetch. Relative URLs use the parent request as the base URL. This is a string value.

The domain of a requested URL must be served by the Akamai platform.

The options must be a JavaScript object containing at least one of the following optional properties, method, headers, body, or timeout.
Property Description Property type
method The HTTP request method to use.

Defaults to GET, if not specified.

headers The HTTP request headers to include. The property names of this object are the header names. The property values are arrays containing the header values. Object
Note: EdgeWorkers should not manipulate Akamai headers added for internal use. These headers typically start with ‘X-Ak’ and ‘Akamai-’.
body Content of the request body. String
timeout Timeout value, in milliseconds, for the response to complete. Integer
const options = {}
options.method = "POST"
options.headers = { "Content-Type": "application/x-www-form-urlencoded" }
options.body = "field1=value1&field2=value2"
const response = await httpRequest(url, options)
const response = await httpRequest(url, {
   method: "POST",
   headers: { "Content-Type": "application/x-www-form-urlencoded" },
   body: "field1=value1&field2=value2"
const options = {}
options.method = "GET"
options.timeout = 100

const response = await httpRequest(url, options)
const response = await httpRequest(url, {
   method: "GET",
   timeout: 100
This example shows how to use an asynchronous encapsulating function to call an httpRequest() function.
async function getJSON (url) {
  const response = await httpRequest(`${url}`);
  if (response.ok) {
	return await response.json();
  } else {
	return { language: 'en', greeting: 'Hello World' };
This example shows how to use the onClientRequest event handler to call an httpRequest() function. It is also async.
import { httpRequest } from 'http-request';
import { logger } from 'log';
export async function onClientRequest(request) {
  try {
    const response = await httpRequest('/ab_test/ab.json');
    logger.log('OnClientRequest SubRequest Successful');
      if (response.ok) {
       // Add logic process response 
  } catch (error) {
    logger.log('OnClientRequest SubRequest Failed: %s', error);