GET /api/v1/aa-bsa-journey/status?client_id=<client_id>
The AA BSA Poll Status API returns the current state of an active AA BSA journey session. After redirecting the user to the journey_url from the Init step, call this endpoint at regular intervals to determine when the user has completed the consent flow and when the bank statement analysis is ready.
Once the status reaches analysis_complete, the statement data and BSA insights are available via the Statement Result and Analysis JSON endpoints.
Key Benefits
webhook_url for push-based notifications to avoid polling overheadX-API-KEY and X-API-SECRET.| Header | Value |
|---|---|
X-API-KEY | Your assigned API Key |
X-API-SECRET | Your assigned API Secret |
### Request HeadersBase URL:
https://api.finpass.ai
| Header | Required | Description |
|---|---|---|
X-API-KEY | Yes | Your Finpass API Key |
X-API-SECRET | Yes | Your Finpass API Secret |
| Parameter | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | The client_id received from the /aa-bsa-journey/init response |
GET /aa-bsa-journey/status?client_id=bsa_clnt_a1b2c3d4e5f6
### Response Parameters
| Parameter | Type | Description |
|---|---|---|
success | boolean | Indicates whether the request was processed successfully |
message | string | Human-readable status message |
data.client_id | string | The session identifier |
data.status | string | Current journey status. See status lifecycle below |
data.consent_type | string | The consent type for this session (loan_underwriting or loan_monitoring) |
data.mobile_number | string | Masked mobile number of the user |
data.updated_at | string | Timestamp of the last status update (ISO 8601) |
| Status | Terminal | Description |
|---|---|---|
initiated | No | Journey created; user has not yet opened the consent link |
consent_pending | No | User has opened the consent link but not yet completed the flow |
consent_granted | No | User approved consent; bank data fetch is in progress |
data_fetched | No | Bank data fetched; BSA analysis is being generated |
analysis_complete | ✅ Yes | Analysis ready — call /statement-result and /analysis-json |
consent_denied | ✅ Yes | User declined the consent request |
failed | ✅ Yes | Journey failed due to a system or AA network error |
expired | ✅ Yes | Session expired before the user completed consent |
Polling Strategy
Poll every 5–10 seconds after the user is redirected to journey_url. Stop polling when the status reaches any terminal state: analysis_complete, consent_denied, failed, or expired. To eliminate polling altogether, use the webhook_url parameter in /init to receive push notifications on every status change.
:::
{
"success": true,
"message": "Journey status fetched successfully",
"data": {
"client_id": "bsa_clnt_a1b2c3d4e5f6",
"status": "analysis_complete",
"consent_type": "loan_underwriting",
"mobile_number": "98765*****",
"updated_at": "2024-11-15T13:47:22Z"
}
}
client_id = "bsa_clnt_a1b2c3d4e5f6"
url = f"https://api.finpass.ai/aa-bsa-journey/status?client_id={client_id}"
headers = {
"X-API-KEY": "<your_api_key>",
"X-API-SECRET": "<your_api_secret>"
}
terminal_statuses = {"analysis_complete", "consent_denied", "failed", "expired"}
while True:
response = requests.get(url, headers=headers)
data = response.json()
status = data["data"]["status"]
print("Current status:", status)
if status in terminal_statuses:
print("Terminal status reached:", status)
break
time.sleep(5)
</Tab>
<Tab title="Node.js">
```javascript
const axios = require("axios");
const clientId = "bsa_clnt_a1b2c3d4e5f6";
const url = `https://api.finpass.ai/aa-bsa-journey/status?client_id=${clientId}`;
const headers = {
"X-API-KEY": "<your_api_key>",
"X-API-SECRET": "<your_api_secret>"
};
const terminalStatuses = new Set(["analysis_complete", "consent_denied", "failed", "expired"]);
const pollStatus = async () => {
const response = await axios.get(url, { headers });
const { status } = response.data.data;
console.log("Current status:", status);
if (!terminalStatuses.has(status)) {
setTimeout(pollStatus, 5000);
} else {
console.log("Terminal status reached:", status);
}
};
pollStatus().catch(err => console.error("Error:", err.response?.data || err.message));
Related APIs
analysis_completeCompliance and Legal Considerations
Journey status data is associated with a user's consent session under the RBI Account Aggregator framework. Ensure that status records and client_id mappings are retained only for the duration required by your regulatory obligations. Do not use status data to infer or store personal financial behaviour beyond what is needed for the declared consent purpose. Access to this endpoint requires the AA_BSA_JOURNEY permission on your Finpass account.
curl --location --request GET 'https://api.finpass.ai/api/v1/aa-bsa-journey/status?client_id=<client_id>'{
"client_id": "aabsa_69c0e33a_ecf10acbff12121f1ff39",
"status": "completed",
"failed_at_stage": null,
"total_accounts": 2,
"completed_accounts": 2,
"failed_accounts": 0,
"accounts": [
{
"account_index": 0,
"bank_name": "FDRLFIPPROD",
"account_number": "XXXXXXXXXX8587",
"bsa_status": "completed",
"bsa_client_id": "bank_statement_42c38012a50c",
"error_message": null
},
{
"account_index": 1,
"bank_name": "ICICI-FIP",
"account_number": "XXXXXXXX1316",
"bsa_status": "completed",
"bsa_client_id": "bank_statement_b921121e9",
"error_message": null
}
],
"error_message": null,
"created_at": "2026-03-23T06:52:42.931000",
"updated_at": "2026-03-23T06:55:01.190000"
}