A modern load testing tool, using Go and JavaScript

"like unit testing, for performance"

k6 is a modern load testing tool, building on Load Impact's years of experience. It provides a clean, approachable JavaScript scripting API, distributed and cloud execution, and orchestration via a REST API.

Get Started    Guides

Params (k6/http)


Params is an object used by the http.* methods that generate HTTP requests. Params contains request-specific options like e.g. HTTP headers that should be inserted into the request.




The authentication method used for the request. It currently supports digest, ntlm, and basic authentication methods.



Object with key-value pairs representing request scoped cookies (they won't be added to VU cookie jar)
{cookies: { key: "val", key2: "val2" }}

You also have the option to say that a request scoped cookie should override a cookie in the VU cookie jar:
{cookies: { key: { value: "val", replace: true }}}



Object with key-value pairs representing custom HTTP headers the user would like to add to the request.



http.CookieJar object to override default VU cookie jar with. Cookies added to request will be sourced from this jar and cookies set by server will be added to this jar.



The number of redirects to follow for this request. Overrides the global test option maxRedirects.



Key-value pairs where the keys are names of tags and the values are tag values. Response time metrics generated as a result of the request will have these tags added to them, allowing the user to filter out those results specifically, when looking at results data.



Request timeout to use in milliseconds. Default timeout is 60s.



Sets whether the request body should be compressed. If set to gzip it will use gzip to compress the body and set the appropriate Content-Length and Content-Encoding headers.

Possible values: gzip, deflate, br, zstd, and any comma-separated combination of them (for stacked compression).



ResponseType is used to specify how to treat the body of the response. The three options are:

  • text: k6 will return it as a string. This might not be what you want in cases of binary data as the conversation to UTF-16 will probably break it. This is also the default if
    discardResponseBodies is set to false or not set at all.
  • binary: k6 will return an array of ints/bytes
  • none: k6 will return null as the body. The whole body will be ignored. This is the default when discardResponseBodies is set to true.
import http from "k6/http";

export default function () {
    let params = {
        cookies: { "my_cookie": "value" },
        headers: { "X-MyHeader": "k6test" },
        redirects: 5,
        tags: { "k6test": "yes" }
    let res = http.get("https://loadimpact.com", params);

A k6 script that will make an HTTP request with a custom HTTP header and tag results data with a specific tag

Here is another example using http.batch() with a Params argument:

import http from "k6/http";

let url1 = "https://api.loadimpact.com/v3/account/me";
let url2 = "http://httpbin.org/get"
let apiToken = "f232831bda15dd233c53b9c548732c0197619a3d3c451134d9abded7eb5bb195";
let requestHeaders = {
    "User-Agent": "k6",
    "Authorization": "Token " + apiToken

export default function () {
    let res = http.batch([
        { method: "GET", url: url1, params: { headers: requestHeaders } },
        { method: "GET", url: url2 }

Here is one example of how to use the Params to Digest Authentication

import http from "k6/http";
import { check } from "k6";

export default function () {
    // Passing username and password as part of URL plus the auth option will authenticate using HTTP Digest authentication
    let res = http.get("http://user:passwd@httpbin.org/digest-auth/auth/user/passwd", { auth: "digest" });

    // Verify response
    check(res, {
        "status is 200": (r) => r.status === 200,
        "is authenticated": (r) => r.json().authenticated === true,
        "is correct user": (r) => r.json().user === "user"

Example how to overwrite discardResponseBodies:

import http from 'k6/http';

export var options = {"discardResponseBodies": true};
export default function() {
export function setup(){
  // Get 10 random bytes in as an array of ints/bytes, without the responseType the body will be null
  const response = http.get("https://httpbin.org/bytes/10", {"responseType": "binary"});
  // Print the array. Will look something like `176,61,15,66,233,98,223,196,43,1`

Updated 3 months ago

Params (k6/http)

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.