lc.env & lc.globals

January 18, 2026 · View on GitHub

Two mechanisms for managing variables: environment variables (persisted) and global variables (session-only).

Availability: Both (pre-request and post-response)

For the complete API reference, see Scripting API Reference.

Table of Contents


Overview

LazyCurl provides two variable storage mechanisms:

StoragePersistenceValue TypesUse Case
lc.envSaved to environment fileStrings onlyAPI keys, base URLs, configuration
lc.globalsIn-memory (session only)Any JavaScript valueRequest chaining, temporary state

Quick Reference

lc.env Methods

MethodDescription
get(name)Get environment variable value
set(name, value)Set environment variable (persisted)
unset(name)Remove environment variable
has(name)Check if variable exists
toObject()Get all variables as object

lc.globals Methods

MethodDescription
get(name)Get global variable value
set(name, value)Set global variable (any type)
unset(name)Remove global variable
has(name)Check if variable exists
clear()Remove all global variables
toObject()Get all variables as object

lc.env

Environment variables are tied to your active environment file and persist to disk. Changes made via lc.env.set() are saved after script execution.

get(name)

Retrieves the value of an environment variable.

ParameterTypeRequiredDescription
namestringYesThe variable name

Returns: string - The variable value, or empty string if not found

var baseUrl = lc.env.get("base_url");
var apiKey = lc.env.get("api_key");

console.log("Base URL: " + baseUrl);

set(name, value)

Sets an environment variable. The value is persisted to the environment file.

ParameterTypeRequiredDescription
namestringYesThe variable name
valuestringYesThe variable value

Returns: void

// Store a token (persisted to file)
lc.env.set("auth_token", "eyJhbGciOiJIUzI1NiIs...");

// Store timestamp
lc.env.set("last_run", new Date().toISOString());

unset(name)

Removes an environment variable.

ParameterTypeRequiredDescription
namestringYesThe variable name to remove

Returns: void

// Clear expired token
lc.env.unset("auth_token");
lc.env.unset("refresh_token");

has(name)

Checks if an environment variable exists.

ParameterTypeRequiredDescription
namestringYesThe variable name to check

Returns: boolean - true if the variable exists

if (lc.env.has("api_key")) {
    lc.request.headers.set("X-API-Key", lc.env.get("api_key"));
} else {
    console.warn("No API key configured");
}

toObject()

Returns all environment variables as a JavaScript object.

Returns: object - All variables as key-value pairs

var allVars = lc.env.toObject();
console.log(JSON.stringify(allVars, null, 2));

// Check which variables are set
for (var name in allVars) {
    console.log(name + " = " + allVars[name]);
}

lc.globals

Global variables exist only in memory during the current LazyCurl session. They can store any JavaScript value (objects, arrays, numbers, booleans), not just strings.

get(name)

Retrieves a global variable.

ParameterTypeRequiredDescription
namestringYesThe variable name

Returns: any - The variable value, or null if not found

var user = lc.globals.get("current_user");
if (user) {
    console.log("Logged in as: " + user.name);
}

// Get with default value
var count = lc.globals.get("request_count") || 0;

set(name, value)

Sets a global variable. Can store any JavaScript value.

ParameterTypeRequiredDescription
namestringYesThe variable name
valueanyYesThe variable value (any type)

Returns: void

// Store complex objects
lc.globals.set("user", {
    id: 123,
    name: "John Doe",
    roles: ["admin", "user"]
});

// Store arrays
lc.globals.set("request_history", []);

// Store numbers
lc.globals.set("request_count", 0);

// Store booleans
lc.globals.set("is_authenticated", true);

unset(name)

Removes a global variable.

ParameterTypeRequiredDescription
namestringYesThe variable name to remove

Returns: void

lc.globals.unset("temp_data");

has(name)

Checks if a global variable exists.

ParameterTypeRequiredDescription
namestringYesThe variable name to check

Returns: boolean - true if the variable exists

if (lc.globals.has("access_token")) {
    lc.request.headers.set("Authorization", "Bearer " + lc.globals.get("access_token"));
}

clear()

Removes all global variables.

Returns: void

// Reset session state
lc.globals.clear();
console.log("Session state cleared");

toObject()

Returns all global variables as a JavaScript object.

Returns: object - All variables as key-value pairs

var allGlobals = lc.globals.toObject();
console.log("Session variables: " + JSON.stringify(allGlobals));

Comparison

Featurelc.envlc.globals
PersistenceSaved to environment fileIn-memory only
Survives restartYesNo
Value typesStrings onlyAny JavaScript value
ScopeTied to active environmentSession-wide
Best forConfiguration, API keysRequest chaining, state

When to Use Each

Use lc.env for:

  • API keys and secrets
  • Base URLs
  • Configuration that should persist
  • Values shared across sessions

Use lc.globals for:

  • Tokens obtained during request chaining
  • Temporary computation results
  • Complex objects (user data, arrays)
  • Counters and state within a session

Examples

Token Management with Both

// Post-response: Store token from login
if (lc.response.status === 200) {
    var data = lc.response.body.json();

    if (data && data.access_token) {
        // Store in globals for immediate use (fast, in-memory)
        lc.globals.set("access_token", data.access_token);

        // Also persist to env for future sessions
        lc.env.set("access_token", data.access_token);

        // Store expiry in globals (complex data)
        lc.globals.set("token_expires_at", Date.now() + (data.expires_in * 1000));

        console.log("Token stored");
    }
}
// Pre-request: Use token with fallback
var token = lc.globals.get("access_token") || lc.env.get("access_token");

if (token) {
    lc.request.headers.set("Authorization", "Bearer " + token);
} else {
    console.warn("No access token available");
}

Request Counter

// Pre-request: Track request count
var count = lc.globals.get("request_count") || 0;
count++;
lc.globals.set("request_count", count);

console.log("Request #" + count);
lc.request.headers.set("X-Request-Number", count.toString());

Store User Context

// Post-response: Store user data after login
if (lc.response.status === 200) {
    var data = lc.response.body.json();

    // Store complex user object (only possible with globals)
    lc.globals.set("current_user", {
        id: data.user.id,
        name: data.user.name,
        email: data.user.email,
        roles: data.user.roles,
        loginTime: new Date().toISOString()
    });

    // Store simple ID in env for persistence
    lc.env.set("user_id", data.user.id.toString());
}

Environment-Specific Configuration

// Pre-request: Configure based on environment
var env = lc.env.get("environment") || "development";

switch (env) {
    case "production":
        lc.request.headers.set("X-Environment", "prod");
        break;
    case "staging":
        lc.request.headers.set("X-Environment", "staging");
        lc.request.headers.set("X-Debug", "true");
        break;
    default:
        lc.request.headers.set("X-Environment", "dev");
        lc.request.headers.set("X-Debug", "true");
}

See Also


← lc.response | lc.test →