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

# core.document.upload_completed

> Fired when a document has finished processing successfully and is fully available in Chamelio's Core.

## Event

```
core.document.upload_completed
```

This event fires when a document's asynchronous processing finishes without issues. The document is fully indexed, searchable, and ready to be used in workflows.

## Payload Example

```json theme={null}
{
  "event": "core.document.upload_completed",
  "event_id": "evt_01HXYZ2233445566",
  "organization_id": "org_abc123",
  "timestamp": "2025-06-01T14:34:10Z",
  "data": {
    "document_processing_id": 12345,
    "file_id": "file_abc123",
    "file_name": "master_services_agreement.pdf",
    "file_extension": "pdf",
    "uploaded_by": "john.doe@example.com",
    "processing_duration_ms": 8320,
    "attributes": [
      {
        "name": "contract_type",
        "data_type": "text",
        "value": "Master Services Agreement"
      },
      {
        "name": "effective_date",
        "data_type": "date",
        "value": "2025-01-01"
      }
    ]
  }
}
```

## Payload Fields

### Envelope

| Field             | Type   | Description                                     |
| ----------------- | ------ | ----------------------------------------------- |
| `event`           | string | Always `core.document.upload_completed`         |
| `event_id`        | string | Unique delivery ID — use to deduplicate retries |
| `organization_id` | string | ID of the organization that owns the document   |
| `timestamp`       | string | ISO 8601 UTC timestamp of the event             |
| `data`            | object | Event-specific payload (see below)              |

### Data Object

| Field                    | Type    | Description                                         |
| ------------------------ | ------- | --------------------------------------------------- |
| `document_processing_id` | integer | ID of the async processing job                      |
| `file_id`                | string  | Permanent unique identifier for the document        |
| `file_name`              | string  | Original file name                                  |
| `file_extension`         | string  | File extension (e.g., `pdf`, `docx`)                |
| `uploaded_by`            | string  | Email of the user who triggered the upload          |
| `processing_duration_ms` | integer | Time taken to process the document, in milliseconds |
| `attributes`             | array   | Final metadata attributes on the document           |

## Notes

<Tip>
  Use this event to trigger downstream actions — such as starting a workflow or updating a record in your system — only after a document is fully processed and ready.
</Tip>
