Which model returns this 400?
gpt-6-luna, on POST /v1/chat/completions, when the request includes function tools and reasoning_effort is not none. The model page lists Chat Completions as supported for other calls.
A Chat Completions request that sends function tools to gpt-6-luna fails unless reasoning_effort is none. The model page says to use the Responses API for function calling.
Function tools with reasoning_effort are not supported for gpt-6-luna in /v1/chat/completions The GPT-6 Luna model page says: use the Responses API for built-in tools and function calling. Chat Completions supports function calling only with reasoning_effort set to none. The same page lists fine-tuning (v1/fine-tuning) as not supported. Source: GPT-6 Luna model page, checked October 20, 2026.
| Model id | What the source says |
|---|---|
gpt-6-luna | Function calling on Chat Completions works only with reasoning_effort set to none. The Responses API is the documented path for function calling. |
For function tools, call the Responses API. To stay on Chat Completions, set reasoning_effort to none. The model page says that is the only Chat Completions function-calling mode for gpt-6-luna. The Responses tool object matches OpenAI's function calling guide: https://developers.openai.com/api/docs/guides/function-calling
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-6-luna",
input=[{"role": "user", "content": "Hello"}],
tools=[{
"type": "function",
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}],
)
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-6-luna",
messages=[{"role": "user", "content": "Hello"}],
reasoning_effort="none",
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}],
)
Source: GPT-6 Luna model page, checked October 20, 2026.
LiteLLM documents model openai/responses/gpt-6-luna for the Responses API. Use that when the call includes function tools. On a Chat Completions model string, set reasoning_effort to none, which is the only function-calling mode the OpenAI model page allows on that endpoint.
import litellm
response = litellm.completion(
model="openai/responses/gpt-6-luna",
messages=[{"role": "user", "content": "Hello"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}],
)
import litellm
response = litellm.completion(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "Hello"}],
reasoning_effort="none",
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}],
)
Source: LiteLLM OpenAI provider, checked October 20, 2026.
openai('gpt-6-luna') uses the Responses API. The AI SDK guide says to use the Responses API for GPT-6 tool calling. openai.chat() stays on Chat Completions, so set providerOptions.openai.reasoningEffort to none when that call includes tools.
import { openai } from "@ai-sdk/openai";
import { generateText, tool } from "ai";
import { z } from "zod";
const result = await generateText({
model: openai("gpt-6-luna"),
prompt: "What is the weather in Paris?",
tools: {
get_weather: tool({
description: "Get the weather for a city.",
inputSchema: z.object({ city: z.string() }),
}),
},
});
import { openai, type OpenAILanguageModelChatOptions } from "@ai-sdk/openai";
import { generateText, tool } from "ai";
import { z } from "zod";
const result = await generateText({
model: openai.chat("gpt-6-luna"),
prompt: "What is the weather in Paris?",
tools: {
get_weather: tool({
description: "Get the weather for a city.",
inputSchema: z.object({ city: z.string() }),
}),
},
providerOptions: {
openai: {
reasoningEffort: "none",
} satisfies OpenAILanguageModelChatOptions,
},
});
Source: AI SDK OpenAI guide, checked October 20, 2026.
gpt-6-luna, on POST /v1/chat/completions, when the request includes function tools and reasoning_effort is not none. The model page lists Chat Completions as supported for other calls.
Use the Responses API for function calling. On Chat Completions, set reasoning_effort to none. Switch guides: gpt-4o-mini-2024-07-18, gpt-4o-2024-08-06, and gpt-4o-2024-11-20.
No. The GPT-6 Luna model page lists the fine-tuning endpoint as not supported.