Where variables apply
Variables are substituted in some places and not in others. This page lists every field a {{placeholder}} can appear in, and every place it cannot.
Resolved (the variable's value is substituted in at send time)
These are the fields that participate in variable resolution:
Request
- URL — the entire URL string, including the path and any
?query string you type directly. - Header key and header value — for every enabled header row.
- Query parameter key and query parameter value — for every enabled Params row.
Auth
- Bearer token
- Basic username and password
- API key name and value, regardless of placement (header or query)
- OAuth 2 token URL, client ID, client secret, scope, and access token
Body
- The raw body of a Raw mode body, in full
- URL-encoded field key and value
- Multipart text field key and value
Multipart file fields and binary bodies do not interpolate variables. The file is sent as-is, with the file's name as the multipart part name.
Not resolved
The following fields never see variable substitution. They're stored literally and shown literally.
- Collection name, description
- Folder name
- Request name, request description
- Environment name
- Variable key (the variable's name, not its value)
- Comment fields if you add any later
- URL bar path-only mode is also unaffected — variable substitution happens during
prepareRequest, not while you type
If a request's name contains {{foo}} because someone wrote it that way, the literal text {{foo}} is saved and displayed, never the resolved value. The same is true for collection and folder names.
What happens when a variable is missing
If any of the resolved fields above contains a {{placeholder}} whose name is not in the active environment, or whose name is in the environment but the variable is disabled, the request fails before any network activity with the error:
Request has unresolved variables
missingVariables: ["baseUrl", "token"]The error message lists every missing key, deduplicated and sorted. The error appears in the response panel as a red strip and is also recorded in history as a network error. The canonical fix is at Troubleshooting → Unresolved variables.
This applies to any field that participates in resolution, even if the field's value is otherwise empty. So a Authorization: Bearer {{token}} header with a missing token will still fail.
What happens with nested-looking values
Values are resolved once. If a variable's value contains a {{placeholder}}, that inner placeholder is not resolved a second time.
{{greeting}} => "Hello, {{name}}"{{name}} is not resolved further. The substituted string is what gets sent.
Recursive-looking requests
If a single request's URL has {{a}}/{{b}}/{{a}}, every occurrence of {{a}} is replaced with the same value. The resolution is left-to-right but always uses the same source values, so ordering does not matter.
What about response bodies?
Variables are only substituted in the request that's about to be sent. They are not applied to the response body, response headers, or the request's persisted form. A request saved with {{baseUrl}} in the URL stores the literal {{baseUrl}}, not the resolved URL.
This is what makes saved requests portable between environments.
What's next?
- Variables — full syntax reference
- Environments — where the variables live
- Request bodies — when and how body content gets resolved