---
title: "Start an import (parse + suggested mapping)"
method: POST
path: "/business/imports"
tags: ["Lists"]
---

# Start an import (parse + suggested mapping)

`POST /business/imports`

## Request

- Base URL: `https://api.tryfuse.ai/api/v1`
- URL: `https://api.tryfuse.ai/api/v1/business/imports`
- Auth: HTTP basic

Starts an import from a spreadsheet. Two intake shapes: a multipart request carrying the file (CSV/XLS/XLSX, ≤10MB — larger files go through `POST /business/imports/presign` first) or a JSON body naming a presigned upload's `importId`. The call only parses: it answers 200 with the mapping-confirmation payload — `rowCount`, the detected `headers`, up to five `sampleRows`, and `suggestedMapping` (source header → standard field label such as `First Name`, `Email`, `Company`; null when nothing was suggested) — and stores that suggestion on the import. Nothing is written to any list until `POST /business/imports/{importId}/commit`, which is the only call that takes a destination. Parsing spends no credits.

Errors:
- `400` `IMPORT_FILE_MISSING` — Neither a multipart file part nor an importId was sent.
- `404` `IMPORT_NOT_FOUND` — importId does not decode to an upload of the token owner, or the uploaded object is gone.
- `409` `IMPORT_ALREADY_COMMITTED` — The import was already committed; a committed file is never re-parsed. Upload it again for a new import.
- `422` `IMPORT_FILE_UNSUPPORTED` — The multipart part carries no Content-Type or one that is not CSV/XLS/XLSX, or the file could not be parsed.
- `422` `IMPORT_FILE_TOO_LARGE` — Multipart file over 10MB, or a presigned object over 50MB.
- `422` `IMPORT_FILE_EMPTY` — The file has no data rows.
- `422` `VALIDATION_FAILED` — A body key other than importId (destination fields belong to the commit call).
- `429` `RATE_LIMITED` — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.

Requires one of the following token scopes: lists.

## Request body

- object
  - `importId` string: The importId returned by POST /business/imports/presign, once the file has been PUT to its uploadUrl; omit when the file is sent as a multipart part of this request.

## Response `200`

Success

- object
  - `import` object, required
    - `importId` string, required
    - `filename` string, nullable, required
    - `rowCount` integer, required
    - `headers` string[], required
    - `sampleRows` object[], required
    - `suggestedMapping` object, nullable, required

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `403`: Error
- `404`: Error
- `409`: Error
- `422`: Error
- `429`: Error
- `500`: Error

---

[API](https://skmtc.dev/fuseai/apis/fuse-business-api.md) · [All operations](https://skmtc.dev/fuseai/apis/fuse-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fuseai/apis/fuse-business-api/revisions/50d95e0536f4?raw)
