Skip to main content

Login

Shared API

Authenticate a user with email and password.

Quick Navigation

Endpoint

POST /api/v1/auth/login

Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
x-device-fingerprintNoJSON string with device fingerprinting data

Request Body

{
"email": "user@example.com",
"password": "SecurePassword123!",
"workspace_id": 1,
"remember_me": false
}

Parameters

FieldTypeRequiredDescription
emailstringYesUser's email address
passwordstringYesUser's password
workspace_idintegerNoTarget workspace ID
remember_mebooleanNoExtend session to 30 days (default: false, 24 hours)

Response

Success (200)

{
"success": true,
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 3600,
"user_id": 123,
"email": "user@example.com",
"display_name": "John Doe",
"is_verified": true
},
"message": "Login successful"
}

MFA Required (200)

If MFA is enabled for the user:

{
"success": true,
"data": {
"temporary_token": "temp_token_here",
"mfa_required": true,
"message": "MFA verification required"
},
"message": "MFA verification required"
}

Email Verification Required (200)

If email is not verified:

{
"success": true,
"data": {
"temporary_token": "temp_token_here",
"email_verification_required": true,
"message": "Email verification required"
},
"message": "Email verification required"
}

Error Codes

StatusCodeDescription
401INVALID_CREDENTIALSInvalid email or password
403EMAIL_NOT_VERIFIEDEmail address not verified
422VALIDATION_ERRORRequest validation failed
429RATE_LIMITEDToo many login attempts (5 per 15 minutes)

Rate Limiting

  • Limit: 5 attempts per 15 minutes per IP
  • Response: 429 Too Many Requests
  • Rate limit applies per email address

Features

  • Automatic device fingerprinting
  • Session creation
  • Audit logging
  • Returns OAuth2 tokens (access + refresh)
  • Supports "remember me" functionality (30 days vs 24 hours)
  • MFA integration
  • Email verification check

Example

curl -X POST https://api.rivergen.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-H "x-device-fingerprint: {\"screen\":\"1920x1080\",\"timezone\":\"UTC\"}" \
-d '{
"email": "user@example.com",
"password": "SecurePassword123!",
"remember_me": true
}'