> For the complete documentation index, see [llms.txt](https://help.bioinsight.illumina.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.bioinsight.illumina.com/emedgene/emedgene-curate-manual/curate_variants/adding-variants-to-curate/adding-or-updating-multiple-variants-in-curate/csv-format-requirements-for-variant-upload.md).

# CSV format requirements for variant upload

Use a CSV file to batch upload variants into **Curate**. Starting with v100.40, batch upload also supports updating existing variants using the **`Update`** field.

Batch upload supports SNV, indel, mtDNA, and CNV variants. Each row in the CSV[^1] represents a single variant. **Curate** validates each row during upload, checking required fields, formats, and permissions, before it adds or updates the variant.

Starting with v100.40, batch upload also supports importing ACMG evidence for SNV, indel, and mtDNA variants using the **`ACMG applied`** and **`ACMG not met`** fields.

From v100.41, batch upload also supports setting the curation status of each variant using the **`Status`** field.

## General CSV format requirements

A CSV file used to add or update variants in **Curate** must meet the following requirements:

* File extension: `.csv`.
* The first row contains column headers.
* Each column represents a data field.
* Column headers are case-sensitive and exactly match this specification or a template.
* Each row after the header represents a variant.
* There are no empty rows between the header row and variant rows and between variant rows.
* Maximum file size: 10 MB.
* Maximum number of variants: 5000.
* Supported variant types:
  * SNV (SNV, indel)
  * mtDNA
  * CNV (DEL, DUP)
* SNV and CNV rows may be included in the same file if all mandatory fields are present (see [Field summary](#field-summary)).

## CSV file templates

Download the template for your genome reference (GRCh37 or GRCh38) and use it as a starting point.

{% columns %}
{% column %}
{% file src="/files/rsiWfmqbyal7BENnGDjL" %}
{% endcolumn %}

{% column %}
{% file src="/files/flV721mq0A3NQa2weTcI" %}
{% endcolumn %}
{% endcolumns %}

## Field summary

The table below summarizes which fields are supported for each variant type and whether they are mandatory or optional.

* **Mandatory** fields are required to add or update a variant.
* **Optional** fields may be included if applicable.

| Field (column name)           | SNV       | CNV       |
| ----------------------------- | --------- | --------- |
| **`Vartype`**                 | Mandatory | Mandatory |
| **`Chromosome`**              | Mandatory | Mandatory |
| **`Position`**                | Mandatory | Mandatory |
| **`REF`**                     | Mandatory | Mandatory |
| **`ALT`**                     | Mandatory | N/A       |
| **`End`**                     | N/A       | Mandatory |
| **`Overlap`**                 | N/A       | Optional  |
| **`Pathogenicity`**           | Optional  | Optional  |
| **`Disease`**                 | Optional  | Optional  |
| **`Interpretation`**          | Optional  | Optional  |
| **`Notes`**                   | Optional  | Optional  |
| **`Transcript`**              | Optional  | N/A       |
| **`ACMG applied`** (v100.40+) | Optional  | N/A       |
| **`ACMG not met`** (v100.40+) | Optional  | N/A       |
| **`Update`** (v100.40+)       | Optional  | Optional  |
| **`Status`** (v100.41+)       | Optional  | Optional  |

## Access-controlled fields

Some optional fields require specific [user permissions](/emedgene/emedgene-analyze-manual/settings/user_roles/iam-scopes-emedgene-roles.md) to update.

**Access-controlled fields include:**

* **`Pathogenicity`**
* **`Disease`**
* **`Interpretation`**
* **`Notes`**
* **`Transcript`**
* **`ACMG applied`**
* **`ACMG not met`**
* **`Update`**
* **`Status`**

If you do not have permission to update a field:

* **Curate** ignores the field.
* The variant is still added or updated where possible.
* The upload summary in the last step of [multiple variant upload](/emedgene/emedgene-curate-manual/curate_variants/adding-variants-to-curate/adding-or-updating-multiple-variants-in-curate.md) marks the variant as **Partial Success** and lists the ignored fields.

## Batch variant CSV file validation rules

**Curate** validates each CSV file before upload, and the validation rules vary by variant type. The tables below list the supported fields for each variant type, including mandatory fields (in <mark style="color:red;">red font</mark>) and optional fields for both new variants and updates.

### Single nucleotide variants

Fill in the fields for an SNV, indel, or mtDNA variant according to Table 1.

Table 1. Validation rules for SNV fields

<table data-header-hidden="false" data-header-sticky data-full-width="false"><thead><tr><th>Field (column) name</th><th>Field details</th><th width="187">Expected input</th><th>Example</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong><code>Vartype</code></strong></mark></td><td>Mandatory.</td><td><code>SNV</code>.<br>Applicable for both SNV and indel.</td><td><code>SNV</code></td></tr><tr><td><mark style="color:red;"><strong><code>Chromosome</code></strong></mark></td><td>Mandatory.</td><td><code>1</code> - <code>22</code>, <code>X</code>, <code>Y</code>, <code>M</code></td><td><code>3</code></td></tr><tr><td><mark style="color:red;"><strong><code>Position</code></strong></mark></td><td>Mandatory.</td><td>Integer</td><td><code>123000</code></td></tr><tr><td><mark style="color:red;"><strong><code>REF</code></strong></mark></td><td>Mandatory.</td><td><code>A</code>, <code>T</code>, <code>G</code>, <code>C</code>, or a string of these letters</td><td><code>G</code></td></tr><tr><td><mark style="color:red;"><strong><code>ALT</code></strong></mark></td><td>Mandatory.</td><td><code>A</code>, <code>T</code>, <code>G</code>, <code>C</code>, or a string of these letters</td><td><code>GACT</code></td></tr><tr><td><strong><code>Pathogenicity</code></strong></td><td>Optional.<br>Access-controlled.</td><td><code>Pathogenic</code>, <code>Likely pathogenic</code>, <code>VUS</code>, <code>Likely benign</code>, <code>Benign</code></td><td><code>Likely pathogenic</code></td></tr><tr><td><strong><code>Disease</code></strong></td><td>Optional.<br>Access-controlled.<br><br>OMIM ID.</td><td>Integer</td><td><code>113705</code></td></tr><tr><td><strong><code>Interpretation</code></strong></td><td>Optional.<br>Access-controlled.</td><td>Free text under 65000 characters</td><td>Free text</td></tr><tr><td><strong><code>Notes</code></strong></td><td>Optional.<br>Access-controlled.</td><td>Free text under 65000 characters</td><td>Free text</td></tr><tr><td><strong><code>Transcript</code></strong></td><td>Optional.<br>Access-controlled.<br><br>NCBI RefSeq transcript ID.</td><td>NCBI RefSeq transcript ID</td><td><code>NM_000183.3</code></td></tr><tr><td><strong><code>ACMG applied</code></strong> (v100.40+)</td><td>Optional.<br>Access-controlled.<br><br><i class="fa-square-check">:square-check:</i> ACMG tags applied to the variant.<br><br>If a tag is not listed under <strong><code>ACMG applied</code></strong> or <strong><code>ACMG not met</code></strong>, it remains inactive for the variant.</td><td><p>Comma-separated list of <code>&#x3C;tag></code> or <code>&#x3C;tag>_&#x3C;strength></code> entries.<br></p><p>Recognized <code>&#x3C;strength></code> values: <code>Supporting</code>, <code>Moderate</code>, <code>Strong</code>, <code>Very_Strong</code>, <code>Stand_Alone</code>.<br><br>If a <code>&#x3C;tag></code> is provided without an explicit <code>&#x3C;strength></code>, the system applies the <a href="/emedgene/emedgene-analyze-manual/variant_page/evidence_section/acmg-snv-criteria-evaluation.md">default ACMG strength</a>.</p></td><td><code>PVS1</code>, <code>PM2_Supporting</code></td></tr><tr><td><strong><code>ACMG not met</code></strong> (v100.40+)</td><td>Optional.<br>Access-controlled.<br><br><i class="fa-square-xmark">:square-xmark:</i> ACMG tags explicitly excluded for the variant.<br><br>If a tag is not listed under <strong><code>ACMG applied</code></strong> or <strong><code>ACMG not met</code></strong>, it remains inactive for the variant.</td><td>Comma-separated list of <code>&#x3C;tag></code> entries.</td><td><code>BS1</code>, <code>BP4</code></td></tr><tr><td><strong><code>Update</code></strong><br>(v100.40+)</td><td><p>Optional.<br>Access-controlled.<br><br>When set to <code>true</code>, triggers variant information update.</p><p><br>Default value is <code>false</code>.</p></td><td><code>true</code>, <code>false</code></td><td><code>true</code></td></tr><tr><td><strong><code>Status</code></strong><br>(v100.41+)</td><td>Optional.<br>Access-controlled.<br><br>Variant curation status.<br><br>If absent or empty, the variant receives the <code>Draft</code> status.</td><td><code>Draft</code>, <code>Pending review</code>, <code>Approved</code>, <code>Reclassification needed</code>, <code>Artifact</code></td><td><code>Pending review</code></td></tr></tbody></table>

### Copy number variants

Fill in the fields for a CNV variant according to Table 2.

Table 2. Validation rules for CNV fields

<table data-full-width="false"><thead><tr><th>Field (column) name</th><th width="186.20001220703125">Field details</th><th>Expected input</th><th>Example</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong><code>Vartype</code></strong></mark></td><td>Mandatory.</td><td><code>DEL</code>, <code>DUP</code></td><td><code>DEL</code></td></tr><tr><td><mark style="color:red;"><strong><code>Chromosome</code></strong></mark></td><td>Mandatory.</td><td>Integer</td><td><code>3</code></td></tr><tr><td><mark style="color:red;"><strong><code>Position</code></strong></mark></td><td>Mandatory.</td><td>Integer</td><td><code>123000</code></td></tr><tr><td><mark style="color:red;"><strong><code>End</code></strong></mark></td><td>Mandatory.</td><td>Integer greater than <code>Position</code></td><td><code>124000</code></td></tr><tr><td><mark style="color:red;"><strong><code>REF</code></strong></mark></td><td>Mandatory.</td><td><code>A</code>, <code>T</code>, <code>G</code>, <code>C</code></td><td><code>G</code></td></tr><tr><td><strong><code>Overlap</code></strong></td><td>Optional: if absent or empty, the fallback value <code>70</code> is assigned.</td><td>Integer 0-100</td><td><code>80</code></td></tr><tr><td><strong><code>Pathogenicity</code></strong></td><td>Optional.<br>Access-controlled.</td><td><code>Pathogenic</code>, <code>Likely pathogenic</code>, <code>VUS</code>, <code>Likely benign</code>, <code>Benign</code></td><td><code>Likely pathogenic</code></td></tr><tr><td><strong><code>Disease</code></strong></td><td>Optional.<br>Access-controlled.<br><br>OMIM ID.</td><td>Integer</td><td><code>113705</code></td></tr><tr><td><strong><code>Interpretation</code></strong></td><td>Optional.<br>Access-controlled.</td><td>Free text under 65000 characters</td><td>Free text</td></tr><tr><td><strong><code>Notes</code></strong></td><td>Optional.<br>Access-controlled.</td><td>Free text under 65000 characters</td><td>Free text</td></tr><tr><td><p><strong><code>Update</code></strong></p><p>(v100.40+)</p></td><td><p>Optional.<br>Access-controlled.<br></p><p>When set to <code>true</code>, triggers variant information update.<br>Default value is <code>false</code>.</p></td><td><code>true</code>, <code>false</code></td><td><code>true</code></td></tr><tr><td><p><strong><code>Status</code></strong></p><p>(v100.41+)</p></td><td>Optional.<br>Access-controlled.<br><br>Variant curation status.<br><br>If absent or empty, the variant receives the <code>Draft</code> status.</td><td><code>Draft</code>, <code>Pending review</code>, <code>Approved</code>, <code>Reclassification needed</code>, <code>Artifact</code></td><td><code>Approved</code></td></tr></tbody></table>

[^1]: Comma-Separated Values


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.bioinsight.illumina.com/emedgene/emedgene-curate-manual/curate_variants/adding-variants-to-curate/adding-or-updating-multiple-variants-in-curate/csv-format-requirements-for-variant-upload.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
