Global parameters
A global parameter is a value set once — at the SDK client level or the CLI config level — and injected into every relevant request, instead of being passed on every call. Per-call values always win over the global value.
Global parameters differ from global headers: a global header is always a header, while a global parameter can target a header, query parameter, path parameter, or a field in the request body.
Declare global parameters
Use the x-fern-global-parameters extension at the root of your spec. Each entry declares one parameter:
Fields
The canonical identifier for the parameter. It’s the base for the generated flag or constructor argument, and the key operations use to opt in.
Where the value is injected on the wire: body, query, header, or path.
The wire-level injection target. For body, a dotted path into the request body (for example, config.currency). For query, header, and path, the parameter or header name. Defaults to name.
The value type: string, integer, double, or boolean.
An environment variable the value falls back to when the caller doesn’t provide one.
A client-side default used when neither the caller nor the environment variable supplies a value. x-fern-default takes precedence over default.
Whether the parameter can be omitted. A required parameter with no value, default, or environment variable produces an error.
How the parameter applies to operations. explicit applies only to operations that opt in; auto applies to every operation whose request contains the target.
An SDK/CLI-facing alias. When set, this name is used for the generated flag or constructor argument instead of name.
Apply to specific operations
When a parameter uses apply: explicit (the default), it applies only to operations that opt in with the per-operation x-fern-global-parameter extension. List the parameter names to include. The value accepts a single string or a list:
Each name must match a parameter declared in x-fern-global-parameters. A parameter with apply: auto is injected into every operation whose request contains its target, with no opt-in required.
Resolution order
At runtime, the value is resolved from the first available source, in order:
- The per-call value (a per-operation parameter or an explicit request field) — this always wins.
- The CLI flag or constructor argument.
- The environment variable (
env). - The client-side default (
x-fern-default, thendefault).
For a body parameter with a nested target, a value the caller already supplies at that path is never overwritten.
Generated CLI behavior
The CLI generator registers each global parameter as a top-level flag (with its env fallback and default) and injects the resolved value at the declared location for every applicable command.