# Upload a file to import

Step 1 of 3 (upload, preview, commit). Administrators only (`org.settings.manage`). multipart/form-data with the CSV in `file` (at most 10 MB and 5,000 rows) and the target `teamId`. The file is read at once, so one that cannot be used (empty, not a CSV, a stray quote, too many rows) is refused with 422 and nothing is stored. UTF-8, UTF-16 and Windows-1252 are recognised, and the separator is detected.

Nothing is written to the team. The response carries the file's headers, a few sample rows, and `suggestedMapping`, a starting point guessed from the header names for the caller to review. `namespace` names where the file's row ids come from: rows already imported under the same namespace are recognised on a re-run and skipped. It defaults to one derived from the file name, or to `linear` or `jira` for an export of that tool, so overlapping exports share it. `detected` is set when the file is recognised as another tool's export. `previousImport` is set when this exact file was imported into the team before.

Uploads that are never committed are closed after 24 hours and their file deleted. A team holds at most 10 unfinished imports (409).

Canonical: https://easerix.com/docs/developers/api/tasks/imports/createImport

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

export default function Layout(props) {
  const { APIPage, OpenAPIPage } = props.components ?? {};
  // "APIPage" is the old name from v10, this allows both for backward compatibility
  const Comp = OpenAPIPage ?? APIPage;
  return (
    <>
      {props.children}
      <Comp document="tasks" operations={[{"path":"/v1/imports","method":"post"}]} />
    </>
  );
}
