---
title: "CSV import"
description: "Add many recordings or text notes at once from a spreadsheet, one row per item, instead of uploading them individually."
---

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

# CSV import

CSV import adds many media files or text notes to Speak AI in one pass, instead of uploading them one at a time. You supply a spreadsheet with a row for each item, map your columns to the fields Speak AI expects, and the app queues everything for processing.

![The Import from CSV dialog on its first step, Choose Mode, ahead of Map and Preview and Review and Import. Two cards offer Media CSV for importing media URLs to transcribe and Text Notes CSV for importing plain text, each capped at 250 records or 500 MB, with a sample CSV to download and a drop zone that accepts .csv only.](/help/media/uploads/uploads-csv-import.jpg)

CSV import requires an active subscription. If **CSV** does not appear in the **New** menu, your current plan does not include it.

## Open the import dialog

1. Select **+ New** in the app sidebar or topbar.
1. Scroll to the **Automate** section of the dropdown and select **CSV**.

The **Import from CSV** dialog opens and walks you through three steps: **Choose Mode**, **Map & Preview**, and **Review & Import**. Use a desktop or tablet screen. On mobile the dialog prompts you to switch to a larger device.

## Step 1, choose a mode

Pick the type of content you are importing:

- **Media CSV** imports media URLs, video or audio files hosted online, to transcribe and analyze. Your file needs a column for the item name and a column for the URL.
- **Text Notes CSV** imports plain text to analyze with AI insights. Your file needs a column for the note name and a column for the text.

Each mode card shows the limits that apply, up to **250 records** per import and a maximum file size of **500 MB**, and links to a sample CSV so you can see the expected format before you build your own.

Drop your `.csv` file onto the dropzone or select it to browse. Speak AI parses the file straight away and moves to the next step.

## Step 2, map your columns

Speak AI reads your header row and matches your column names to its own fields wherever it can. Check each column and confirm or change the mapping in the dropdowns. The required fields, the name and either the URL or the text, must be mapped before you can continue. Optional fields, including Description, Created At, Tags, and any custom fields you have set up, can be mapped or skipped.

Choose a destination folder and set the source language for transcription on this step as well.

## Step 3, review and import

Speak AI shows how many rows it found and flags any **invalid rows**, meaning rows where a required field is empty. Invalid rows appear in a table with the problem cells highlighted. You have two options:

- **Import [n] valid rows** skips the invalid rows and imports everything else. The button shows the actual count.
- **Confirm import ([n])** submits all rows, including the invalid ones. Those rows may still fail during processing.

Select **Download error report** to save your invalid rows as `import-errors.csv`. The file adds an `_error` column describing which required field is missing for each row, so you can correct the data and import again.

Once you submit the import, Speak AI queues your files for processing. If you selected a folder, **Go to Folder** takes you there directly.

## Build the file

- Put your column names in the first row. Speak AI reads that header row to work out what each column holds.
- Save the file with UTF-8 encoding so special characters come through correctly.
- Keep each file to 250 rows or fewer. If a file has more, only the first 250 rows import. Split a larger job across several files, or upgrade to Speak Custom for unlimited rows.

### Columns you can use

| Column | What it does |
| --- | --- |
| `url` | Required for media. The direct download link, YouTube URL, or Vimeo URL. Speak AI has to be able to reach it to download and process the file. |
| `text` | Required for text notes. The body content of the note. |
| `name` | The title of the file or note. Without it, Speak AI generates a name. |
| `description` | A short description of the file. |
| `tags` | A comma separated list of tags, for example "Interview, research, 2023". |
| `folderId` | The ID of the folder the items should land in. |
| `sourceLanguage` | The language code for transcription, for example `en-US` or `fr-FR`. |
| `createdAt` | The creation date and time of the file. ISO format works best. |

### Custom fields

If you have set up [fields](/help/insights/fields/) in your account, you can fill them from the CSV. Use the exact ID of the field as the column header, and match the data to the field type:

- Number fields take numeric values only.
- Boolean fields take `true` or `false`.
- URL fields take a full link including `https://`.
- Date fields take a valid date.

### Find a folder ID

Open the folder in the app and read the ID from your browser's address bar. In `https://app.speakai.co/folder/cf7cbf144443` the folder ID is `cf7cbf144443`. Put that value in the `folderId` column of every row you want in that folder.

### Sample files

- [Download the media sample CSV](https://speakai.co/wp-content/uploads/2022/09/media-files.csv?utm_source=docs&utm_medium=referral&utm_campaign=help)
- [Download the text notes sample CSV](https://speakai.co/wp-content/uploads/2023/11/text-notes.csv?utm_source=docs&utm_medium=referral&utm_campaign=help)

## Import errors and what they mean

| Error | Cause | Fix |
| --- | --- | --- |
| "No URL found" | The `url` column is missing or empty for a row in a media CSV. | Check that every row has a valid link in the `url` column. |
| "Text not found" | The `text` column is missing or empty for a row in a text notes CSV. | Fill the `text` column for every row. |
| "Original file already exists in the folder" | A file with the same source URL is already in that folder. | Remove the duplicate row, or delete the original file from the folder first if you mean to re-upload it. |
| "Duration not found" | Speak AI could not read the media at the URL, usually because the link is broken, expired, or needs a login. | Check the link is publicly accessible and points directly at a media file. |
| "YouTube Data info not found" or "Vimeo Data info not found" | The link is invalid, private, or the video has been deleted. | Open the link in an incognito window to confirm it is public. |
| "Invalid field" for a custom field | The data in that column does not match the field type, such as text in a number field. | Correct the formatting in the column named in the error, for example change "Yes" to `true` for a boolean field. |
| "User has utilized all your available text notes" | Your account has hit its limit for text note processing. | Upgrade your plan or add [credits](/help/account/credits/) to keep processing. |

Still stuck? The fastest way to reach us is live chat in the app, the chat bubble in the bottom corner. You can also email [success@speakai.co](mailto:success@speakai.co) with a copy of your CSV, or a sample of it, and we will look at the file with you.

Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account.

---
Related: [Uploads](/help/uploads/) · [Duration limits](/help/uploads/duration/)

Source: https://docs.speakai.co/help/uploads/csv-import/index.mdx
