---
title: "Get Intake Request Details (Public)"
method: GET
path: "/api/public/intake"
tags: ["Public Intake Requests"]
---

# Get Intake Request Details (Public)

`GET /api/public/intake`

## 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/api/public/intake`
- Auth: none declared. Required headers: `X-Intake-Token`

Get details about an intake request using the secure token from X-Intake-Token header. No authentication required.

## Headers

- `X-Intake-Token` string, required: Secure intake token for document upload request

## Response `200`

Successful Response

- PublicUploadRequestDetailsResponse: Schema for public upload request details (what clients see). SECURITY: This schema excludes all sensitive information: - No tenant_id or client_id exposed - No internal request IDs exposed - No CPA user information exposed - Only information needed for client to upload documents
  - `request_title` string, required: Title of the upload request
  - `instructions` string, nullable: General instructions
  - `tax_year` string, nullable: Tax year
  - `expires_at` string, date-time, required: When the upload link expires
  - `status` 'DRAFT' | 'EMAIL_SENT' | 'ACTIVE' | 'COMPLETED' | 'EXPIRED' | 'REVOKED', required: Enum for intake request status
  - `max_edits_per_item` integer, required: Maximum number of edits/reuploads allowed per item
  - `completion_rate` number, required: Completion rate as a decimal (0.0 to 1.0, e.g., 0.2 for 20%)
  - `completion_status` string, required: Completion status: 'Pending', 'In Progress', or 'Completed'
  - `total_documents` integer, required: Total number of documents requested
  - `completed_documents` integer, required: Number of documents completed/uploaded
  - `pending_documents` integer, required: Number of documents still pending
  - `rejected_documents` integer: Number of documents rejected by user
  - `items` PublicDocumentUploadRequestItemResponse[], required: List of document types to upload (regular documents)
    - `document_type` 'W2' | 'W2_AS' | 'W2_CM' | 'W2_GU' | 'W2_VI' | 'FORM_W2G' | 'FORM_W3' | 'FORM_1040' | 'FORM_1040_SCHEDULE_A' | 'FORM_1040_SCHEDULE_B' | 'FORM_1040_SCHEDULE_E' | 'FORM_1040_SCHEDULE_F' | 'FORM_1040_SENIOR' | 'FORM_1098' | 'FORM_1098_C' | 'FORM_1098_E' | 'FORM_1098_T' | 'FORM_1099_INT' | 'FORM_1099_A' | 'FORM_1099_B' | 'FORM_1099_CAP' | 'FORM_1099_CONSOLIDATED_STATEMENT' | 'FORM_1099_DIV' | 'FORM_1099_R' | 'FORM_1099_G' | 'FORM_1099_MISC' | 'FORM_1099_NEC' | 'FORM_1099_C' | 'FORM_1099_K' | 'FORM_1099_LTC' | 'FORM_1099_OID' | 'FORM_1099_PATR' | 'FORM_1099_QA' | 'FORM_1099_SA' | 'FORM_1099_Q' | 'FORM_1099_DA' | 'FORM_RRB_1099' | 'FORM_RRB_1099R' | 'FORM_1099_S' | 'FORM_1042_S' | 'FORM_8805' | 'FORM_8288_A' | 'FORM_1095_A' | 'FORM_1095_C' | 'FORM_SSA_1099' | 'FORM_2439' | 'FORM_3921' | 'FORM_3922' | 'FORM_5498' | 'FORM_5498_SA' | 'SCHEDULE_K1_GENERIC' | 'SCH_K1_1041' | 'SCH_K1_1065' | 'SCH_K1_1120S' | 'FORM_1041_SCHEDULE_K1' | 'FORM_1065_SCHEDULE_K1' | 'FORM_1120S_SCHEDULE_K1' | 'INVOICE' | 'RECEIPT' | 'TAX_FORM' | 'PROFIT_AND_LOSS_STATEMENT' | 'PROFIT_AND_LOSS_STATEMENT_BUSINESS' | 'PROFIT_AND_LOSS_STATEMENT_FARM' | 'PROFIT_AND_LOSS_STATEMENT_RENTAL' | 'INCOME_STATEMENT' | 'GENERAL_LEDGER' | 'TRIAL_BALANCE' | 'BALANCE_SHEET' | 'SCHEDULE_C_INPUT' | 'PREVIOUS_YEAR_RETURN' | 'BROKERAGE_STATEMENT' | 'ASSETS_PURCHASED_BUSINESS' | 'ASSETS_SOLD_BUSINESS' | 'ASSETS_PURCHASED_RENTAL' | 'ASSETS_SOLD_RENTAL' | 'ASSETS_PURCHASED_FARM' | 'ASSETS_SOLD_FARM' | 'MEDICAL_EXPENSES' | 'CHARITABLE_CONTRIBUTIONS_CASH' | 'CHARITABLE_CONTRIBUTIONS_NON_CASH' | 'PERSONAL_PROPERTY_TAXES' | 'SALES_AND_USE_TAXES' | 'VEHICLE_EXPENSES' | 'DAY_CARE_EXPENSES' | 'MAJOR_PURCHASES' | 'PROPERTY_TAX_STATEMENT' | 'ESTIMATED_TAX_PAYMENT_RECEIPTS' | 'CLOSING_STATEMENT_REAL_ESTATE' | 'PREVIOUS_YEAR_TAX_RETURNS' | 'TAX_RETURN' | 'TAX_ORGANIZER' | 'TAX_PLANNING' | 'REPAIRS_AND_IMPROVEMENTS_RENTAL' | 'PAYROLL_TAX_REPORT' | 'CLIENT_INTAKE_FORM' | 'GOVERNMENT_ISSUED_IDENTIFICATION' | 'IRS_NOTICE_OR_LETTER' | 'DEPENDENT_DOCUMENTATION' | 'FOREIGN_FINANCIAL_ACCOUNTS' | 'FOREIGN_INCOME_DOCUMENTATION' | '529_PLAN_STATEMENT' | '83B_ELECTION_STATEMENT' | 'SALES_BY_STATE_REPORT' | 'STATES_FILING_SALES_TAX_RETURNS' | 'VEHICLE_SELLER_REPORT' | 'HEALTH_INSURANCE_PREMIUM_STATEMENT' | 'BIRTH_CERTIFICATE' | 'DRIVERS_LICENSE' | 'DIRECT_DEPOSIT' | 'REGISTRATION_RENEWAL_NOTICE' | 'ENGAGEMENT_LETTER' | 'SERVICE_AGREEMENT' | 'CLIENT_NOTE' | 'BUNDLED_DOCUMENT' | 'OTHER_DOCUMENTS' | 'UNCATEGORIZED' | 'VESTING_STATEMENT' | 'EXERCISE_CONFIRMATION' | 'CLERGY_INFORMATION' | 'OTHER'
    - `description` string, nullable: Additional instructions for this specific document type
    - `notes` string, nullable: Optional notes from CPA for this specific document type request
    - `tags` string[], nullable: Tags/instance names associated with this document item
    - `is_optional` boolean: Whether this document is optional or required
    - `is_additional_document` boolean: Whether this is an additional document added by the client
    - `is_voluntary_document` boolean: Whether this is a voluntary document (no document type, not counted in totals)
    - `extraction_enabled` boolean: Whether to automatically start document extraction after upload for this specific item
    - `max_files_per_item` integer: Maximum number of files allowed for this specific document type
    - `id` string, uuid, required: Unique identifier for the request item (scoped to this upload request only, validated via token on each request)
    - `display_order` integer, required: Display order in the UI
    - `status` 'DRAFT' | 'PENDING' | 'UPLOADED' | 'MAPPED' | 'ANSWERED' | 'SKIPPED' | 'REJECTED', required: Enum for intake request item status
    - `edit_count` integer, required: Number of times this item has been edited/reuploaded
    - `client_notes` string, nullable: Optional notes added by the client/user for this document item
    - `document_type_label` string, nullable: Human-readable label for the document type (None for voluntary documents)
    - `can_modify` boolean: Whether this item can still be modified (false if UPLOADED)
    - `rejection_reason` string, nullable: Reason provided when rejecting this document item (only set when status is REJECTED)
    - `created_at` string, date-time, required: When the item was created
    - `updated_at` string, date-time, required: When the item was last updated
    - `uploaded_documents` UploadedDocumentInfo[], nullable: List of uploaded documents for this item (only included when status is UPLOADED). Document IDs are scoped to this upload request and validated via token. Sensitive fields (storage_reference, file_hash, folder_id, download_url) are NOT exposed.
      - `id` string, required: Document ID (scoped to upload request)
      - `name` string, required: Document name
      - `original_filename` string, required: Original filename
      - `file_size` integer, required: File size in bytes
      - `mime_type` string, required: MIME type
      - `uploaded_at` string, date-time, required: When the document was uploaded
      - `extraction_status` string, nullable: Document extraction status
      - `document_matching` DocumentMatchingInfo: Schema for document type matching information
        - `is_document_classification_match` boolean, nullable: Whether document_classification matches requested document_type (strict match)
        - `is_instance_name_match` boolean, nullable: Whether instance_name matches requested instance_name (fuzzy match)
        - `instance_match_score` number, nullable: Instance-name match score (0-100) computed via rapidfuzz partial_ratio.
        - `document_classification` string, nullable: DEPRECATED human-readable display name of the matched type. Prefer document_type_identifier (stable routing key) + document_type_id. Phase 3 removal.
        - `document_type_id` string, uuid, nullable: Canonical document type id (FK to supported_document_types) of the matched document's CURRENT type. Source of truth after a reclassify; null until the document has a type.
        - `document_type_identifier` string, nullable: Canonical document_identifier of the matched document's CURRENT type (e.g. 'W2', 'FORM_1099_INT'), resolved from document_type_id. Stable routing/compare key — use THIS instead of the human-readable document_classification.
        - `document_type_display_name` string, nullable: Canonical human-readable display name of the matched document's CURRENT type, resolved from document_type_id. Read THIS for display (replaces the legacy document_classification, which held the display name).
        - `instance_name` string, nullable: Instance name from automatic classification functionality
        - `is_implicit_document_matching` boolean, nullable: True when SUGGESTION_APPLIED was done implicitly (by system); False when applied by user confirm-match; None when no suggestion was applied.
        - `document_classification_status` string, nullable: Latest document classification audit status for this document (ACCEPTED, IN_PROGRESS, COMPLETED, FAILED).
  - `additional_documents` PublicDocumentUploadRequestItemResponse[]: List of additional documents added by the client
    - `document_type` 'W2' | 'W2_AS' | 'W2_CM' | 'W2_GU' | 'W2_VI' | 'FORM_W2G' | 'FORM_W3' | 'FORM_1040' | 'FORM_1040_SCHEDULE_A' | 'FORM_1040_SCHEDULE_B' | 'FORM_1040_SCHEDULE_E' | 'FORM_1040_SCHEDULE_F' | 'FORM_1040_SENIOR' | 'FORM_1098' | 'FORM_1098_C' | 'FORM_1098_E' | 'FORM_1098_T' | 'FORM_1099_INT' | 'FORM_1099_A' | 'FORM_1099_B' | 'FORM_1099_CAP' | 'FORM_1099_CONSOLIDATED_STATEMENT' | 'FORM_1099_DIV' | 'FORM_1099_R' | 'FORM_1099_G' | 'FORM_1099_MISC' | 'FORM_1099_NEC' | 'FORM_1099_C' | 'FORM_1099_K' | 'FORM_1099_LTC' | 'FORM_1099_OID' | 'FORM_1099_PATR' | 'FORM_1099_QA' | 'FORM_1099_SA' | 'FORM_1099_Q' | 'FORM_1099_DA' | 'FORM_RRB_1099' | 'FORM_RRB_1099R' | 'FORM_1099_S' | 'FORM_1042_S' | 'FORM_8805' | 'FORM_8288_A' | 'FORM_1095_A' | 'FORM_1095_C' | 'FORM_SSA_1099' | 'FORM_2439' | 'FORM_3921' | 'FORM_3922' | 'FORM_5498' | 'FORM_5498_SA' | 'SCHEDULE_K1_GENERIC' | 'SCH_K1_1041' | 'SCH_K1_1065' | 'SCH_K1_1120S' | 'FORM_1041_SCHEDULE_K1' | 'FORM_1065_SCHEDULE_K1' | 'FORM_1120S_SCHEDULE_K1' | 'INVOICE' | 'RECEIPT' | 'TAX_FORM' | 'PROFIT_AND_LOSS_STATEMENT' | 'PROFIT_AND_LOSS_STATEMENT_BUSINESS' | 'PROFIT_AND_LOSS_STATEMENT_FARM' | 'PROFIT_AND_LOSS_STATEMENT_RENTAL' | 'INCOME_STATEMENT' | 'GENERAL_LEDGER' | 'TRIAL_BALANCE' | 'BALANCE_SHEET' | 'SCHEDULE_C_INPUT' | 'PREVIOUS_YEAR_RETURN' | 'BROKERAGE_STATEMENT' | 'ASSETS_PURCHASED_BUSINESS' | 'ASSETS_SOLD_BUSINESS' | 'ASSETS_PURCHASED_RENTAL' | 'ASSETS_SOLD_RENTAL' | 'ASSETS_PURCHASED_FARM' | 'ASSETS_SOLD_FARM' | 'MEDICAL_EXPENSES' | 'CHARITABLE_CONTRIBUTIONS_CASH' | 'CHARITABLE_CONTRIBUTIONS_NON_CASH' | 'PERSONAL_PROPERTY_TAXES' | 'SALES_AND_USE_TAXES' | 'VEHICLE_EXPENSES' | 'DAY_CARE_EXPENSES' | 'MAJOR_PURCHASES' | 'PROPERTY_TAX_STATEMENT' | 'ESTIMATED_TAX_PAYMENT_RECEIPTS' | 'CLOSING_STATEMENT_REAL_ESTATE' | 'PREVIOUS_YEAR_TAX_RETURNS' | 'TAX_RETURN' | 'TAX_ORGANIZER' | 'TAX_PLANNING' | 'REPAIRS_AND_IMPROVEMENTS_RENTAL' | 'PAYROLL_TAX_REPORT' | 'CLIENT_INTAKE_FORM' | 'GOVERNMENT_ISSUED_IDENTIFICATION' | 'IRS_NOTICE_OR_LETTER' | 'DEPENDENT_DOCUMENTATION' | 'FOREIGN_FINANCIAL_ACCOUNTS' | 'FOREIGN_INCOME_DOCUMENTATION' | '529_PLAN_STATEMENT' | '83B_ELECTION_STATEMENT' | 'SALES_BY_STATE_REPORT' | 'STATES_FILING_SALES_TAX_RETURNS' | 'VEHICLE_SELLER_REPORT' | 'HEALTH_INSURANCE_PREMIUM_STATEMENT' | 'BIRTH_CERTIFICATE' | 'DRIVERS_LICENSE' | 'DIRECT_DEPOSIT' | 'REGISTRATION_RENEWAL_NOTICE' | 'ENGAGEMENT_LETTER' | 'SERVICE_AGREEMENT' | 'CLIENT_NOTE' | 'BUNDLED_DOCUMENT' | 'OTHER_DOCUMENTS' | 'UNCATEGORIZED' | 'VESTING_STATEMENT' | 'EXERCISE_CONFIRMATION' | 'CLERGY_INFORMATION' | 'OTHER'
    - `description` string, nullable: Additional instructions for this specific document type
    - `notes` string, nullable: Optional notes from CPA for this specific document type request
    - `tags` string[], nullable: Tags/instance names associated with this document item
    - `is_optional` boolean: Whether this document is optional or required
    - `is_additional_document` boolean: Whether this is an additional document added by the client
    - `is_voluntary_document` boolean: Whether this is a voluntary document (no document type, not counted in totals)
    - `extraction_enabled` boolean: Whether to automatically start document extraction after upload for this specific item
    - `max_files_per_item` integer: Maximum number of files allowed for this specific document type
    - `id` string, uuid, required: Unique identifier for the request item (scoped to this upload request only, validated via token on each request)
    - `display_order` integer, required: Display order in the UI
    - `status` 'DRAFT' | 'PENDING' | 'UPLOADED' | 'MAPPED' | 'ANSWERED' | 'SKIPPED' | 'REJECTED', required: Enum for intake request item status
    - `edit_count` integer, required: Number of times this item has been edited/reuploaded
    - `client_notes` string, nullable: Optional notes added by the client/user for this document item
    - `document_type_label` string, nullable: Human-readable label for the document type (None for voluntary documents)
    - `can_modify` boolean: Whether this item can still be modified (false if UPLOADED)
    - `rejection_reason` string, nullable: Reason provided when rejecting this document item (only set when status is REJECTED)
    - `created_at` string, date-time, required: When the item was created
    - `updated_at` string, date-time, required: When the item was last updated
    - `uploaded_documents` UploadedDocumentInfo[], nullable: List of uploaded documents for this item (only included when status is UPLOADED). Document IDs are scoped to this upload request and validated via token. Sensitive fields (storage_reference, file_hash, folder_id, download_url) are NOT exposed.
      - `id` string, required: Document ID (scoped to upload request)
      - `name` string, required: Document name
      - `original_filename` string, required: Original filename
      - `file_size` integer, required: File size in bytes
      - `mime_type` string, required: MIME type
      - `uploaded_at` string, date-time, required: When the document was uploaded
      - `extraction_status` string, nullable: Document extraction status
      - `document_matching` DocumentMatchingInfo: Schema for document type matching information
        - `is_document_classification_match` boolean, nullable: Whether document_classification matches requested document_type (strict match)
        - `is_instance_name_match` boolean, nullable: Whether instance_name matches requested instance_name (fuzzy match)
        - `instance_match_score` number, nullable: Instance-name match score (0-100) computed via rapidfuzz partial_ratio.
        - `document_classification` string, nullable: DEPRECATED human-readable display name of the matched type. Prefer document_type_identifier (stable routing key) + document_type_id. Phase 3 removal.
        - `document_type_id` string, uuid, nullable: Canonical document type id (FK to supported_document_types) of the matched document's CURRENT type. Source of truth after a reclassify; null until the document has a type.
        - `document_type_identifier` string, nullable: Canonical document_identifier of the matched document's CURRENT type (e.g. 'W2', 'FORM_1099_INT'), resolved from document_type_id. Stable routing/compare key — use THIS instead of the human-readable document_classification.
        - `document_type_display_name` string, nullable: Canonical human-readable display name of the matched document's CURRENT type, resolved from document_type_id. Read THIS for display (replaces the legacy document_classification, which held the display name).
        - `instance_name` string, nullable: Instance name from automatic classification functionality
        - `is_implicit_document_matching` boolean, nullable: True when SUGGESTION_APPLIED was done implicitly (by system); False when applied by user confirm-match; None when no suggestion was applied.
        - `document_classification_status` string, nullable: Latest document classification audit status for this document (ACCEPTED, IN_PROGRESS, COMPLETED, FAILED).
  - `voluntary_documents` PublicDocumentUploadRequestItemResponse[]: List of voluntary documents uploaded without document type (not counted in totals)
    - `document_type` 'W2' | 'W2_AS' | 'W2_CM' | 'W2_GU' | 'W2_VI' | 'FORM_W2G' | 'FORM_W3' | 'FORM_1040' | 'FORM_1040_SCHEDULE_A' | 'FORM_1040_SCHEDULE_B' | 'FORM_1040_SCHEDULE_E' | 'FORM_1040_SCHEDULE_F' | 'FORM_1040_SENIOR' | 'FORM_1098' | 'FORM_1098_C' | 'FORM_1098_E' | 'FORM_1098_T' | 'FORM_1099_INT' | 'FORM_1099_A' | 'FORM_1099_B' | 'FORM_1099_CAP' | 'FORM_1099_CONSOLIDATED_STATEMENT' | 'FORM_1099_DIV' | 'FORM_1099_R' | 'FORM_1099_G' | 'FORM_1099_MISC' | 'FORM_1099_NEC' | 'FORM_1099_C' | 'FORM_1099_K' | 'FORM_1099_LTC' | 'FORM_1099_OID' | 'FORM_1099_PATR' | 'FORM_1099_QA' | 'FORM_1099_SA' | 'FORM_1099_Q' | 'FORM_1099_DA' | 'FORM_RRB_1099' | 'FORM_RRB_1099R' | 'FORM_1099_S' | 'FORM_1042_S' | 'FORM_8805' | 'FORM_8288_A' | 'FORM_1095_A' | 'FORM_1095_C' | 'FORM_SSA_1099' | 'FORM_2439' | 'FORM_3921' | 'FORM_3922' | 'FORM_5498' | 'FORM_5498_SA' | 'SCHEDULE_K1_GENERIC' | 'SCH_K1_1041' | 'SCH_K1_1065' | 'SCH_K1_1120S' | 'FORM_1041_SCHEDULE_K1' | 'FORM_1065_SCHEDULE_K1' | 'FORM_1120S_SCHEDULE_K1' | 'INVOICE' | 'RECEIPT' | 'TAX_FORM' | 'PROFIT_AND_LOSS_STATEMENT' | 'PROFIT_AND_LOSS_STATEMENT_BUSINESS' | 'PROFIT_AND_LOSS_STATEMENT_FARM' | 'PROFIT_AND_LOSS_STATEMENT_RENTAL' | 'INCOME_STATEMENT' | 'GENERAL_LEDGER' | 'TRIAL_BALANCE' | 'BALANCE_SHEET' | 'SCHEDULE_C_INPUT' | 'PREVIOUS_YEAR_RETURN' | 'BROKERAGE_STATEMENT' | 'ASSETS_PURCHASED_BUSINESS' | 'ASSETS_SOLD_BUSINESS' | 'ASSETS_PURCHASED_RENTAL' | 'ASSETS_SOLD_RENTAL' | 'ASSETS_PURCHASED_FARM' | 'ASSETS_SOLD_FARM' | 'MEDICAL_EXPENSES' | 'CHARITABLE_CONTRIBUTIONS_CASH' | 'CHARITABLE_CONTRIBUTIONS_NON_CASH' | 'PERSONAL_PROPERTY_TAXES' | 'SALES_AND_USE_TAXES' | 'VEHICLE_EXPENSES' | 'DAY_CARE_EXPENSES' | 'MAJOR_PURCHASES' | 'PROPERTY_TAX_STATEMENT' | 'ESTIMATED_TAX_PAYMENT_RECEIPTS' | 'CLOSING_STATEMENT_REAL_ESTATE' | 'PREVIOUS_YEAR_TAX_RETURNS' | 'TAX_RETURN' | 'TAX_ORGANIZER' | 'TAX_PLANNING' | 'REPAIRS_AND_IMPROVEMENTS_RENTAL' | 'PAYROLL_TAX_REPORT' | 'CLIENT_INTAKE_FORM' | 'GOVERNMENT_ISSUED_IDENTIFICATION' | 'IRS_NOTICE_OR_LETTER' | 'DEPENDENT_DOCUMENTATION' | 'FOREIGN_FINANCIAL_ACCOUNTS' | 'FOREIGN_INCOME_DOCUMENTATION' | '529_PLAN_STATEMENT' | '83B_ELECTION_STATEMENT' | 'SALES_BY_STATE_REPORT' | 'STATES_FILING_SALES_TAX_RETURNS' | 'VEHICLE_SELLER_REPORT' | 'HEALTH_INSURANCE_PREMIUM_STATEMENT' | 'BIRTH_CERTIFICATE' | 'DRIVERS_LICENSE' | 'DIRECT_DEPOSIT' | 'REGISTRATION_RENEWAL_NOTICE' | 'ENGAGEMENT_LETTER' | 'SERVICE_AGREEMENT' | 'CLIENT_NOTE' | 'BUNDLED_DOCUMENT' | 'OTHER_DOCUMENTS' | 'UNCATEGORIZED' | 'VESTING_STATEMENT' | 'EXERCISE_CONFIRMATION' | 'CLERGY_INFORMATION' | 'OTHER'
    - `description` string, nullable: Additional instructions for this specific document type
    - `notes` string, nullable: Optional notes from CPA for this specific document type request
    - `tags` string[], nullable: Tags/instance names associated with this document item
    - `is_optional` boolean: Whether this document is optional or required
    - `is_additional_document` boolean: Whether this is an additional document added by the client
    - `is_voluntary_document` boolean: Whether this is a voluntary document (no document type, not counted in totals)
    - `extraction_enabled` boolean: Whether to automatically start document extraction after upload for this specific item
    - `max_files_per_item` integer: Maximum number of files allowed for this specific document type
    - `id` string, uuid, required: Unique identifier for the request item (scoped to this upload request only, validated via token on each request)
    - `display_order` integer, required: Display order in the UI
    - `status` 'DRAFT' | 'PENDING' | 'UPLOADED' | 'MAPPED' | 'ANSWERED' | 'SKIPPED' | 'REJECTED', required: Enum for intake request item status
    - `edit_count` integer, required: Number of times this item has been edited/reuploaded
    - `client_notes` string, nullable: Optional notes added by the client/user for this document item
    - `document_type_label` string, nullable: Human-readable label for the document type (None for voluntary documents)
    - `can_modify` boolean: Whether this item can still be modified (false if UPLOADED)
    - `rejection_reason` string, nullable: Reason provided when rejecting this document item (only set when status is REJECTED)
    - `created_at` string, date-time, required: When the item was created
    - `updated_at` string, date-time, required: When the item was last updated
    - `uploaded_documents` UploadedDocumentInfo[], nullable: List of uploaded documents for this item (only included when status is UPLOADED). Document IDs are scoped to this upload request and validated via token. Sensitive fields (storage_reference, file_hash, folder_id, download_url) are NOT exposed.
      - `id` string, required: Document ID (scoped to upload request)
      - `name` string, required: Document name
      - `original_filename` string, required: Original filename
      - `file_size` integer, required: File size in bytes
      - `mime_type` string, required: MIME type
      - `uploaded_at` string, date-time, required: When the document was uploaded
      - `extraction_status` string, nullable: Document extraction status
      - `document_matching` DocumentMatchingInfo: Schema for document type matching information
        - `is_document_classification_match` boolean, nullable: Whether document_classification matches requested document_type (strict match)
        - `is_instance_name_match` boolean, nullable: Whether instance_name matches requested instance_name (fuzzy match)
        - `instance_match_score` number, nullable: Instance-name match score (0-100) computed via rapidfuzz partial_ratio.
        - `document_classification` string, nullable: DEPRECATED human-readable display name of the matched type. Prefer document_type_identifier (stable routing key) + document_type_id. Phase 3 removal.
        - `document_type_id` string, uuid, nullable: Canonical document type id (FK to supported_document_types) of the matched document's CURRENT type. Source of truth after a reclassify; null until the document has a type.
        - `document_type_identifier` string, nullable: Canonical document_identifier of the matched document's CURRENT type (e.g. 'W2', 'FORM_1099_INT'), resolved from document_type_id. Stable routing/compare key — use THIS instead of the human-readable document_classification.
        - `document_type_display_name` string, nullable: Canonical human-readable display name of the matched document's CURRENT type, resolved from document_type_id. Read THIS for display (replaces the legacy document_classification, which held the display name).
        - `instance_name` string, nullable: Instance name from automatic classification functionality
        - `is_implicit_document_matching` boolean, nullable: True when SUGGESTION_APPLIED was done implicitly (by system); False when applied by user confirm-match; None when no suggestion was applied.
        - `document_classification_status` string, nullable: Latest document classification audit status for this document (ACCEPTED, IN_PROGRESS, COMPLETED, FAILED).
  - `questionnaire_from_pyr` string, nullable: Questionnaire processing status for previous year return (if applicable for this intake request)
  - `document_checklist_suggestion` string, nullable: Document checklist processing status for previous year return (if applicable for this intake request)

## 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)
