Skip to main content

Variables

Variables in Solo allow you to create reusable, dynamic values across your requests. Use variables to manage different environments, avoid hardcoding values, and keep your API configurations flexible.

Why Use Variables?

Variables help you:

  • Avoid repetition – Define once, use everywhere
  • Switch environments – Easily toggle between dev, staging, and production
  • Keep secrets safe – Store tokens and API keys in one place
  • Make requests flexible – Dynamic values without manual editing

Creating Variables

How to Create

  1. Click on the Variables button in the sidebar (or use the Variables tab)
  2. Click Add Variable or "+"
  3. Enter a key (variable name)
  4. Enter a value
  5. Variables are saved automatically

Variable Example

Key: base_url
Value: https://api.example.com

Key: auth_token
Value: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Key: user_id
Value: 12345

Using Variables in Requests

Reference variables using double curly braces: {{variable_name}}

In URLs

GET https://{{base_url}}/users/{{user_id}}

With variables:

  • base_url = api.example.com
  • user_id = 123

Becomes:

GET https://api.example.com/users/123

In Headers

Authorization: Bearer {{auth_token}}
X-API-Key: {{api_key}}
User-Agent: {{app_name}}

In Query Parameters

https://{{base_url}}/search?q={{search_term}}&limit={{page_limit}}

In Request Body

{
"userId": "{{user_id}}",
"apiKey": "{{api_key}}",
"environment": "{{env_name}}"
}

In GraphQL

query GetUser {
user(id: "{{user_id}}") {
id
name
email
}
}

Variables tab:

{
"userId": "{{current_user}}"
}

In gRPC

{
"id": "{{user_id}}",
"token": "{{auth_token}}"
}

Variable Scope

Solo supports different variable scopes:

Global Variables

Available to all requests across all collections:

{{base_url}} – Used in all API calls
{{auth_token}} – Shared authentication
{{app_version}} – Global application version

Collection Variables

Available only within a specific collection:

{{collection_api_key}} – Specific to this collection
{{collection_base_url}} – Override global base_url

Request Variables

Defined in the Variables tab of a specific request:

{{request_specific_value}} – Only for this request

Priority Order

When the same variable exists in multiple scopes:

  1. Request variables (highest priority)
  2. Collection variables
  3. Global variables (lowest priority)

Example:

  • Global: {{base_url}} = https://api.example.com
  • Collection: {{base_url}} = https://staging.api.example.com
  • Request will use: https://staging.api.example.com

Environment Management

Use variables to manage multiple environments:

Development Environment

base_url: http://localhost:3000
auth_token: dev_token_123
db_name: dev_database

Staging Environment

base_url: https://staging.api.example.com
auth_token: staging_token_456
db_name: staging_database

Production Environment

base_url: https://api.example.com
auth_token: prod_token_789
db_name: prod_database

Switching Environments

  1. Create a variable set for each environment
  2. Save them as different collections or use comments
  3. Toggle variables by changing values
  4. All requests automatically use the active environment
tip

Create a collection for each environment to quickly switch between dev, staging, and production.

Common Variable Patterns

API Base URL

{{base_url}} = https://api.example.com

Use in requests:

GET {{base_url}}/users
POST {{base_url}}/posts
DELETE {{base_url}}/comments/{{comment_id}}

Authentication Token

{{auth_token}} = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Use in headers:

Authorization: Bearer {{auth_token}}

Resource IDs

{{user_id}} = 123
{{post_id}} = 456
{{comment_id}} = 789

Use in URLs:

GET {{base_url}}/users/{{user_id}}/posts/{{post_id}}

API Version

{{api_version}} = v1

Use in URLs:

GET {{base_url}}/{{api_version}}/users

Pagination

{{page}} = 1
{{limit}} = 20
{{offset}} = 0

Use in queries:

GET {{base_url}}/users?page={{page}}&limit={{limit}}

Dynamic Variables

Solo supports special dynamic variables that generate values automatically:

Timestamp Variables

{{$timestamp}} – Current Unix timestamp (seconds)
{{$timestamp_ms}} – Current timestamp in milliseconds

Example:

{
"createdAt": {{$timestamp}},
"requestTime": {{$timestamp_ms}}
}

Random Variables

{{$randomInt}} – Random integer
{{$randomUUID}} – Random UUID v4
{{$randomString}} – Random alphanumeric string

Example:

{
"id": "{{$randomUUID}}",
"code": "{{$randomInt}}",
"token": "{{$randomString}}"
}

Date Variables

{{$date}} – Current date (YYYY-MM-DD)
{{$datetime}} – Current datetime (ISO 8601)

Example:

{
"date": "{{$date}}",
"timestamp": "{{$datetime}}"
}

Advanced Usage

Nested Variables

Variables can reference other variables:

{{api_url}} = https://{{domain}}/{{api_version}}
{{domain}} = api.example.com
{{api_version}} = v1

