API Keys
Bun
Authentication for Bun’s http server
Prerequisites
- Created your Unkey account
- Created an API in the Unkey dashboard
Skip the tutorial
Don’t want to read the tutorial? Click this to get an example ready to test.
Creating a bun server protected by Unkey
1
Create a new Bun project
First we need a bun project, so create a new directory and init bun.
mkdir unkey-with-bun
cd unkey-with-bun
bun init -y
2
Install
Now install the @unkey/api
package
bun install @unkey/api
3
Modify the server
Open up the file called index.ts
and add the following code
index.ts
import { verifyKey } from "@unkey/api";
const server = Bun.serve({
async fetch(req) {
const key = req.headers.get("Authorization")?.replace("Bearer ", "");
if (!key) {
return new Response("Unauthorized", { status: 401 });
}
const { result, error } = await verifyKey(key);
if (error) {
// This may happen on network errors
// We already retry the request 5 times, but if it still fails, we return an error
console.error(error);
return Response.json("Internal Server Error", { status: 500 });
}
if (!result.valid) {
return new Response("Unauthorized", { status: 401 });
}
return Response.json(result);
},
port: 8000,
});
console.log(`Listening on ${server.url}`);
4
Running the server
bun run index.ts
5
Try it out
Go to https://app.unkey.com
and create a new key. Then verify it with our new server:
curl http://localhost:8000 -H "Authorization: Bearer <KEY>"
It should return {"keyId":"key_id","valid":true,"meta":{},"enabled":true,"permissions":[],"code":"VALID"}
and potentially more information about the key, depending on what you set up in the dashboard.
What is next?
Now that you’ve seen the power of Unkey, check out some resources below to continue your journey.