---
title: "Presigned upload for a large import file"
method: POST
path: "/business/imports/presign"
tags: ["Lists"]
---

# Presigned upload for a large import file

`POST /business/imports/presign`

## Request

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

Issues a presigned S3 PUT for a CSV/XLS/XLSX import file larger than the 10MB multipart line (up to 50MB). PUT the raw file bytes to `uploadUrl` with the same `Content-Type` you declared, within `expiresIn` seconds (600), then pass the returned `importId` to `POST /business/imports` for the preview, or straight to `POST /business/imports/{importId}/commit`. Nothing is parsed or billed at this step.

Errors:
- `422` `IMPORT_FILE_UNSUPPORTED` — The presign service refused the content type (reachable only if its allow-list and the documented enum drift apart).
- `422` `VALIDATION_FAILED` — filename missing/blank or contentType outside the three supported MIME types.
- `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
  - `filename` string, required: Original file name, e.g. leads.csv (1-500 characters). Free text kept for your own reference: it does not name the stored object, and the file's format is read from contentType alone, so an extension that disagrees with contentType changes nothing.
  - `contentType` 'text/csv' | 'application/vnd.ms-excel' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', required: MIME type of the file to upload: text/csv, application/vnd.ms-excel (XLS) or application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (XLSX); the PUT to uploadUrl must send the same Content-Type.

## Response `201`

Success

- object
  - `upload` object, required
    - `importId` string, required
    - `uploadUrl` string, required
    - `method` 'PUT', required
    - `expiresIn` integer, 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)
