POST
/api/auth/login
Authenticate user and return JWT tokens
URL:
https://hub.regardingwork.com/api/auth/login
Method:
POSTAuthentication:
Not requiredContent-Type:
application/json
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
username |
string | USERNAME only (NOT email address) | |
password |
string | User's password |
Important: Use
username field for login, NOT email address. Email is only used during registration.
Example Request
{
"username": "testhub", // ← USERNAME (not email)
"password": "tester123"
}
Response
Success Response (200)
| Field | Type | Description |
|---|---|---|
message |
string | Success message |
access_token |
string | JWT access token (24-hour expiration) |
refresh_token |
string | JWT refresh token (30-day expiration) |
user |
object | User profile data |
{
"message": "Login successful",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 4,
"username": "testhub",
"email": "testhub@test.com",
"email_verified": false,
"is_active": true,
"created_at": "2025-08-28T11:48:45.124195",
"updated_at": "2025-08-28T11:48:45.124199",
"bio": null,
"website_url": null,
"profile_photo_url": null
}
}
Error Responses
| Status | Error | Description |
|---|---|---|
| 400 | No data provided | Request body is missing or empty |
| 400 | Username/email and password are required | Missing required fields |
| 401 | Invalid credentials | Username/password combination is incorrect |
| 401 | Account is disabled | User account has been deactivated |
Code Examples
const login = async (username, password) => {
try {
const response = await fetch('https://hub.regardingwork.com/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ username, password })
});
const data = await response.json();
if (response.ok) {
// Store tokens
localStorage.setItem('access_token', data.access_token);
localStorage.setItem('refresh_token', data.refresh_token);
console.log('Login successful:', data.user);
return data;
} else {
console.error('Login failed:', data.error);
return null;
}
} catch (error) {
console.error('Network error:', error);
return null;
}
};
// Usage
login('testhub', 'tester123');
import requests
import json
def login(username, password):
url = 'https://hub.regardingwork.com/api/auth/login'
data = {
'username': username,
'password': password
}
try:
response = requests.post(url, json=data)
result = response.json()
if response.status_code == 200:
# Store tokens (adjust storage method as needed)
access_token = result['access_token']
refresh_token = result['refresh_token']
print('Login successful:', result['user'])
return result
else:
print('Login failed:', result.get('error'))
return None
except requests.RequestException as e:
print('Network error:', e)
return None
# Usage
login('testhub', 'tester123')
curl -X POST https://hub.regardingwork.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "testhub",
"password": "tester123"
}'
Try It Live
Test the login endpoint with the demo credentials: