n8n-io/n8n · error · OperationalError
This model requires the Responses API. Enable "Use Responses
Error message
This model requires the Responses API. Enable "Use Responses API" in the OpenAI Chat Model node options to use this model.
What it means
When an OpenAI model that is only available via the Responses API (not the Chat Completions API) is selected, OpenAI returns a 404 with param 'model' and a message containing 'not a chat model'. The openAiFailedAttemptHandler detects this shape and throws an OperationalError directing the user to enable the 'Use Responses API' toggle in the node options. This is a model-vs-API-surface mismatch.
Source
Thrown at packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/error-handling.ts:38
if (typeof error !== 'object' || error === null) {
return false;
}
return (
'status' in error &&
error.status === 404 &&
'type' in error &&
error.type === 'invalid_request_error' &&
'param' in error &&
error.param === 'model' &&
'message' in error &&
typeof error.message === 'string' &&
error.message.includes('not a chat model')
);
}
export const openAiFailedAttemptHandler = (error: unknown) => {
if (isNonChatModelError(error)) {
throw new OperationalError(
'This model requires the Responses API. Enable "Use Responses API" in the OpenAI Chat Model node options to use this model.',
{ cause: error },
);
}
if (error instanceof RateLimitError) {
// If the error is a rate limit error, we want to handle it differently
// because OpenAI has multiple different rate limit errors
const errorCode = error?.code;
const errorMessage =
getCustomErrorMessage(errorCode ?? 'rate_limit_exceeded') ?? errorMap.rate_limit_exceeded;
throw new OperationalError(errorMessage, { cause: error });
}
};
View on GitHub (pinned to 5ac6606e81)
Solutions
- Open the OpenAI Chat Model node options and enable 'Use Responses API'
- Switch to a chat-compatible model such as gpt-4o or gpt-4-turbo if you need the Chat Completions API
- Check the OpenAI model documentation to confirm which API surface the model requires
Example fix
// before — model: 'o3', useResponsesApi: false // after — model: 'o3', useResponsesApi: true
Defensive patterns
Strategy: validation
Validate before calling
// Check model compatibility before the API call
const responsesApiModels = ['o1', 'o1-pro', 'o3', 'o3-mini', 'o4-mini'];
const needsResponsesApi = responsesApiModels.some(m => modelId.startsWith(m));
if (needsResponsesApi && !options.useResponsesApi) {
throw new UserError(`Model ${modelId} requires the Responses API. Enable it in node options.`);
} Type guard
function isChatModel(modelId: string): boolean {
const nonChat = ['o1', 'o1-pro', 'o3', 'o3-mini', 'o4-mini'];
return !nonChat.some(prefix => modelId.startsWith(prefix));
} Prevention
- Check the OpenAI model documentation for which API surface each model supports
- When switching models, verify the 'Use Responses API' toggle matches the model's requirement
- Test model changes in a simple workflow before deploying to production
When it happens
Trigger: Using a model like 'o3' or other reasoning/non-chat models with the OpenAI Chat Model node when 'Use Responses API' is not enabled. The SDK sends the request to /v1/chat/completions, and OpenAI returns a 404 invalid_request_error with param=model and 'not a chat model' in the message.
Common situations: Switching from a chat model (gpt-4o) to a Responses-API-only model (o1, o3) without toggling the node option; upgrading the model ID without checking API compatibility; using a model ID copy-pasted from OpenAI Playground that targets the Responses API.
Related errors
- This model is not supported in ${version} version of the Age
- This fallback model is not supported in ${version} version o
- The value in the "Extra Body" field is not valid JSON
- The value in the "Extra Body" field must be a JSON object
- Invalid authentication method
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/08698e6b75662da9.
Report an issue: GitHub.