What you’ll build
A Next.js API route that requires a valid API key on every request. Invalid or missing keys get rejected with a 401. Time to complete: ~5 minutesPrerequisites
- Unkey account (free)
- Keyspace created in your Unkey dashboard
1
Create a Next.js app
Skip this if you have an existing project.
2
Install the Unkey SDK
3
Add your root key
Get a root key from Settings → Root Keys and add it to your environment:
.env.local
4
Create a protected route
Create a new API route that requires authentication:
app/api/protected/route.ts
5
Start your server
6
Test it
First, create a test key in your Unkey dashboard, then:You should see:Now try without a key:You’ll get a
Test with valid key
Test without key
401 Unauthorized response.What’s in req.unkey?
After verification, req.unkey.data contains:
data.meta is your custom key metadata (set via meta when creating the
key). This is different from the response’s top-level meta which contains
requestId.Next steps
Add rate limiting
Limit requests per key
Set usage limits
Cap total requests per key
Add permissions
Fine-grained access control
Next.js SDK Reference
Full SDK documentation
Troubleshooting
Getting 401 even with a valid key?
Getting 401 even with a valid key?
- Ensure the key hasn’t expired or been revoked - Verify the
Authorizationheader format:Bearer YOUR_KEY(note the space) - Check that your root key has theverify_keypermission
Environment variable not loading?
Environment variable not loading?
- Restart your dev server after adding
.env.local- Make sure the file is in your project root - Check for typos in the variable name