Temporary keys automatically become invalid after a specified time. No cleanup required, Unkey handles expiration and deletion for you.
When to use this#
Trial access
Give new users a 7-day trial key. It stops working automatically.
Time-limited integrations
Partner needs API access for a project? Key expires when the project ends.
Session-based access
Generate a key that lasts for a user's session (e.g., 24 hours).
Security rotations
Force key rotation by having keys expire periodically.
How it works#
- Create a key with an
expirestimestamp (Unix milliseconds) - Key works normally until the expiration time
- After expiration, verification returns
code: EXPIRED - Unkey automatically cleans up expired keys
Create a temporary key#
Set expires to a Unix timestamp in milliseconds:
Common expiration times#
| Duration | Calculation |
|---|---|
| 1 hour | Date.now() + 60 * 60 * 1000 |
| 24 hours | Date.now() + 24 * 60 * 60 * 1000 |
| 7 days | Date.now() + 7 * 24 * 60 * 60 * 1000 |
| 30 days | Date.now() + 30 * 24 * 60 * 60 * 1000 |
| Specific date | new Date("2024-12-31").getTime() |
Verification response#
When verifying an expired key:
Extend or change expiration#
Update the expiration time on an existing key:
Remove expiration#
Make a temporary key permanent by setting expires to null:
Combining with other features#
Temporary keys work with all other key features:
Temporary vs usage-limited keys#
| Feature | Temporary Keys | Usage-Limited Keys |
|---|---|---|
| Controlled by | Time | Request count |
| Expires when | Clock hits timestamp | Credits reach 0 |
| Good for | Time-bound access | Pay-per-use, quotas |
| Example | "Access for 7 days" | "1000 requests total" |
Use both together for trial limits: "7 days OR 1000 requests, whichever comes first."