Result: https://api.example.com/v1

Concatenated Variables

Combine variables with text:

GET {{base_url}}/api/{{version}}/users/{{user_id}}/profile

Variable Substitution in Descriptions

Use variables in request descriptions:

This request fetches user {{user_id}} from {{environment}} environment.

Base URL: {{base_url}}
Auth: {{auth_type}}

Managing Variables

View All Variables

  1. Click on the Variables tab
  2. See all defined variables
  3. Edit or delete as needed

Search Variables

Use the search box to find variables by key or value:

Search: "auth" → Shows all auth-related variables
Search: "prod" → Shows production variables

Export Variables

Export variables for backup or sharing:

  1. Click Export Variables
  2. Save as JSON file
  3. Share with team or keep as backup

Example export:

{
"base_url": "https://api.example.com",
"auth_token": "token123",
"user_id": "12345"
}

Import Variables

Import variables from a file:

  1. Click Import Variables
  2. Select JSON file
  3. Choose to merge or replace existing variables

Security Best Practices

Sensitive Data

For sensitive variables like API keys and tokens:

  • ✅ Use variables instead of hardcoding
  • ✅ Store in Solo (local, offline storage)
  • ✅ Don't commit to version control
  • ❌ Don't include in exported collections

Token Rotation

When rotating tokens:

  1. Update the variable value
  2. All requests automatically use new token
  3. No need to edit individual requests

Separate Environments

Keep production credentials separate:

  • Use different collections for each environment
  • Never mix dev and prod variables
  • Document which variables are for which environment

Debugging with Variables

View Resolved Values

Before sending a request, Solo shows the resolved values:

Request:

GET {{base_url}}/users/{{user_id}}

Preview:

GET https://api.example.com/users/123

Missing Variables

Solo warns you when variables are undefined:

⚠️ Variable '{{missing_var}}' is not defined

Variable Autocomplete

Start typing {{ and Solo suggests available variables:

{{b → Suggests: base_url, backend_url, bearer_token

Examples

Example 1: User Management API

Variables:

base_url: https://api.example.com
auth_token: abc123
admin_id: 1

Requests:

GET {{base_url}}/users
Authorization: Bearer {{auth_token}}

POST {{base_url}}/users
Authorization: Bearer {{auth_token}}
Body: {"name": "John", "createdBy": "{{admin_id}}"}

GET {{base_url}}/users/{{admin_id}}
Authorization: Bearer {{auth_token}}

Example 2: Multi-Environment Setup

Dev variables:

env: development
base_url: http://localhost:3000
db_name: dev_db
debug: true

Prod variables:

env: production
base_url: https://api.example.com
db_name: prod_db
debug: false

Request:

POST {{base_url}}/logs
Body: {
"environment": "{{env}}",
"database": "{{db_name}}",
"debug": {{debug}}
}

Example 3: Pagination Workflow

Variables:

base_url: https://api.example.com
page: 1
limit: 20

Request:

GET {{base_url}}/users?page={{page}}&limit={{limit}}

To get the next page, just update page variable to 2.

Keyboard Shortcuts

Work faster with variables:

  • Cmd/Ctrl + E – Open variables editor
  • {{ – Start variable autocomplete
  • Tab – Accept autocomplete suggestion

Best Practices

Use Descriptive Names

# Good
{{api_base_url}}
{{auth_bearer_token}}
{{current_user_id}}

# Less clear
{{url}}
{{token}}
{{id}}
# API Configuration
{{api_base_url}}
{{api_version}}
{{api_timeout}}

# Authentication
{{auth_type}}
{{auth_token}}
{{auth_expires}}

# User Context
{{user_id}}
{{user_email}}
{{user_role}}

Document Variables

Add comments or use descriptions:

{{base_url}} – API base URL for current environment
{{auth_token}} – Bearer token (expires in 24h)
{{user_id}} – Current authenticated user ID

Keep Variables DRY

Don't repeat values:

# Good
{{api_url}} = https://{{domain}}/{{version}}
{{domain}} = api.example.com
{{version}} = v1

# Repetitive
{{users_url}} = https://api.example.com/v1/users
{{posts_url}} = https://api.example.com/v1/posts
{{comments_url}} = https://api.example.com/v1/comments

Troubleshooting

Variable Not Substituted

Problem: Request shows {{variable}} instead of value

Solutions:

  • Check variable is defined
  • Verify variable name spelling
  • Ensure no extra spaces: {{ variable }} won't work

Wrong Value Used

Problem: Variable uses unexpected value

Solutions:

  • Check variable scope priority
  • Verify no override in collection or request
  • Review variable list for duplicates

Circular References

Problem: Variables reference each other in a loop

Example:

{{var1}} = {{var2}}
{{var2}} = {{var1}}

Solution: Remove circular reference

Next Steps