Base URL: https://api.lockbox.dev/v1
All requests need Authorization: Bearer <token> header except login/register.
curl -X POST https://api.lockbox.dev/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "secretpass123"}'Body
| Field | Type | Notes |
|---|---|---|
| string | required | |
| password | string | min 8 chars |
| name | string | optional |
Response 201
{
"id": "usr_x7ka92m",
"email": "user@example.com",
"created_at": "2024-01-15T10:30:00Z"
}Errors
400invalid_email - bad format400weak_password - too short or common409email_exists - already registered
curl -X POST https://api.lockbox.dev/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "secretpass123"}'Response 200
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"expires_in": 86400,
"user": {
"id": "usr_x7ka92m",
"email": "user@example.com"
}
}Token valid for 24h. Pass "remember": true in body for 7 days.
Errors
401invalid_credentials403account_locked - too many attempts, wait 15min
Invalidates token. Returns 204 (no body).
{"email": "user@example.com"}Always returns 200 even if email doesn't exist (prevents enumeration).
{
"token": "rst_abc123...",
"password": "newpassword123"
}Token from email, valid 1 hour.
| Endpoint | Limit |
|---|---|
| /auth/login | 5/15min |
| /auth/register | 3/hour |
| everything else | 100/min |
When limited you get 429 with retry_after in seconds.
{
"error": "error_code",
"message": "Human readable message"
}- 1.2 (Jan 2024) - added remember option to login
- 1.1 (Dec 2023) - rate limiting
- 1.0 (Nov 2023) - initial