GreenPT Docs

Reasoning effort

Which reasoning_effort values each model accepts, and what they do.

reasoning_effort controls a model's thinking budget on /v1/chat/completions. Omit it to keep thinking enabled, which is the default, or pass "none" to switch thinking off.

{
  "model": "glm-5.2",
  "messages": [{ "role": "user", "content": "Explain database connection pooling." }],
  "reasoning_effort": "none"
}

The accepted values differ per model

There is no single value set that works everywhere. Each model accepts only the values in the table below and rejects the rest with a 400. Check your model before sending a value, especially if you switch models behind the same code path.

What each model accepts

ModelAccepted reasoning_effort values
glm-5.2none · minimal · low · medium · high
glm-5.2-caveman, -honey, -ponytail (and their -lite / -ultra variants)none · minimal · low · medium · high
kimi-k3none · minimal · low · medium · high
kimi-k2.6none · minimal · low · medium · high
kimi-k2.7-codenone · minimal · low · medium · high
minimax-m2.5none · minimal · low · medium · high
qwen3.5-397b-a17bnone · minimal · low · medium · high
qwen3.6-35b-a3bnone · minimal · low · medium · high
gemma4none · minimal · low · medium · high
devstral-2-123b-instruct-2512none · minimal · low · medium · high
deepseek-v4-flash-0731none · minimal · low · medium · high
green-l, green-l-rawnone · low · medium · high
gemma-3-27b-itnone · low · medium · high
mistral-small-3.2-24b-instruct-2506none · low · medium · high
qwen3-coder-30b-a3b-instructnone · low · medium · high
pixtral-12b-2409none · low · medium · high
green-r, green-r-rawlow · medium · high
gpt-oss-120blow · medium · high
holo2-30b-a3blow · medium · high
llama-3.3-70b-instructlow · medium · high
qwen3-235b-a22b-instruct-2507low · medium · high
mistral-medium-3.5-128bnone · high

voxtral-small-24b-2507 takes audio input and is not covered by this table.

green-r and green-l differ

green-r and green-r-raw reject "none", so thinking cannot be switched off on them. green-l and green-l-raw accept it. If you need a GreenPT-branded id with thinking off, use green-l or send "none" to gemma4.

What the values do

none disables thinking where it is accepted, and this is visible in the response. The same prompt to glm-5.2 reports several hundred reasoning tokens without the parameter and exactly 0 with "none", cutting the answer from roughly 580 completion tokens to 180.

The levels in between behave differently depending on the model, so it is worth knowing which of the two groups you are on:

green-r, green-r-raw and gpt-oss-120b scale with the level. Measured on the same prompt, low to high is roughly a threefold difference in generated tokens:

Modellowmediumhigh
green-r~263~408~722
gpt-oss-120b~314~488~1036

On these three, the level is a real budget control and worth tuning. They are also the models that reject "none", so thinking cannot be switched off, only turned down to low.

On glm-5.2 and its compression variants the levels do not differentiate. low, medium and high all mean "thinking enabled" and the run-to-run spread is wider than the gap between them, so treat the choice there as on or off and use "none" when you want it off.

Token counts above are averages of three runs on one prompt. They show the shape of the control, not a figure to budget against.

Not every model returns thinking as a separate field. glm-5.2 and its compression variants, kimi-k3 and holo2-30b-a3b populate reasoning_content and usage.completion_tokens_details.reasoning_tokens; the others fold any reasoning into the normal answer, so "none" is accepted but has nothing separate to remove.

Reading it from the response

"usage": {
  "prompt_tokens": 24,
  "completion_tokens": 115,
  "completion_tokens_details": { "reasoning_tokens": 102 }
}

Reasoning tokens are billed at the normal output rate. On glm-5.2 roughly a third to a half of a typical answer is reasoning, which is why "none" is worth sending on short, high-volume calls such as classification or routing.

Combining with compression models

reasoning_effort composes with the compression models. The compression rulesets shorten the visible answer but not the reasoning, so sending "none" alongside a compression id removes the part they cannot reach:

{
  "model": "glm-5.2-honey",
  "messages": [{ "role": "user", "content": "Add retry with backoff to this fetch call." }],
  "reasoning_effort": "none"
}

On this page