POST /api/v1/itr-analyzer/status
The ITR Analyzer Poll Status API returns the current processing state of an ITR analysis job. After initiating analysis via the /analyze endpoint, call this endpoint at regular intervals using the job_id to determine when the extraction and analysis is complete and the full ITR data is ready to retrieve.
Once the status reaches completed, the structured ITR analysis is available via the Get Full Data endpoint.
Key Benefits
/datajob_id is requiredX-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 |
|---|---|---|
Content-Type | Yes | Must be application/json |
X-API-KEY | Yes | Your Finpass API Key |
X-API-SECRET | Yes | Your Finpass API Secret |
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | The job_id received from the /itr-analyzer/analyze response |
{
"job_id": "itr_job_x9k2m4p7q1r8"
}
### Response Parameters
| Parameter | Type | Description |
|---|---|---|
success | boolean | Indicates whether the request was processed successfully |
message | string | Human-readable status message |
data.job_id | string | The analysis job identifier |
data.status | string | Current job status. See status lifecycle below |
data.pan | string | The PAN number associated with this job |
data.updated_at | string | Timestamp of the last status update (ISO 8601) |
| Status | Terminal | Description |
|---|---|---|
initiated | No | Job created; ITR portal login is in progress |
processing | No | Credentials verified; ITR data is being extracted and analysed |
completed | ✅ Yes | Analysis complete — call /itr-analyzer/data to retrieve full results |
failed | ✅ Yes | Job failed due to a portal error, invalid credentials, or no ITR data found |
Polling Strategy
Poll every 5–10 seconds after initiating the analysis. ITR extraction and analysis typically completes within 30–90 seconds. Stop polling once the status reaches completed or failed. Set a client-side timeout of 3–5 minutes and surface a retry prompt if neither terminal state is reached within that window.
:::
{
"success": true,
"message": "Job status fetched successfully",
"data": {
"job_id": "itr_job_x9k2m4p7q1r8",
"status": "completed",
"pan": "ABCDE1234F",
"updated_at": "2024-11-15T10:23:42Z"
}
}
url = "https://api.finpass.ai/itr-analyzer/status"
headers = {
"Content-Type": "application/json",
"X-API-KEY": "<your_api_key>",
"X-API-SECRET": "<your_api_secret>"
}
payload = {
"job_id": "itr_job_x9k2m4p7q1r8"
}
terminal_statuses = {"completed", "failed"}
while True:
response = requests.post(url, json=payload, 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 url = "https://api.finpass.ai/itr-analyzer/status";
const headers = {
"Content-Type": "application/json",
"X-API-KEY": "<your_api_key>",
"X-API-SECRET": "<your_api_secret>"
};
const payload = { job_id: "itr_job_x9k2m4p7q1r8" };
const terminalStatuses = new Set(["completed", "failed"]);
const pollStatus = async () => {
const response = await axios.post(url, payload, { 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
completedCompliance and Legal Considerations
Job status data is associated with a user's income tax filing session initiated under their explicit consent. Ensure that job_id mappings are retained only for the duration required by your regulatory obligations and are not exposed to unauthorised personnel. Do not use job metadata to infer or store personal financial behaviour beyond what is needed for the declared income verification purpose. Access to this endpoint requires the ITR_ANALYZER permission on your Finpass account.
curl --location --request GET 'https://api.finpass.ai/api/v1/itr-analyzer/status' \
--header 'Content-Type: application/json' \
--data-raw '{
"job_id": "<job_id_from_analyze_response>"
}'{
"doc_id": "itr_analyzer_69d4e95e_01882b27d376ca7ef4b3561e",
"job_id": "itr_f2aecbf3-4b37-4d76-b779-7f314a15b22d",
"status": "processing",
"current_step": "download_profile",
"steps_completed": [
"create_client"
],
"steps_failed": [],
"error_message": "",
"created_at": "2026-04-07T11:24:14.383000",
"updated_at": "2026-04-07T11:24:20.262000",
"completed_at": null,
"pdf_report_url": null
}