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.