Skip to Content
VariablesVariables Interpolation

Variable Interpolation

Variable interpolation in Bruno allows you to use variables in your requests using the {{variableName}} syntax. Let’s explore how interpolation works with different data types.

Basic Interpolation

Strings

// Setting a string variable bru.setVar("greeting", "Hello World");
// Using in request GET http://api.example.com/{{greeting}} // Interpolates to: http://api.example.com/Hello World

Numbers

// Setting a number variable bru.setVar("userId", 123);
// Using in request GET http://api.example.com/users/{{userId}} // Interpolates to: http://api.example.com/users/123

Booleans

// Setting a boolean variable bru.setVar("isActive", true); // Using in request body { "active": {{isActive}} } // Interpolates to: { "active": true }

Object Interpolation

Object interpolation is available from Bruno v2.2.0 onwards.

You can access object properties using dot notation. Here’s how to work with objects containing different data types:

// Define your object with multiple data types const userProfile = { username: "john_doe", // string accountId: 12345, // number isVerified: true, // boolean preferences: { // nested object theme: "dark", notifications: true } }; // Set the object as a variable bru.setVar("user", userProfile); // Using in request body { "username": "{{user.username}}", "verified": {{user.isVerified}}, "preferences": {{user.preferences}}, } // Interpolates to: // { // "username": "john_doe", // "verified": true, // "preferences": { // "theme": "dark", // "notifications": true // } // }

Array Interpolation

Array interpolation is available from Bruno v2.2.0 onwards.

// Define your arrays const technologies = ["REST", "GraphQL", "gRPC"]; const settings = [ { port: 3000, env: "dev" }, { port: 8080, env: "prod" } ]; // Set arrays as variables bru.setVar("apiTypes", technologies); bru.setVar("configs", settings); // Using array elements in request { // Simple array access "primaryAPI": "{{apiTypes[0]}}", // "REST" "alternativeAPI": {{apiTypes}}, // Accessing object properties in arrays "devPort": {{configs[0].port}}, // 3000 "prodEnv": {{configs}}, // Using multiple array elements "supported": { "apis": ["{{apiTypes[0]}}", "{{apiTypes[1]}}"], } } // Interpolates to: // { // "primaryAPI": "REST", // "alternativeAPI": [ // "REST", // "GraphQL", // "gRPC" // ] // "devPort": 3000, // "prodEnv": [ // { // "port": 3000, // "env": "dev" // }, // { // "port": 8080, // "env": "prod" // } // ] // "supported": { // "apis": ["REST", "GraphQL"], // } // }

Date Interpolation

// Bruno v2.2.0+ bru.setVar("timestamp", new Date()); // Using in request { "createdAt": "{{timestamp}}" } // Interpolates to: // { // "createdAt": "2025-04-23T13:57:56.341Z" // }

Practical Examples

API Authentication

bru.setVar("authConfig", { apiKey: "your-api-key", secret: "your-secret" }); // In request headers headers { "X-API-Key": "{{authConfig.apiKey}}", "X-Secret": "{{authConfig.secret}}" }

Dynamic Query Parameters

bru.setVar("searchParams", { limit: 10, offset: 0, filter: "active" });
// In URL GET http://api.example.com/users?limit={{searchParams.limit}}&offset={{searchParams.offset}}&filter={{searchParams.filter}}

Request Body with Mixed Types

bru.setVar("product", { name: "Bruno Pro", price: 99.99, features: ["Git Integration", "Offline First"], metadata: { version: "2.2.0", released: new Date() } }); // In request body { "productName": "{{product.name}}", "price": {{product.price}}, "firstFeature": "{{product.features[0]}}", "releaseDate": "{{product.metadata.released}}" }

Remember that variables set using bru.setVar() are available throughout your collection’s scope. Use them to make your requests more dynamic and maintainable.

Last updated on