> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instaview.sk/llms.txt
> Use this file to discover all available pages before exploring further.

# List Contact Documents

> Lists every document on the contact: the processed CV (`source: CV`), completed uploads, and uploads that have not been completed yet (`status: PENDING`).

Whether any of these documents reaches a call is a separate decision: the agent must have `contextConfig.useContactContext` enabled.

Lists every document on a contact: the processed CV, completed uploads, and uploads that have not been completed yet.

## Overview

A contact's documents are what an agent can look up about the specific person it is calling — their CV, a cover letter, application notes. They live in the same knowledge base machinery as an [agent's documents](/api-reference/agents/knowledge/list-knowledge), and the response has the same shape, with one addition: `source`.

| `source` | Meaning                                                                                                                                                                     |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `UPLOAD` | A file attached through this API or the dashboard. Can be renamed, deactivated and deleted.                                                                                 |
| `CV`     | Produced by InstaView from the contact's processed CV. Appears once the CV has been processed; can be deactivated, but not renamed or deleted here — delete the CV instead. |

`limit` is the per-contact cap on **uploaded** documents (5). The `CV` document does not count towards it.

## Whether a document reaches a call

Listing a document does not mean an agent will see it. One switch decides: **the agent has `contextConfig.useContactContext` enabled** — the agent author's intent to draw on what the platform knows about the person it is calling.

With it on, the contact's active documents are attached to the call as the `candidate` knowledge base, and the agent's prompt gains one sentence telling it the documents exist and may be looked up — never read aloud. With it off, the call runs exactly as it did before, documents or not.

## Example

```bash theme={null}
curl https://api.instaview.sk/contacts/$CONTACT_ID/documents \
  -H "Authorization: Bearer $INSTAVIEW_API_KEY"
```

```json theme={null}
{
  "data": [
    {
      "id": "8b2e1f40-3c4d-4e5f-9a6b-7c8d9e0f1a2b",
      "title": "CV",
      "fileName": "jana-novakova-cv.pdf",
      "mimeType": "text/markdown",
      "status": "READY",
      "isActive": true,
      "source": "CV",
      "createdAt": "2026-09-05T08:12:00.000Z"
    },
    {
      "id": "5d3c2b1a-0f9e-4d8c-b7a6-5f4e3d2c1b0a",
      "title": "Cover letter",
      "fileName": "cover-letter.pdf",
      "mimeType": "application/pdf",
      "sizeBytes": 482133,
      "status": "READY",
      "isActive": true,
      "source": "UPLOAD",
      "createdAt": "2026-09-05T09:30:00.000Z"
    }
  ],
  "total": 2,
  "limit": 5
}
```

<Note>
  The `CV` document's `fileName` is the name of the file that was uploaded for processing; what the
  agent can look up is the **anonymized text** of that CV — names, contact details and employer
  names replaced with generic terms — not the original file, which InstaView does not keep.
</Note>

## Error Scenarios

* **404 Not Found**: No contact with that id belongs to your API key's company

## Related Resources

* [Start Contact Document Upload](/api-reference/contacts/documents/start-upload)
* [Update Contact Document](/api-reference/contacts/documents/update-document)
* [Contacts Guide](/guides/resources/contacts#documents)


## OpenAPI

````yaml GET /contacts/{id}/documents
openapi: 3.0.0
info:
  title: InstaView API
  description: |-
    InstaView API Documentation

    ## Authentication

    All endpoints require API key authentication using Bearer token:
    ```
    Authorization: Bearer sk_your_api_key_here
    ```

    ## API Key Management

    The API Key module provides comprehensive key management for:
    - **Direct Client Keys**: Company-scoped keys for your applications
    - **ATS Partner Keys**: Resource-scoped keys for ATS integrations

    ### Key Features
    - HMAC-SHA256 hashing for API key storage
    - Configurable rate limiting
    - Comprehensive audit logging
    - Company-level isolation
    - Resource scoping for ATS partners
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.instaview.sk
    description: Production API Gateway
security: []
tags: []
paths:
  /contacts/{id}/documents:
    get:
      tags:
        - Contacts
      summary: List a contact's documents
      description: >-
        Lists every document on the contact: the processed CV (`source: CV`),
        completed uploads, and uploads that have not been completed yet
        (`status: PENDING`).


        Whether any of these documents reaches a call is a separate decision:
        the agent must have `contextConfig.useContactContext` enabled.
      operationId: PublicContactDocumentsController_list_v1
      parameters:
        - name: id
          required: true
          in: path
          description: Contact the documents belong to.
          schema:
            type: string
            format: uuid
        - name: companyId
          required: false
          in: query
          description: >-
            Required for ATS API keys to specify which company to access.
            Ignored for standard company API keys.
          schema:
            type: string
      responses:
        '200':
          description: >-
            Documents on the contact, oldest first. `limit` is the per-contact
            upload cap (5); the `CV` document does not count towards it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicListKnowledgeDocumentsResponseDto'
        '404':
          description: >-
            No contact with that id belongs to the API key's company. An id that
            exists nowhere and an id that belongs to another company answer
            identically, on purpose.
      security:
        - bearer: []
components:
  schemas:
    PublicListKnowledgeDocumentsResponseDto:
      type: object
      properties:
        data:
          description: Documents attached to the agent or contact, oldest first
          type: array
          items:
            $ref: '#/components/schemas/PublicKnowledgeDocumentDto'
        total:
          type: number
          example: 3
          description: Number of documents attached
        limit:
          type: number
          example: 10
          description: >-
            Maximum uploaded documents the resource may hold: 10 for an agent, 5
            for a contact. A contact's `CV` document does not count towards it.
      required:
        - data
        - total
        - limit
    PublicKnowledgeDocumentDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 123e4567-e89b-12d3-a456-426614174000
          description: Document ID
        title:
          type: string
          example: Benefits and perks
          description: Human-readable label for the document
        fileName:
          type: string
          example: benefits-and-perks.pdf
          description: Original file name as uploaded
        mimeType:
          type: string
          example: application/pdf
          description: MIME type of the stored file
        sizeBytes:
          type: number
          example: 482133
          description: >-
            Size of the stored file in bytes, as verified against storage.
            Absent until the upload is READY.
        status:
          type: string
          enum:
            - PENDING
            - READY
          example: READY
          description: >-
            `PENDING` while waiting for the file to be uploaded to the presigned
            URL and the upload to be completed; `READY` once the file is
            confirmed stored. Only READY documents are attached to calls.
        isActive:
          type: boolean
          example: true
          description: >-
            Whether the agent may consult this document during a call. Always
            false while the upload is PENDING.
        source:
          type: string
          enum:
            - UPLOAD
            - CV
          example: UPLOAD
          description: >-
            `UPLOAD` for a file attached through the API or the dashboard. `CV`
            for the document the platform produces from a contact's processed CV
            (contacts only); a `CV` document can be deactivated but not renamed
            or deleted. Always `UPLOAD` on an agent's knowledge base.
        createdAt:
          format: date-time
          type: string
          example: '2026-08-08T10:15:00.000Z'
          description: When the document was created
      required:
        - id
        - title
        - status
        - isActive
        - source
        - createdAt
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: API key for authentication using Bearer scheme

````