# Create an import and get a single-file upload URL

> POST /imports/initiate

Source: https://docs.trykintsugi.com/reference/2026-07-21/create-an-import-and-get-a-single-file-upload-url

POST /imports/initiate

Create an import and get a single-file upload URL

Create an import row for one file and return a presigned URL to PUT its bytes to; check `uploadMode` for how to deliver the file. Set `importType` to `PRODUCT_UPDATES` for a product bulk-update .xlsx workbook. Requires file upload v2 for the target organization.

Category: Imports

Request body:
fileName (string, required) - Original file name of the upload.
size (integer, required) - Declared file size in bytes.
contentType (string) - MIME type of the file to upload.
source (string, required) - Import source (a connector name, or IMPORT for a manual upload).
userId (string, required) - Caller-supplied id of the person or process performing the upload, for audit trails.
direction (PublicTransactionDirectionEnum) - SALE or PURCHASE for the whole file; blank per-row direction cells take this value.
  allowed values: SALE, PURCHASE
importType (PublicImportTypeEnum) - TRANSACTIONS (default) for a sales/purchase CSV. PRODUCT_UPDATES for a product bulk-update workbook: fileName must end in .xlsx and contentType must be the Excel workbook MIME type.
  allowed values: TRANSACTIONS, PRODUCT_UPDATES

Response fields:
importId (string, required) - Id of the created import.
uploadUrl (string, required) - URL to PUT the file bytes to; a path on this API when uploadMode is local_internal.
expiresAt (string, required) - When uploadUrl expires.
uploadMode (string, required) - How to deliver the file. `presigned` sends it to the returned URL directly. `local_internal` only appears in local development: send it to the returned path on this API with your credential.
  allowed values: presigned, local_internal

Response statuses: 200, 400, 401, 403, 404, 409, 422

---

Index of every page: https://docs.trykintsugi.com/llms.txt
