Docs
Autenticación API
Autenticación API
Cómo autenticarse con la API de BeatsCode.
Todas las rutas protegidas de la API requieren un JWT access token en el header Authorization.
Obtener tokens
Login con email/contraseña
curl -X POST "https://api.beatscode.co/api/v1/auth/login" \
--data-urlencode "username=tu@email.com" \
--data-urlencode "password=tuContraseña"
Respuesta:
{
"success": true,
"message": "Successfully authenticated",
"data": {
"user": {
"id": "uuid-del-usuario",
"email": "tu@email.com",
"name": "Tu Nombre",
"is_verified": true,
"is_active": true,
"role": "USER"
},
"access_token": "eyJhbGciOi...",
"refresh_token": "eyJhbGciOi...",
"token_type": "bearer"
}
}
Login con Google OAuth
curl -X POST "https://api.beatscode.co/api/v1/auth/google" \
-H "Content-Type: application/json" \
-d '{"token": "google-id-token"}'
Usar el token
Incluye el access token en el header Authorization de cada solicitud:
curl "https://api.beatscode.co/api/v1/auth/me" \
-H "Authorization: Bearer eyJhbGciOi..."
Renovar tokens
Cuando el access token expire (30 minutos), usa el refresh token para obtener uno nuevo:
curl -X POST "https://api.beatscode.co/api/v1/auth/refresh" \
-H "Content-Type: application/json" \
-d '{"refresh_token": "eyJhbGciOi..."}'
Respuesta:
{
"success": true,
"data": {
"access_token": "nuevo-access-token",
"refresh_token": "nuevo-refresh-token",
"token_type": "bearer"
}
}
Cada refresh genera un nuevo par de tokens. El refresh token anterior no se invalida automáticamente, pero tiene una expiración de 7 días.
Cerrar sesión
Para cerrar sesión e invalidar el token actual:
curl -X POST "https://api.beatscode.co/api/v1/auth/logout" \
-H "Authorization: Bearer eyJhbGciOi..."
El token se agrega a la lista negra de Redis y no puede reutilizarse.
Códigos de error
| Código | Descripción |
|---|---|
401 | Token inválido, expirado o revocado |
403 | Sin permisos suficientes para el recurso |
400 | Usuario inactivo |