Commit an import into a list
Runs a parsed import into a list, exactly once: append to an existing list with listId, or name the destination with listName (an existing list with that exact, case-insensitive name is reused, otherwise it is created). The column mapping is resolved for every header before anything runs — your mapping entry first, then the suggestion stored by POST /business/imports, then the standard header names — and the 202 echoes the mapping the import ran with plus the ignoredHeaders it dropped. A file in which no column resolves to an identity field (LinkedIn URL, Email, or a name plus Company Domain) is refused with 422 IMPORT_IDENTITY_MISSING rather than imported as unmatched rows. onDuplicate decides what a row matching an existing member does: merge (default) fills the member's empty fields and keeps it, skip drops the row, replace saves the row as a new contact and removes the member. enrich runs enrichment on the imported rows in the same job (none = raw rows, email/phone/phone_and_email = the waterfall, demographics = resolve to canonical contacts; billed like POST /business/lists/{listId}/enrich). A second commit of the same importId answers 409. Async: 202. jobId is an opaque orchestration reference and is NOT pollable — poll GET /business/lists/{listId} until completionStatus leaves processing.
Errors:
- 402 INSUFFICIENT_CREDITS — enrich is email, phone or phone_and_email and the credit balance does not cover saving and enriching every row of the file at the reserved (worst-case) price: rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed.
- 404 IMPORT_NOT_FOUND — importId does not decode to an upload of the token owner, or a presigned upload was never PUT.
- 409 IMPORT_ALREADY_COMMITTED — This import already ran; a commit is single-shot. Upload the file again to import it again.
- 422 IMPORT_IDENTITY_MISSING — After the explicit mapping, the stored suggestion and the standard header names, no column resolves to LinkedIn URL, Email, or a name plus Company Domain — rows could not be matched against the list, so nothing was imported. param is mapping.
- 422 IMPORT_FILE_UNSUPPORTED — A presigned upload committed without a preview call could not be parsed.
- 422 IMPORT_FILE_TOO_LARGE — A presigned upload committed without a preview call is over 50MB.
- 422 IMPORT_FILE_EMPTY — The file has no data rows.
- 404 LIST_NOT_FOUND — The destination listId is unknown or not owned.
- 409 LIST_NAME_AMBIGUOUS — More than one list carries listName — reference the destination by id.
- 422 LIST_NAME_RESERVED — listName is a system/dynamic list title and cannot be a destination.
- 422 VALIDATION_FAILED — Neither or both of listId/listName, an unknown body key, an invalid enrich or onDuplicate value, or a mapping value that is not one of the template labels.
- 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
- Base URL: https://api.tryfuse.ai/api/v1
- URL: https://api.tryfuse.ai/api/v1/business/imports/{importId}/commit
- Auth: HTTP basic
Path parameters
The importId returned by POST /business/imports (or /business/imports/presign) that identifies the uploaded file.
Request body
Response
Success
Changes
No recorded changes to this operation across all 1 revision of this API.