Ship APIs, not infrastructure. Push a Dockerfile, get a production API. Unkey builds the image, runs it across your chosen regions, and routes every request through Sentinel for API key authentication, rate limiting, and IP rules before it hits your code. Domains, rollbacks, and analytics are handled. You write the application; we run it.Documentation Index
Fetch the complete documentation index at: https://unkey.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Deploy
Push to GitHub or run
unkey deploy. Multi-region, instant rollbacks, automatic domains, preview environments.Sentinel
API key authentication, rate limiting, and IP policies running in front of your app. No middleware to write.
API keys
Issue, verify, revoke. Usage limits, expiration, metadata, identities. Use standalone or attached to a deployment.
Analytics
Who’s using your API, how much, when. Built in, queryable, no pipeline to build.
Why Unkey?
Shipping an API used to mean stitching together a runtime, a CDN, a key store, a Redis for rate limits, an analytics pipeline, and the auth middleware to glue them. Unkey is one platform that runs all of it on servers we operate, so you can focus on the actual API.| Without Unkey | With Unkey |
|---|---|
| Provision servers, configure load balancers, manage TLS | git push or unkey deploy |
| Build key storage, hashing, rotation, revocation | Attached to your app or called via SDK |
| Stand up Redis for rate limiting | unkey.ratelimit.limit() |
| Wire up usage tracking and dashboards | Built-in analytics |
Unkey never stores API keys in plain text. Keys are SHA-256 hashed before storage, so even if our database were compromised your keys stay safe.
What can you build?
Ship a production API from a Dockerfile
Ship a production API from a Dockerfile
Connect a GitHub repository or run
unkey deploy. Unkey builds your image, runs it across your chosen regions, and assigns domains automatically. Every push to your default branch goes to production; every other branch gets a preview environment.Authenticate every request before it hits your app
Authenticate every request before it hits your app
Sentinel sits in front of your deployment and enforces API key checks, rate limits, and IP rules. No SDK call required from inside your app: invalid requests are rejected before they reach your code.
Issue API keys to your customers
Issue API keys to your customers
Issue keys with prefixes, expiration, usage credits, rate limits, and arbitrary metadata. Verify them with one SDK call, attached to a deployment or standalone.
Rate limit anything
Rate limit anything
Per-user, per-IP, per-endpoint, per-anything. Globally distributed, no Redis, attached to a key or completely standalone.
Usage-based billing
Usage-based billing
Issue keys with monthly credits and automatic refills. Verification consumes credits, so usage-based pricing is one config object away.
Get started
Deploy your first app
Connect a GitHub repository (or push a Docker image) and have a live URL in minutes.
Issue your first API key
Create an API, generate a key, and verify it with curl or your favorite SDK.
Framework guides
Step-by-step recipes for Next.js, Bun, Express, Hono, FastAPI, Go.
Cookbook
Ready-to-copy patterns: per-user limits, tiered subscriptions, usage billing.
Choose your path
I want to ship an API
Deploy from GitHub or CLI. Multi-region, rollbacks, preview environments, Sentinel in front.
I just need API keys or rate limits
Use the SDK directly from any backend, no deployment required.
I'm migrating from another solution
Bring existing keys over without disrupting your users.
I want both
Start by deploying. Add API key auth and rate limits as policies on the deployment.
Join the community
Questions, ideas, or just want to talk to other API builders?Discord
Chat with the team and community
GitHub
Star us, file issues, contribute
Twitter / X
Follow for updates

