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

# talkvalue path import

> Run the CSV bulk import workflow from the CLI: analyze a file, create the job, monitor progress, and export failures.

`talkvalue path import` is the CLI surface of the bulk CSV import feature. The flow has four scriptable steps: upload and analyze the file, create the job with a column mapping, monitor the job until it reaches a terminal state, and export any rows the server rejected. The same pipeline backs the dashboard import wizard.

## Subcommands

| Command                                                             | Description                                                                                                           |
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [`import analyze`](/cli/commands/path/import/analyze)               | Upload a CSV and pre-check it. Returns a `fileKey`, headers, a preview, and the server's guess at the column mapping. |
| [`import create`](/cli/commands/path/import/create)                 | Start an import job from a `fileKey` plus a mapping. Returns the job ID.                                              |
| [`import get`](/cli/commands/path/import/status)                    | Inspect a job. Use it to poll until `status` is `COMPLETED`, `PARTIAL_SUCCESS`, or `FAILED`.                          |
| [`import failed-export`](/cli/commands/path/import/export-failures) | Stream rejected rows as CSV so you can fix them and re-import.                                                        |

## Typical workflow

```bash theme={null}
talkvalue path import analyze --file ./registrants.csv --json
# pick the fileKey, columnMappings, and a sourceId (channel id)
talkvalue path import create \
  --file-key "u/2026/05/abc.csv" \
  --source-id 7 \
  --mode UPDATE \
  --mapping 0:EMAIL --mapping 1:FIRST_NAME --mapping 2:LAST_NAME
talkvalue path import get 4218
talkvalue path import failed-export 4218 > failed.csv
```

Each step is idempotent on the CLI side. Re-running `analyze` produces a new `fileKey` without touching prior imports, and `get` is a read. Only `create` writes, and the resulting job has its own ID so repeating the command queues a second import rather than overwriting the first.

## See also

* [Recipe: CSV import](/cli/recipes/csv-import). The end-to-end script that drives this group.
* [CSV import](/path/import/csv-quickstart). The dashboard wizard the CLI mirrors.
* [Column mapping](/path/import/column-mapping). The target-field reference shared by both surfaces.
* [`path channel list`](/cli/commands/path/channel/list). Find the `sourceId` (channel ID) you import into.
