Why is "Reasoning Effort" only available for models matching gpt-5*, o1, and o3+

Hi everyone,

I’m using the OpenAI Chat Model node with a custom OpenAI-compatible endpoint (LiteLLM) serving a model that supports reasoning.

For example, my model (glm-5.2) supports the OpenAI-compatible reasoning_effort parameter, but I noticed that the Reasoning Effort option doesn’t appear in the node. It only appears when selecting a model whose name matches certain OpenAI models (for example, gpt-5.*), which seems to be a frontend check.

After looking through the source code, I found that the field is only shown when the model name matches this regex:

regex: '(^o1([-\\d]+)?$)|(^o[3-9].*)|(^gpt-5.*)'

So, for example:

  • :cross_mark: glm-5.2 → Reasoning Effort is hidden
  • :white_check_mark: gpt-5.6 → Reasoning Effort appears

The request logic itself is generic—it simply sends:

{
  "reasoning_effort": "high"
}

This means the limitation appears to be only in the UI.

I also noticed that the available values are limited to low, medium, and high. It would be nice if the field were editable (or at least included additional values such as none, which several providers support).

For OpenAI-compatible providers like LiteLLM, vLLM, LM Studio, OpenRouter, etc., custom model names can still support reasoning_effort, so this regex prevents users from accessing a feature that their backend already supports.

Would it make sense to either:

  • always show the option when using a custom Base URL,
  • determine support from model capabilities instead of matching the model name, or
  • simply make the option available for all OpenAI-compatible models and let the backend validate whether it’s supported?

I’m mainly wondering whether this is an intentional design decision or simply an implementation shortcut.

Great finding, @mohamed3nan !!!

Now I know how to “turn on” reasoning for other models :partying_face:

Feature request here:

You may want to upvote it

Thanks! I actually found a workaround in the comments on that topic. Just switch the model selector to “By ID” and enter your model name manually:


The remaining issue is that Reasoning Effort only accepts low, medium, and high. There’s no support for values like none, xhigh, or max, even though many of the latest frontier models support them.

It seems this node hasn’t kept up with the newer reasoning capabilities yet..

Hopefully it’ll be updated soon, maybe as part of n8n v3..

Hi @mohamed3nan
The low/medium/high limit isn’t only the dropdown, the node whitelists the value in its request builder too. On the default Chat Completions path, reasoning_effort is only forwarded when it equals low, medium, or high, so a value like none, xhigh, or max is dropped before the call and never reaches your endpoint, no matter how the model is selected.
To send an arbitrary reasoning_effort to LiteLLM, bypass the node and call your /chat/completions with an HTTP Request node, with the value straight in the body, n8n forwards it as-is:

{
  "model": "glm-5.2",
  "messages": [ { "role": "user", "content": "..." } ],
  "reasoning_effort": "minimal"
}

Finally, this was resolved with a good approach in the new version n8n@2.34.0:

There is a new Extra Body field that we can now use to pass anything the backend supports, such as reasoning_effort..

Thanks everyone!