---
title: "Get workpaper evaluation status (poll by tax_return_id)"
method: GET
path: "/internal/api/clients/{client_id}/workpaper/status"
tags: ["CLIENT", "Workpaper"]
---

# Get workpaper evaluation status (poll by tax_return_id)

`GET /internal/api/clients/{client_id}/workpaper/status`

## Request

- Base URL: `https://api.signalshq.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.signalshq.io/internal/api/clients/{client_id}/workpaper/status`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Returns evaluation job status for the given tax_return_id. Poll until status is "COMPLETED" or "FAILED"; then call GET workpaper to fetch the workpaper. Returns "IDLE" if no job.

## Path parameters

- `client_id` string, uuid, required: Client ID

## Query parameters

- `tax_return_id` string, uuid, required: Tax return ID from evaluate/reevaluate response

## Response `200`

Successful Response

- WorkpaperStatusResponse: Response for GET workpaper/status: regeneration job status for polling by tax_return_id.
  - `status` union, required: Current evaluation job status. Poll until COMPLETED or FAILED, then call GET workpaper.
    - 'IDLE'
    - 'PENDING' | 'RUNNING' | 'COMPLETED' | 'FAILED': Job lifecycle. DB: workpaper_regeneration_job_status_enum. API adds IDLE in core.
  - `workpaper_status` 'COMPLETE' | 'PARTIAL' | 'ERROR': Workpaper/form outcome. DB: core_schema.workpaper_status_outcome_enum.
  - `completed_at` string, date-time, nullable: When the job finished (COMPLETED or FAILED).
  - `error_message` string, nullable: Error details when status is FAILED.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/signalshq/apis/signals-api.md) - [All operations](https://skmtc.dev/signalshq/apis/signals-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signalshq/apis/signals-api/revisions/2c22af3b5576?raw)
