54 lines
1.9 KiB
Markdown
54 lines
1.9 KiB
Markdown
# Better Auth API — LobeHub Self-Hosted
|
||
|
||
## Endpoints
|
||
|
||
```
|
||
POST /api/auth/sign-up/email — регистрация
|
||
POST /api/auth/sign-in/email — логин
|
||
GET /api/auth/session — сессия (требует cookie)
|
||
```
|
||
|
||
## Sign-Up
|
||
|
||
```python
|
||
import httpx
|
||
|
||
r = httpx.post("http://[REDACTED-IP]:3210/api/auth/sign-up/email",
|
||
json={"email": "[REDACTED-EMAIL]", "password": "Str0ng!Pass", "name": "username"},
|
||
headers={
|
||
"Origin": "http://[REDACTED-IP]:3210",
|
||
"Referer": "http://[REDACTED-IP]:3210/signin?referral=fQXk8Gr5",
|
||
"Content-Type": "application/json"
|
||
},
|
||
timeout=15
|
||
)
|
||
# 200 → {"token": "...", "user": {"id": "user_xxx", "email": "...", ...}}
|
||
# 400 → {"message": "Missing or null Origin", "code": "MISSING_OR_NULL_ORIGIN"}
|
||
# 429 → {"message": "Too many requests..."}
|
||
```
|
||
|
||
## Sign-In (валидация)
|
||
|
||
```python
|
||
r = httpx.post("http://[REDACTED-IP]:3210/api/auth/sign-in/email",
|
||
json={"email": "[REDACTED-EMAIL]", "password": "Str0ng!Pass"},
|
||
headers={"Origin": "http://[REDACTED-IP]:3210", "Referer": "http://[REDACTED-IP]:3210/signin"},
|
||
timeout=10
|
||
)
|
||
# 200 → {"token": "...", "user": {...}}
|
||
# 401 → invalid credentials
|
||
```
|
||
|
||
## Rate Limit
|
||
|
||
- 3-4 регистрации за burst → 429 "Too many requests"
|
||
- Пауза 15-30 секунд
|
||
- ~40 аккаунтов за 5 минут при sequential режиме
|
||
- Rate limit per-IP, не per-email
|
||
|
||
## Pitfalls
|
||
|
||
1. **Origin/Referer headers обязательны** — без них 400 MISSING_OR_NULL_ORIGIN
|
||
2. **Referer с referral параметром** — передаёт реферальный код при регистрации
|
||
3. **Email не верифицируется** — можно использовать любые email адреса
|
||
4. **Token в ответе НЕ Bearer** — это session token, передаётся в cookie, не в Authorization header |