Overview

OpenAPI Extensions

Use these extensions only where the guide says they are supported. Values from an OpenAPI document are treated as untrusted input: malformed values are ignored or reported through Diagnostics, rather than becoming generated code.

Extensions that mirror a configuration block use the same field names and value shapes as Configuration. A standalone Scalar SDK configuration remains the better home for settings shared across multiple documents or targets.

Scalar extensions#

Document root#

Extension Value Effect
x-scalar-sdk-client-settings A clientSettings object Supplies client-wide defaults such as headers, timeouts, retries, idempotency-header settings, and response headers. Credentials in opts are ignored; declare those with OpenAPI security schemes instead.
x-scalar-sdk-settings A settings object Supplies cross-target generation settings, including response-envelope fields, method ordering, positional parameters, and agent-skill generation. fileHeader is ignored.
x-scalar-pagination An array of complete pagination schemes Declares reusable paging schemes. Operations select one by name with their own x-scalar-pagination.
x-scalar-sdk-client-settings:
  defaultTimeout: 30000
  defaultRetries:
    maxRetries: 2
  defaultHeaders:
    X-Client: acme-sdk
 
x-scalar-sdk-settings:
  unwrapResponseFields: [data]
  ordering: crud
 
x-scalar-pagination:
  - name: cursor
    type: cursor
    request:
      cursor:
        type: cursor
        param: cursor
        location: query
    response:
      items:
        type: items
        location: body
        path: [data]
      next:
        type: cursor
        location: body
        path: [next_cursor]

Operations#

Extension Value Effect
x-scalar-method Dotted resource.method name Places an operation in a resource and names the generated method. A single segment is ignored; use x-scalar-method-name when only the name should change.
x-scalar-method-name Method name Names the generated method while retaining inferred resource placement.
x-scalar-ignore true Omits the operation from generated SDKs. The standard x-internal: true marker has the same effect for operations.
x-scalar-deprecation-message String, or { default } Marks the method deprecated and supplies its deprecation message.
x-scalar-retries Non-negative integer Sets the operation's retry count.
x-scalar-streaming sse or jsonl Declares server-sent events or newline-delimited JSON streaming.
x-scalar-pagination Scheme name, false, or an inline scheme Enables paging with a root-declared scheme, explicitly disables it, or declares a one-operation scheme.
x-scalar-unwrap Response property name or false Returns a property from a response envelope, or opts that operation out of global unwrapping. This extension is operation-only; use x-scalar-sdk-settings.unwrapResponseFields for the SDK-wide rule.
paths:
  /users:
    get:
      operationId: listUsers
      x-scalar-method: users.list
      x-scalar-pagination: cursor
      x-scalar-unwrap: data
      responses:
        '200': { description: OK }

Parameters#

Extension Placement Effect
x-scalar-parameter-name Parameter Object Uses this spelling for the SDK parameter.
x-scalar-useDefault Parameter Object Makes the parameter required in the generated SDK even when OpenAPI marks it optional.
x-scalar-allow-reserved Parameter Object Preserves reserved characters when serializing the parameter.

Schemas and properties#

Extension Placement Effect
x-scalar-name Schema Names a generated type or an inline schema promoted to a type.
x-scalar-model Component schema Marks a schema as a surfaced model and can provide its resource-qualified model name.
x-scalar-property-name Property schema Uses this spelling for the generated property.
x-scalar-ignore Component schema or property schema Omits the component or property from the SDK.
x-scalar-unknown Schema Lowers the schema to the target's unknown/untyped value.
x-scalar-override-schema Schema Replaces the schema used for SDK type lowering.
x-scalar-empty-object Schema Treats a property-less object as a deliberate named empty type, rather than an untyped map.
x-scalar-nominal Enum schema Keeps a named enum type instead of collapsing it to a structural union where the target supports that distinction.
x-scalar-variant-name Inline union arm Names an inline oneOf or anyOf variant.
x-scalar-deprecation-message Schema or property schema Supplies the generated deprecation message.
x-scalar-docs Schema or response header Carries documentation metadata into the SDK IR.
x-scalar-example Schema Gives generated SDK samples a preferred value. It takes precedence over a synthesized placeholder.

x-scalar-override-schema takes a Schema Object as its value. This is useful when the published description must retain a broader wire shape while the SDK intentionally exposes a safer or more specific type.

Enums#

The following arrays are aligned with the enum's enum values by index. Values that cannot be aligned are ignored.

Extension Value Effect
x-scalar-enum-names Array of strings SDK member names where the target emits named enum members.
x-scalar-enum-descriptions Array Per-member documentation.
x-scalar-enum-deprecations Array Per-member deprecation metadata.
x-scalar-enum-format union Requests a union-style enum where supported.

Generated OpenAPI additions#

These extensions are written to an augmented OpenAPI document by the generator. They may also be preserved when already present in a source document.

Extension Placement Effect
x-scalar-sdk-installation info Installation instructions for generated SDK targets.
x-scalar-examples Operation An alternative code-sample key with the same { lang, source } entry shape as x-codeSamples.

The code-sample pipeline also recognizes x-codeSamples, x-code-samples, and x-custom-examples on operations. Select the output key with openapi.codeSamples in the SDK configuration.

Imported vendor extensions#

The following are compatibility readers. They are useful when importing an existing Fern, Speakeasy, or Stainless project; new documents should generally use the native Scalar extension or configuration field named in the table.

Fern#

Extension Supported placement Scalar behavior
x-fern-sdk-group-name Operation Resource placement; a string or array creates nested resources.
x-fern-sdk-method-name Operation Generated method name.
x-fern-ignore Operation, component, property, or parameter Omits that node.
x-fern-pagination Operation Pagination scheme and binding.
x-fern-availability Operation, schema, or property deprecated becomes generated deprecation metadata; other availability stages are not mapped.
x-fern-streaming Operation sse or JSON-lines streaming.
x-fern-retries Operation Retry count; Fern's max-attempts is converted to Scalar retries.
x-fern-audiences Operations, schemas, properties, and servers Filters the imported SDK to the audiences selected by the Fern generator configuration.
x-fern-global-headers Document root Default headers or client constructor options.
x-fern-global-parameters Document root Client constructor options and their request locations. Header parameters are sent end to end; other locations are retained as configuration but are not yet emitted by every target.
x-fern-idempotency-headers Document root Client idempotency-header setting; the first declared header wins.
x-fern-idempotent Operation Participates in idempotency compatibility checks; per-operation intent cannot always be represented by Scalar's client-wide setting.
x-fern-base-path Document root Appended to imported environment URLs.
x-fern-server-name Server Imported environment name.
x-fern-default-url Server Imported environment URL, replacing a templated server URL.
x-fern-version Document root Client option sent as the version header; Fern's allowed-values list is not retained.
x-fern-sdk-variables Document root Declares SDK variables.
x-fern-sdk-variable Parameter Binds a parameter to an SDK variable.
x-fern-webhook Operation Prevents an inbound webhook operation from becoming an outbound client call.
x-fern-webhook-signature Document root or webhook Webhook signature-verification settings where Scalar has an equivalent.
x-fern-type-name Schema Generated type name.
x-fern-property-name Property schema Generated property name.
x-fern-parameter-name Parameter Object Generated parameter name.
x-fern-enum Enum schema Per-member name, description, and deprecation. Its per-target casing field is not mapped.
x-fern-default Parameter Object The default value sent when the SDK caller omits the parameter.
x-fern-examples Any Not used for generated SDK samples; its shape differs from Scalar's code-sample extensions.

Speakeasy#

Extension Supported placement Scalar behavior
x-speakeasy-name-override Operation, including a global parameter Operation method name or global client-option name. The root regex-rule form is deliberately not evaluated.
x-speakeasy-globals Document root Hoists listed parameters to client constructor options. Header globals are emitted; query, path, and body locations are retained as configuration but are not yet sent by every target.
x-speakeasy-pagination Operation Selects the imported pagination scheme.
x-speakeasy-retries Document root Imports SDK-wide retry settings.

Stainless#

Extension Supported placement Scalar behavior
x-stainless-pagination-property Parameter or response-field schema Infers pagination type and field roles.
x-stainless-skip Parameter or property schema Omits the node.
x-stainless-empty-object Schema Same behavior as x-scalar-empty-object.
x-stainless-param Parameter schema Canonical SDK parameter name, re-cased for each target.
x-stainless-naming Object, enum, or parameter schema Per-target property_name and type_name overrides. node is the TypeScript target alias.
x-stainless-renameMap Enum schema SDK member names, using { sdkName: wireValue }.

Extensions outside the SDK vocabulary#

x-scalar-navigation, x-scalar-order, x-scalar-is-dirty, x-scalar-original-document-hash, x-scalar-original-source-url, and x-scalar-registry-meta are Scalar workspace metadata. The loader strips them before generation; do not use them to control an SDK.

x-displayName and x-tagGroups are preserved or synthesized only when generating an augmented OpenAPI document with openapi.tags: "resources"; they do not alter generated SDK methods or models.

Next steps#

  • Configuration — the config blocks mirrored by root-level extensions
  • Pagination — the scheme shape x-scalar-pagination carries, and the helpers it generates
  • Diagnostics — messages for invalid, ignored, or incomplete input
  • AsyncAPI — SDK generation from AsyncAPI documents

Updated

Was this page helpful?