TL;DR: The Quick Fix
This error pops up when the Groq API doesn't recognize the string you've passed to the model parameter. Usually, it's just a typo or a shorthand name like llama3 instead of the full ID, such as llama-3.1-8b-instant.
To fix it immediately, update your code with a valid model ID from the registry:
# Change this:
completion = client.chat.completions.create(model="llama3", ...)
# To this (current Llama 3.1 ID):
completion = client.chat.completions.create(model="llama-3.1-8b-instant", ...)
Why is this happening?
Seeing a 404 error in your console? It means the API can't find the specific resource you're asking for. Unlike some providers that alias short names to the latest version, Groq requires the exact model string. It’s a common headache, but usually boils down to three things:
- Missing Suffixes: Forgetting the version or context window (e.g., using
mixtral-8x7binstead ofmixtral-8x7b-32768). - Deprecated Models: Trying to use an older model like
llama3-8b-8192after it has been replaced by thellama-3.1or3.2series. - Hidden Characters: Extra spaces or newline characters in your
.envfile can break the request.
Step-by-Step Fixes
1. List Active Models via the SDK
Stop guessing the name. You can pull the live list of active models directly from Groq. This is the most reliable way to see what is currently supported in your region.
from groq import Groq
import os
client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
# Fetch all available models
models = client.models.list()
print("Current Valid Model IDs:")
for model in models.data:
print(f"- {model.id}")
Run this script and copy the exact string. If llama-3.2-3b-preview is on the list, use that exact text.
2. Use Updated Model IDs
Model names change as Groq updates its infrastructure. Ensure your configuration matches these common patterns used in late 2024:
- Llama 3.1 8B:
llama-3.1-8b-instant - Llama 3.1 70B:
llama-3.1-70b-versatile - Llama 3.2 1B (Preview):
llama-3.2-1b-preview - Mixtral 8x7b:
mixtral-8x7b-32768
3. Clean Your Environment Variables
If you load your model name from a .env file, a single trailing space will trigger a 404. Use .strip() to sanitize the input before it hits the client.
import os
from groq import Groq
# Fetch from environment with a fallback
RAW_MODEL_NAME = os.getenv("GROQ_MODEL_NAME", "llama-3.1-8b-instant")
# Remove accidental whitespace
CLEAN_MODEL_NAME = RAW_MODEL_NAME.strip()
client = Groq()
# Now use CLEAN_MODEL_NAME in your API call
Verify the Fix
Run this minimal script to confirm everything is working. If it prints a response, your model configuration is solid.
from groq import Groq
client = Groq()
try:
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": "Test"}],
model="llama-3.1-8b-instant",
)
print("Success! Model found.")
except Exception as e:
print(f"Still failing: {e}")
Pro-Tips for Production
Don't let a model deprecation break your app. Define your model IDs in a central config.py rather than hardcoding them in multiple files. For mission-critical apps, wrap your calls in a try-except block. Catching groq.NotFoundError specifically allows you to log a clear alert for your team so they can update the model ID immediately.
Further Reading
- Groq Official Model Documentation - The definitive list of supported LLMs.
- Groq Python SDK GitHub - Check here for library updates and breaking changes.

