# Logout div strong 🔨 In Development — This section is still being developed and may change. **POST** `/v1/auth/logout` - Logout the current user and invalidate their authentication tokens. This endpoint provides secure session termination and prevents token reuse. #### Headers **`Authorization`** string required Bearer token for authentication (access token). #### Request Body **`refresh_token`** string optional Refresh token to invalidate (recommended for complete cleanup). ## Returns A [Logout response object](/docs/api-reference/authentication/objects/logout-response-object) containing confirmation of successful logout. ## Response ```json { "message": "Successfully logged out", "logged_out_at": "2025-11-02T10:30:00Z" } ``` ## Logout with refresh token ```bash curl -X POST https://api.freddy.aitronos.com/v1/auth/logout \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "refresh_token": "'$REFRESH_TOKEN'" }' ``` ```python import requests response = requests.post( "https://api.freddy.aitronos.com/v1/auth/logout", headers={ "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" }, json={ "refresh_token": refresh_token # Recommended for complete cleanup } ) if response.status_code == 200: result = response.json() print(f"Logout successful: {result['message']}") # Clear stored tokens access_token = None refresh_token = None else: print(f"Logout failed: {response.status_code}") ``` ```javascript const response = await fetch('https://api.freddy.aitronos.com/v1/auth/logout', { method: 'POST', headers: { 'Authorization': `Bearer ${localStorage.getItem('accessToken')}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ refresh_token: localStorage.getItem('refreshToken') // Optional but recommended }) }); if (response.ok) { const result = await response.json(); console.log('Logout successful:', result.message); // Clear stored tokens localStorage.removeItem('accessToken'); localStorage.removeItem('refreshToken'); localStorage.removeItem('tokenExpiresAt'); // Redirect to login page window.location.href = '/login'; } else { console.error('Logout failed:', response.status); } ``` ## Simple logout ```bash curl -X POST https://api.freddy.aitronos.com/v1/auth/logout \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ```python import requests # Simple logout - just invalidate access token response = requests.post( "https://api.freddy.aitronos.com/v1/auth/logout", headers={"Authorization": f"Bearer {access_token}"}, json={} ) if response.status_code == 200: print("Logged out successfully") access_token = None # Clear token ``` ```javascript // Simple logout - just invalidate access token const response = await fetch('https://api.freddy.aitronos.com/v1/auth/logout', { method: 'POST', headers: { 'Authorization': `Bearer ${localStorage.getItem('accessToken')}`, 'Content-Type': 'application/json' }, body: JSON.stringify({}) }); if (response.ok) { console.log('Logged out successfully'); localStorage.removeItem('accessToken'); // Refresh token remains valid for potential reuse } else { console.error('Logout failed:', response.status); } ``` ## Response examples ```json { "message": "Successfully logged out", "logged_out_at": "2025-11-02T10:30:00Z" } ``` ```json { "detail": "Invalid or expired access token" } ``` ```json { "detail": "Refresh token is invalid or already revoked" } ```