Skip to main content
Browser Use exposes reasoning controls in two forms:
  • API V4 uses provider-native values inside modelParams.
  • API V3 and V2 use the provider-neutral thinkingLevel field with disabled, low, medium, or high.
See Models for the complete V4 model list, recommended model, token pricing, and BYOK routes.

API V4 model parameters

V4 forwards an allow-listed modelParams object to the selected provider. The field names and accepted values therefore differ by model family. glm-5.2, grok-4.5, kimi-k3, minimax-m3, and claude-fable-5 do not currently accept V4 modelParams.
Omitting modelParams applies Browser Use’s defaults for that V4 model. For example, gpt-5.6-luna defaults to reasoning.effort: xhigh. Send an empty object ("modelParams": {}) to opt out and use the provider’s defaults.

V4 examples

API V3 support

V3 accepts the normalized REST field thinkingLevel. Legacy aliases are normalized before validation: bu-mini maps to gemini-3-flash, bu-max maps to claude-sonnet-5, and bu-ultra maps to claude-opus-4.6. For a follow-up task sent to an existing V3 session:
  • Omit thinkingLevel to retain the session’s current setting.
  • Send a supported value to update the setting for the next task and later follow-ups.
  • Send "thinkingLevel": null to clear it and return to provider defaults.
The requested value is validated against the existing session’s model, not the request model default.

API V2 support

V2 also accepts the normalized REST field thinkingLevel, but it has two additional limitations. It cannot configure GLM thinking, and it cannot enable fixed-budget thinking on older Claude 4/4.5 models because the legacy worker cannot safely replay their thinking blocks. Those Claude models still accept disabled. V2’s existing thinking boolean controls legacy agent behavior. It does not select a provider reasoning depth and does not replace thinkingLevel.

Provider mappings for V2 and V3

Browser Use validates the normalized V2/V3 value before dispatch, then maps it to the provider’s native control.

BYOK behavior

  • V2: thinkingLevel uses the existing model route. It does not add a per-request BYOK switch.
  • V3: set useOwnKey: true for models that require a provider key. Native and BYOK routes use the same support matrix.
  • V4: add an Anthropic, OpenAI, or Google key under Settings → API Keys → Bring Your Own Key. V4 automatically uses a matching key; there is no request flag. modelParams works the same with Browser Use-managed and customer-managed keys.

V2 and V3 examples

REST JSON uses the camelCase wire field thinkingLevel in both API versions.

Validation errors

Unsupported V2/V3 model-level pairs return HTTP 422. The request field is camelCase, while the validation detail currently names the backend field in snake_case:
V4 validates the provider-native path and uses its wire name in the error:

Compatibility and API references

The normalized V2/V3 field is optional and nullable. Existing sessions keep using provider defaults until a level is supplied. The checked-in generated SDK clients do not expose this field yet, so use the REST examples above until the follow-up SDK regeneration is released. V4 SDK clients can send modelParams once their generated V4 type includes the current contract.

V4 create run

Generated V4 modelParams schema.

V3 create session

Generated V3 thinkingLevel schema.

V2 create task

Generated V2 thinkingLevel schema.