"401 Authorization failed"
The key was rejected. In the lesson's test, n8n had pre-filled an account with a dead key, and the model list failed with 401 Authorization failed.
Fix:
- Click the Credential box and pick the credential you know works.
- No working credential? Make a key on the OpenAI API Keys page, add funds under Billing, and paste the key into a new credential.
- Click the Model box. If the list loads, the key works.
An API key is a secret; never paste it into a prompt or a sheet.
The Model list is empty or spinning
The list loads from OpenAI using the credential, so an empty list is almost always the same key problem as a 401. Fix the credential first. If the key is new, wait a minute and try again.
The {{ }} parts reach OpenAI as plain text
The Prompt field is still in Fixed mode, so {{ $json.Client }} is sent as those exact characters.
Fix: hover over the Prompt box and click Expression. The braces turn green and a Result line shows the first row's real values. In the lesson's test, skipping this sent the braces to OpenAI as plain text. The same goes for Gmail's Subject, Message and To Email fields. n8n Expressions for Beginners explains Fixed vs Expression.
"429" or "exceeded your current quota"
A 429 can be a rate limit or an account with no credit. If the message says quota, add credit; slowing down won't help. Fix OpenAI 429 in n8n covers both.
The answer is far too long
The prompt doesn't set a length. In the Google Sheets lesson, the template's system message said only "write a description" and the model wrote whole paragraphs. Changing it to "Take in the topic and write a one-sentence description" fixed it. The client status lesson asks for "under 90 words".
Costs add up faster than expected
The AI node runs once per item. In the Google Sheets lesson the agent shows 9 items and makes 9 OpenAI calls. That's cheap for nine rows, but it adds up on a long sheet. Filter out rows that don't need AI before the node, and use a small model like gpt-4o-mini or GPT-4.1-MINI for short tasks.
The AI makes things up
Tell it not to and give it only the facts. The client status prompt ends with "Do not invent facts", and the workflow saves Gmail drafts rather than sending, so a person reads each one first. The meeting notes lesson adds the habit: read the AI tasks before you rely on them.
Try it free, step by step
n8n: Weekly Client Status Emails from a Google Sheet, Written by AI. Build an n8n workflow that wakes up every Monday, reads your client tracker in Google Sheets, has AI write a friendly update for each client and saves it as a Gmail draft. You do every step yourself in a practice copy of n8n, it checks your work as you go, and “Do it for me” finishes any step you get stuck on. Free, and nothing touches your real accounts.
Start the free lessonWhere is the answer in the output?
For Message a model, the text is at {{ $json.output[0].content[0].text }}. If a later node shows nothing, check you mapped that path, not $json.text or $json.message.
Key takeaways
- 401 Authorization failed means the credential's key doesn't work; pick or create a working one.
- An empty Model list is a credential problem, not a model problem.
- Switch prompt fields to Expression, or the braces are sent as text.
- AI nodes run once per item: limit length, filter rows and pick a small model.
Frequently asked questions
- Why does n8n say 401 Authorization failed for OpenAI?
The API key in the selected credential is invalid, revoked or tied to an account without billing. Select or create a credential with a working key.
- Do I need ChatGPT Plus to use OpenAI in n8n?
No. n8n uses the OpenAI API, which is billed separately and pay-as-you-go. Add funds under Billing on the OpenAI platform.
- Why does my prompt show {{ $json.Client }} in the AI's answer?
The field was left in Fixed mode. Switch it to Expression so n8n fills in the value before sending.
- Which course is this from?

