Skip to content

Keyrunner Scripting Documentation ​

Getting Started ​

To get started with Keyrunner scripting, ensure you have the necessary environment setup. Follow these steps to use various functionalities provided by Keyrunner.

Retrieve the value of an environment variable. ​

javascript
await kr.environment.get("<keyName>");

Set the value of an environment variable. ​

javascript
await kr.environment.set("<keyName>", "<value>");

Get the current request URL. ​

javascript
kr.request.url.get();

Set a new request URL. ​

javascript
kr.request.url.set("<newUrl>");

Set a request header. ​

javascript
kr.request.headers.set({
   key: "<keyName>",
   value: "<value>"
});

Remove a request header. ​

javascript
kr.request.headers.remove("<keyName>");

Get the current request method. ​

javascript
kr.request.method.get();

Set a new request method. ​

javascript
kr.request.method.set("POST");

Get the response code of the request. ​

javascript
kr.response.code();

Get the response headers. ​

javascript
kr.response.headers();

Get the response text. ​

javascript
kr.response.text();

Get the response in JSON format. ​

javascript
kr.response.json();

Log a message to KeyRunner console. ​

javascript
kr.console.log("Hello Keyrunner !!!");

Log an error message to KeyRunner console. ​

javascript
kr.console.error("Hello Keyrunner !!!");

Send a request using the specified parameters. ​

javascript
var request = {
    url: "<request-url>",
    method: "POST",
    header: {
        Accept: "application/json"
    },
    body: ""
};

kr.sendRequest(request, function(error, response){
    if(error){
        kr.console.error(error);
    }
    if(response){
        kr.console.log(response);
    }
});

Collection-Level Scripts ​

Collections now support Pre-Scripts and Post-Scripts, giving you the ability to run JavaScript logic before or after every request in a collection — without having to duplicate script logic across individual requests.

How it works:

  • Open any collection and navigate to the Scripts tab.
  • Write a Pre-Script to execute logic before each request in the collection fires (e.g., set auth tokens, inject headers, resolve dynamic variables).
  • Write a Post-Script to execute logic after each request completes (e.g., validate response structure, chain data to the next request, log results).
  • Collection-level scripts run in addition to any request-level scripts. The execution order is:
    1. Collection Pre-Script
    2. Request Pre-Script
    3. Request executes
    4. Request Post-Script
    5. Collection Post-Script

Why it matters: Previously, teams had to copy the same boilerplate auth or token-refresh logic into every single request's script. With collection-level scripts, you write it once at the collection and it applies to all requests inside it automatically.


Reusable Global Script Libraries ​

KeyRunner now supports a Script Library — a workspace-level store of reusable JavaScript modules that can be imported into any script (collection scripts, request scripts, or other library scripts).

How it works:

  • Access the Script Library from the bottom navigation panel.
  • Create a new library by clicking the + icon and giving it a name.
  • Write your reusable functions inside the library and export them using Node.js module syntax:
javascript
// my-library
function getAuthHeader(token) {
  return `Bearer ${token}`;
}

module.exports = { getAuthHeader };
  • To use the library in any script, import it with kr.require:
javascript
const myLib = await kr.require('my-library');
const header = myLib.getAuthHeader(kr.environment.get('token'));
kr.request.setHeader('Authorization', header);
  • The Libraries picker button (shown in the script editor toolbar) lets you browse and insert the kr.require import statement without typing it manually.
  • Use the copy icon next to the library name to copy it to your clipboard for quick referencing.
  • Libraries are scoped to your workspace and automatically available to all members.

Why it matters: Eliminates duplication of utility functions like token generators, retry helpers, and response validators. One change to the library propagates everywhere it is used.

Released under the MIT License.