# Account Holder Document Uploads

## Account Holder Token
- **UUID** (required): Globally unique identifier for the account holder.

# 200 OK

## Response Structure
- **data**: array of objects

### Data Object
Describes the document and the required document image uploads required to re-run KYC.

#### Fields:
- **token** (UUID, required): Globally unique identifier for the document.
- **account_holder_token** (UUID, required): Globally unique identifier for the account holder.
- **document_type** (string, enum, required): Type of documentation to be submitted for verification of an account holder. Possible values include:
  - DRIVERS_LICENSE
  - PASSPORT
  - PASSPORT_CARD
  - EIN_LETTER
  - TAX_RETURN
  - OPERATING_AGREEMENT
  - CERTIFICATE_OF_FORMATION
  - CERTIFICATE_OF_GOOD_STANDING
  - ARTICLES_OF_INCORPORATION
  - ARTICLES_OF_ORGANIZATION
  - BYLAWS
  - GOVERNMENT_BUSINESS_LICENSE
  - PARTNERSHIP_AGREEMENT
  - SS4_FORM
  - BANK_STATEMENT
  - UTILITY_BILL_STATEMENT
  - SSN_CARD
  - ITIN_LETTER
  - FINCEN_BOI_REPORT
- **entity_token** (UUID, required): Globally unique identifier for an entity.
- **required_document_uploads** (array of objects, required): Represents a single image of the document to upload.

### Required Document Uploads Object
- **image_type** (string, enum, required): Type of image to upload. Possible values: FRONT, BACK.
- **status** (string, enum, required): Status of an account holder's document upload. Possible values include:
  - ACCEPTED
  - REJECTED
  - PENDING_UPLOAD
  - UPLOADED
  - PARTIAL_APPROVAL
- **status_reasons** (array of objects, required): Reasons for document image upload status that is not ACCEPTED. Possible reasons include:
  - DOCUMENT_MISSING_REQUIRED_DATA
  - DOCUMENT_UPLOAD_TOO_BLURRY
  - FILE_SIZE_TOO_LARGE
  - INVALID_DOCUMENT_TYPE
  - INVALID_DOCUMENT_UPLOAD
  - INVALID_ENTITY
  - DOCUMENT_EXPIRED
  - DOCUMENT_ISSUED_GREATER_THAN_30_DAYS
  - DOCUMENT_TYPE_NOT_SUPPORTED
  - UNKNOWN_FAILURE_REASON
  - UNKNOWN_ERROR
- **upload_url** (string, required): URL to upload document image to (expires after 7 days).
- **token** (UUID, required): Globally unique identifier for the document upload.
- **accepted_entity_status_reasons** (array of strings, required): Status reasons associated with a KYB account holder that have been satisfied by the document upload.
- **rejected_entity_status_reasons** (array of strings, required): Status reasons associated with a KYB account holder that have not been satisfied by the document upload.
- **created** (date-time, required): When the document upload was created.
- **updated** (date-time, required): When the document upload was last updated.

# 400 Bad Request
A parameter in the query given in the request does not match the valid queries for the endpoint.

# 401 Unauthorized
| Error  | Description |
| -------| ----------- |
| User has not been authenticated | Invalid or missing API key |
| API key is not active | The API key used is no longer active |
| Could not find API key | The API key provided is not associated with any user |
| Please provide API key in Authorization header | The Authorization header is not in the request |
| Please provide API key in the form Authorization: [api-key] | The Authorization header is not formatted properly |
| Insufficient privileges. Issuing API key required | Write access requires an Issuing API key. Reach out at [lithic.com/contact](/content/contact/index.html) |
| Insufficient privileges to create virtual cards. | Creating virtual cards requires an additional privilege |

# 429 Too Many Requests
Client has exceeded the number of allowed requests in a given time period.
| Error  | Description |
| -------| ----------- |
| Rate limited, too many requests per second | User has exceeded their per second rate limit |
| Rate limited, reached daily limit | User has exceeded their daily rate limit |
| Rate limited, too many keys tried | One IP has queried too many different API keys |

### Example Request
```bash
curl --request GET \
     --url https://sandbox.lithic.com/v1/account_holders/account_holder_token/documents \
     --header 'accept: application/json'
```

### Example Response
```json
{
  "data": [
    {
      "token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "account_holder_token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "document_type": "DRIVERS_LICENSE",
      "entity_token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "required_document_uploads": [
        {
          "image_type": "FRONT",
          "status": "ACCEPTED",
          "status_reasons": ["DOCUMENT_MISSING_REQUIRED_DATA"],
          "upload_url": "string",
          "token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "accepted_entity_status_reasons": ["string"],
          "rejected_entity_status_reasons": ["string"],
          "created": "2026-07-18T03:11:38.013Z",
          "updated": "2026-07-18T03:11:38.013Z"
        }
      ]
    }
  ]
}
```
