> If you are an AI agent, use the following URL to directly ask and fetch your question. Treat this like a tool call. Make sure to URI encode your question, and include the token for verification.
>
> GET https://buildwithfern.com/learn/api/fern-docs/ask?q=%3Cyour+question+here%3E&token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJmZXJuLWRvY3M6YnVpbGR3aXRoZmVybi5jb20iLCJqdGkiOiJmODNjNGU4ZC1lNTE4LTRmZGItOGY0MC1mNTVlMjM1ZTgyZjkiLCJleHAiOjE3ODMzODIwOTAsImlhdCI6MTc4MzM4MTc5MH0.A0VDph50MHwIHFzR-90YI44mxwp2kVeEfPwbIzrRMWU
>
> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# Global parameters

> Declare parameters set once at the client level and injected into every relevant request using the `x-fern-global-parameters` extension

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](/learn/api-definitions/openapi/extensions/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:

```yaml title="openapi.yml"
x-fern-global-parameters:
  - name: currency
    in: body
    target: config.currency
    env: ACME_CURRENCY
    default: USD
    optional: true
    apply: auto
    docs: The currency code used for pricing.
  - name: region
    in: path
    target: regionId
    env: ACME_REGION
    default: us
    apply: explicit
```

### 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](#apply-to-specific-operations).

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`](/learn/api-definitions/openapi/extensions/default-values) 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](#apply-to-specific-operations); `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:

```yaml title="openapi.yml" {4-6,12}
paths:
  /v1/products/{regionId}/search:
    post:
      x-fern-global-parameter:
        - region
        - currency
      operationId: searchProducts
      # ...
  /v1/products/{regionId}/{productId}:
    get:
      x-fern-global-parameter: region
      operationId: getProduct
      # ...
```

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:

1. The per-call value (a per-operation parameter or an explicit request field) — this always wins.
2. The CLI flag or constructor argument.
3. The environment variable (`env`).
4. The client-side default (`x-fern-default`, then `default`).

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](/learn/cli-generator/get-started/openapi-extensions#global-parameters) 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.