> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecontra.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Login

> Re-authenticate an existing account when your access_token expires.

You don't need this for verification calls — those use the long-lived `api_key`. You need it to **manage** your account later (rotate keys, create new applications).

## Request

```bash theme={null}
curl -X POST https://auth.contra.id/v1/programmatic/login \
  -H "Content-Type: application/json" \
  -d '{
    "email":    "you@yourco.com",
    "password": "MyStr0ng!Pass"
  }'
```

## Response · 200

```json theme={null}
{
  "access_token":  "eyJ…",
  "refresh_token": "eyJ…",
  "expires_in":    86400
}
```

## Lockout

Progressive lockout protects against brute force:

| Consecutive failures | Lockout    |
| -------------------- | ---------- |
| 5                    | 15 minutes |
| 10                   | 1 hour     |
| 20                   | 24 hours   |
