Login & Token Exchange (Atlas Company)
Overview
The POST /banking/ibans/v2/users/login endpoint allows client applications to exchange developer credentials (clientId and apiKey) for a Bearer JWT token.
The returned jwt token must be supplied in the Authorization header of all subsequent calls to protected Atlas API endpoints:
Authorization: Bearer <jwt>
[!NOTE] The issued
jwttoken is valid for 60 minutes. When expired, repeat the login call to generate a fresh token.
Resource Access
- HTTP Method:
POST - Endpoint:
/banking/ibans/v2/users/login - Authentication: None required (public authentication endpoint)
Request Headers
| Header | Value | Required | Description |
|---|---|---|---|
Content-Type | application/json | Yes | Request payload format |
Accept | application/json | Yes | Response payload format |
Request Body
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
clientId | string | Yes | The unique 28-digit alphanumeric identifier assigned to your account in the developer portal. |
apiKey | string | Yes | The secret API key generated in the portal to authorize requests. |
mode | string | Yes | Must be passed as apiKey to specify API customer authorization. |
Request Example
{
"clientId": "YOUR_CLIENT_ID",
"apiKey": "YOUR_API_KEY",
"mode": "apiKey"
}
Response
Success Response (200 OK)
{
"userId": 1234,
"companyId": "1234",
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiI0NjI1YWVkOC0xMmZmLTIzMmQtZWE0OC0yYWYzMjllMGVjNTEiLCJsb2dpbk1vZGUiOiJhcGlLZXkiLCJpZCI6NTI2LCJjb21wYW55SWQiOjUyNSwidXNlclJlY29yZElkIjoxNDgsInJvbGUiOiJOT1JNQUxfQ0xJRU5UIiwicmF0ZUxpbWl0IjoyMDAwLCJpYXQiOjE3MjExMjAyMDcsImV4cCI6MTcyMTEyMzgwN30.nLOVQFjQuAOAjKRU5lH49BCjdKaO3OpDOwOImdHCPqg"
}
Response Fields
| Field | Type | Description |
|---|---|---|
userId | string/integer | Unique identifier of the authenticated user record. |
companyId | string | Unique corporate entity identifier associated with the credentials. |
jwt | string | Base64-encoded JWT Bearer access token valid for 60 minutes. Pass as Authorization: Bearer <jwt>. |
Error Responses
- 400 Bad Request: Invalid payload format or missing mandatory
clientId/apiKey/mode. - 401 Unauthorized: Invalid credentials, inactive account, or unauthorized access origin.
- 500 Internal Server Error: Internal platform error during authentication processing.
Code Examples
cURL
curl -X POST "https://gateway.ahrvo.network/banking/ibans/v2/users/login" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"clientId": "YOUR_CLIENT_ID",
"apiKey": "YOUR_API_KEY",
"mode": "apiKey"
}'
Python
import requests
url = "https://gateway.ahrvo.network/banking/ibans/v2/users/login"
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
payload = {
"clientId": "YOUR_CLIENT_ID",
"apiKey": "YOUR_API_KEY",
"mode": "apiKey"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print("JWT Token:", data.get("jwt"))
print("Company ID:", data.get("companyId"))
JavaScript (Node.js)
const axios = require('axios');
const url = 'https://gateway.ahrvo.network/banking/ibans/v2/users/login';
const headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
};
const payload = {
clientId: 'YOUR_CLIENT_ID',
apiKey: 'YOUR_API_KEY',
mode: 'apiKey'
};
axios.post(url, payload, { headers })
.then(res => {
console.log('JWT Token:', res.data.jwt);
console.log('Company ID:', res.data.companyId);
})
.catch(err => console.error(err.response ? err.response.data : err.message));