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:
402INSUFFICIENT_CREDITS — enrich is email, phone or phone_and_email and the credit balance does not cover enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. demographics (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row.
404IMPORT_NOT_FOUND — importId does not decode to an upload of the token owner, or a presigned upload was never PUT.
409IMPORT_ALREADY_COMMITTED — This import already ran; a commit is single-shot. Upload the file again to import it again.
422IMPORT_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.
422IMPORT_FILE_UNSUPPORTED — A presigned upload committed without a preview call could not be parsed.
422IMPORT_FILE_TOO_LARGE — A presigned upload committed without a preview call is over 50MB.
422IMPORT_FILE_EMPTY — The file has no data rows.
404LIST_NOT_FOUND — The destination listId is unknown or not owned.
409LIST_NAME_AMBIGUOUS — More than one list carries listName — reference the destination by id.
422LIST_NAME_RESERVED — listName is a system/dynamic list title and cannot be a destination.
422VALIDATION_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.
429RATE_LIMITED — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.
Requires one of the following token scopes: lists.
24-character hex id of an existing contact list to append the rows to; mutually exclusive with listName, and an unknown or non-owned id answers 404 LIST_NOT_FOUND.
Name of the destination contact list (1-255 characters): an existing list with this exact name (case-insensitive) is reused, otherwise it is created; mutually exclusive with listId. Two lists sharing the name answer 409 LIST_NAME_AMBIGUOUS and reserved system titles answer 422 LIST_NAME_RESERVED.
Column mapping from source column header to target field, e.g. {"fname": "First Name"} (up to 200 entries). Each key is a column header spelled exactly as it appears in the file (the headers of the import preview). Each value is one of these template labels, spelled and cased exactly like this: Full Name, First Name, Last Name, LinkedIn URL, Company, Company Domain, Job Title, Job Level, Department, Industry, Country, State, City, Email, Phone (the synonyms linkedinUrl, linkedin, Company Name, Mobile Phone, Seniority, Level are accepted and read as the label they stand for). Any other value is rejected with VALIDATION_FAILED. A header with no target carries null and is left out, so the suggestedMapping from POST /business/imports can be sent back unchanged. Headers you leave out of the mapping fall back to the stored suggestion, then to the standard header names (email, first_name, title, domain, url, position ...); the 202 response echoes the mapping the import ran with and lists every header it ignored. When two headers name the same label only the first one is used.
Enrichment to run on the imported rows: none (default, rows saved exactly as uploaded), email, phone or phone_and_email (the enrichment waterfall, billed per contact processed) or demographics (resolve rows to canonical contacts, 1 credit per resolved contact; rows nobody matches are free). In the waterfall modes the rows are matched to canonical contacts first, for free.
What to do with a row that matches a contact already in the destination list (matched by LinkedIn URL, then email, then name plus company domain). merge (default): fill the existing contact's empty fields from the row and keep it in the list. skip: leave the existing contact untouched and drop the row. replace: save the row as a new contact and remove the existing one from the list. With enrich set to anything but none, merge and replace both enrich the existing contact in place and skip leaves it out of the enrichment.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fuse API","colors":{"primary":"#22857C","light":"#34C7BA","dark":"#22857C"},"logo":{"light":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=c9afa73057eb802e14743fbb297c60d5","dark":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/dark.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=1fc8cdcdfa374184a0d0be9a3559e3ae"},"favicon":{"light":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/favicon/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=ac736774fcb3b9a1a851b2993948e5ec","dark":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/favicon/dark.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=32e317b320fd34552ab3990cd8a717a4"},"api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"],"prefill":true}},"background":{"color":{"light":"#FFFFFF","dark":"#161615"}},"navbar":{"links":[{"href":"mailto:support@fuseai.com","label":"Support"}],"primary":{"type":"button","label":"Open Fuse","href":"https://app.tryfuse.ai"}},"footer":{"socials":{"website":"https://fuseai.com","linkedin":"https://www.linkedin.com/company/fuseaicom"}},"contextual":{"options":["copy","view","claude","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fuseai","hasAudioNarration":false,"actualSubdomain":"fuseai","customDomains":["docs.fuseai.com"],"gitSource":{"type":"github","owner":"kompassai-com","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae37b777a4e4821c08feade","collectionId":"5bacfad1-97dd-4f59-945f-2a160fb2f0c7","liveDeploymentHistoryId":"6ae37b777a4e4821c08feade","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae37b777a4e4821c08feade","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":157},{"language":"default","tag":"Documentation","count":50},{"language":"default","tag":"Agents","count":27},{"language":"default","tag":"Knowledge hubs","count":18},{"language":"default","tag":"Lists","count":17},{"language":"default","tag":"Campaigns","count":15},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"Workflows","count":10},{"language":"default","tag":"Data","count":9},{"language":"default","tag":"Account","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#topbar-cta-button .bg-primary-dark{background-color:rgb(0 0 0)}.dark #topbar-cta-button .bg-primary-dark{background-color:rgb(255 255 255)}.dark #topbar-cta-button .text-white,.dark #topbar-cta-button .text-white\\/90{color:rgb(0 0 0)}"}],"page":{"pagePath":"api-reference/lists/commit-an-import-into-a-list","slug":"/api-reference/lists/commit-an-import-into-a-list","pageMetadata":{"title":"Commit an import into a list","description":"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`.\n\nErrors:\n- `402` `INSUFFICIENT_CREDITS` — `enrich` is `email`, `phone` or `phone_and_email` and the credit balance does not cover enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. `demographics` (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row.\n- `404` `IMPORT_NOT_FOUND` — importId does not decode to an upload of the token owner, or a presigned upload was never PUT.\n- `409` `IMPORT_ALREADY_COMMITTED` — This import already ran; a commit is single-shot. Upload the file again to import it again.\n- `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`.\n- `422` `IMPORT_FILE_UNSUPPORTED` — A presigned upload committed without a preview call could not be parsed.\n- `422` `IMPORT_FILE_TOO_LARGE` — A presigned upload committed without a preview call is over 50MB.\n- `422` `IMPORT_FILE_EMPTY` — The file has no data rows.\n- `404` `LIST_NOT_FOUND` — The destination listId is unknown or not owned.\n- `409` `LIST_NAME_AMBIGUOUS` — More than one list carries listName — reference the destination by id.\n- `422` `LIST_NAME_RESERVED` — listName is a system/dynamic list title and cannot be a destination.\n- `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.\n- `429` `RATE_LIMITED` — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.\n\nRequires one of the following token scopes: lists.","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/{importId}/commit","href":"/api-reference/lists/commit-an-import-into-a-list","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Runs a parsed import into a list, exactly once: append to an existing list with \", _jsx(_components.code, {\n children: \"listId\"\n }), \", or name the destination with \", _jsx(_components.code, {\n children: \"listName\"\n }), \" (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 \", _jsx(_components.code, {\n children: \"mapping\"\n }), \" entry first, then the suggestion stored by \", _jsx(_components.code, {\n children: \"POST /business/imports\"\n }), \", then the standard header names — and the 202 echoes the \", _jsx(_components.code, {\n children: \"mapping\"\n }), \" the import ran with plus the \", _jsx(_components.code, {\n children: \"ignoredHeaders\"\n }), \" 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. \", _jsx(_components.code, {\n children: \"onDuplicate\"\n }), \" decides what a row matching an existing member does: \", _jsx(_components.code, {\n children: \"merge\"\n }), \" (default) fills the member’s empty fields and keeps it, \", _jsx(_components.code, {\n children: \"skip\"\n }), \" drops the row, \", _jsx(_components.code, {\n children: \"replace\"\n }), \" saves the row as a new contact and removes the member. \", _jsx(_components.code, {\n children: \"enrich\"\n }), \" runs enrichment on the imported rows in the same job (\", _jsx(_components.code, {\n children: \"none\"\n }), \" = raw rows, \", _jsx(_components.code, {\n children: \"email\"\n }), \"/\", _jsx(_components.code, {\n children: \"phone\"\n }), \"/\", _jsx(_components.code, {\n children: \"phone_and_email\"\n }), \" = the waterfall, \", _jsx(_components.code, {\n children: \"demographics\"\n }), \" = resolve to canonical contacts; billed like \", _jsx(_components.code, {\n children: \"POST /business/lists/{listId}/enrich\"\n }), \"). A second commit of the same importId answers 409. Async: 202. \", _jsx(_components.code, {\n children: \"jobId\"\n }), \" is an opaque orchestration reference and is NOT pollable — poll \", _jsx(_components.code, {\n children: \"GET /business/lists/{listId}\"\n }), \" until \", _jsx(_components.code, {\n children: \"completionStatus\"\n }), \" leaves \", _jsx(_components.code, {\n children: \"processing\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Errors:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"402\"\n }), \" \", _jsx(_components.code, {\n children: \"INSUFFICIENT_CREDITS\"\n }), \" — \", _jsx(_components.code, {\n children: \"enrich\"\n }), \" is \", _jsx(_components.code, {\n children: \"email\"\n }), \", \", _jsx(_components.code, {\n children: \"phone\"\n }), \" or \", _jsx(_components.code, {\n children: \"phone_and_email\"\n }), \" and the credit balance does not cover enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. \", _jsx(_components.code, {\n children: \"demographics\"\n }), \" (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"404\"\n }), \" \", _jsx(_components.code, {\n children: \"IMPORT_NOT_FOUND\"\n }), \" — importId does not decode to an upload of the token owner, or a presigned upload was never PUT.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"409\"\n }), \" \", _jsx(_components.code, {\n children: \"IMPORT_ALREADY_COMMITTED\"\n }), \" — This import already ran; a commit is single-shot. Upload the file again to import it again.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"IMPORT_IDENTITY_MISSING\"\n }), \" — 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. \", _jsx(_components.code, {\n children: \"param\"\n }), \" is \", _jsx(_components.code, {\n children: \"mapping\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"IMPORT_FILE_UNSUPPORTED\"\n }), \" — A presigned upload committed without a preview call could not be parsed.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"IMPORT_FILE_TOO_LARGE\"\n }), \" — A presigned upload committed without a preview call is over 50MB.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"IMPORT_FILE_EMPTY\"\n }), \" — The file has no data rows.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"404\"\n }), \" \", _jsx(_components.code, {\n children: \"LIST_NOT_FOUND\"\n }), \" — The destination listId is unknown or not owned.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"409\"\n }), \" \", _jsx(_components.code, {\n children: \"LIST_NAME_AMBIGUOUS\"\n }), \" — More than one list carries listName — reference the destination by id.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"LIST_NAME_RESERVED\"\n }), \" — listName is a system/dynamic list title and cannot be a destination.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"VALIDATION_FAILED\"\n }), \" — 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.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"429\"\n }), \" \", _jsx(_components.code, {\n children: \"RATE_LIMITED\"\n }), \" — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Requires one of the following token scopes: lists.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Commit an import into a list","description":"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`.\n\nErrors:\n- `402` `INSUFFICIENT_CREDITS` — `enrich` is `email`, `phone` or `phone_and_email` and the credit balance does not cover enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. `demographics` (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row.\n- `404` `IMPORT_NOT_FOUND` — importId does not decode to an upload of the token owner, or a presigned upload was never PUT.\n- `409` `IMPORT_ALREADY_COMMITTED` — This import already ran; a commit is single-shot. Upload the file again to import it again.\n- `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`.\n- `422` `IMPORT_FILE_UNSUPPORTED` — A presigned upload committed without a preview call could not be parsed.\n- `422` `IMPORT_FILE_TOO_LARGE` — A presigned upload committed without a preview call is over 50MB.\n- `422` `IMPORT_FILE_EMPTY` — The file has no data rows.\n- `404` `LIST_NOT_FOUND` — The destination listId is unknown or not owned.\n- `409` `LIST_NAME_AMBIGUOUS` — More than one list carries listName — reference the destination by id.\n- `422` `LIST_NAME_RESERVED` — listName is a system/dynamic list title and cannot be a destination.\n- `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.\n- `429` `RATE_LIMITED` — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.\n\nRequires one of the following token scopes: lists.","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/{importId}/commit","href":"/api-reference/lists/commit-an-import-into-a-list","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"commitImport","summary":"Commit an import into a list","tags":["Lists"],"security":["c3b6bcfb-c0c8-423c-8765-1c2249ba910e"],"parameters":["c64aa9e7-6824-4a2d-8741-72cafc0e3edd"],"responses":{"202":"731baf6d-1ad4-406e-93b3-44fbd40404b3","400":"5f125ebb-2b0c-49fe-a4d4-84ebb53609fa","401":"c4e3557b-fa81-47d7-8b55-d3907ba4d23d","402":"68c63346-312f-465f-b7a9-b6194c7a6c89","403":"7cf34ec0-3cf6-4ff7-bd02-ecc67ef8ac5c","404":"2d9f3778-c8c6-49da-9d32-bb7efeb69700","409":"5049923e-128e-457b-9961-a5c88dff89d2","422":"6b932d8e-22be-42b0-a5d6-590802580de2","429":"bf14a5e6-7bc3-453b-90bd-5219ec01faf5","500":"a2b4b9f0-0554-4a99-be3e-9ac6c083c1c4"},"description":"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`.\n\nErrors:\n- `402` `INSUFFICIENT_CREDITS` — `enrich` is `email`, `phone` or `phone_and_email` and the credit balance does not cover enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. `demographics` (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row.\n- `404` `IMPORT_NOT_FOUND` — importId does not decode to an upload of the token owner, or a presigned upload was never PUT.\n- `409` `IMPORT_ALREADY_COMMITTED` — This import already ran; a commit is single-shot. Upload the file again to import it again.\n- `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`.\n- `422` `IMPORT_FILE_UNSUPPORTED` — A presigned upload committed without a preview call could not be parsed.\n- `422` `IMPORT_FILE_TOO_LARGE` — A presigned upload committed without a preview call is over 50MB.\n- `422` `IMPORT_FILE_EMPTY` — The file has no data rows.\n- `404` `LIST_NOT_FOUND` — The destination listId is unknown or not owned.\n- `409` `LIST_NAME_AMBIGUOUS` — More than one list carries listName — reference the destination by id.\n- `422` `LIST_NAME_RESERVED` — listName is a system/dynamic list title and cannot be a destination.\n- `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.\n- `429` `RATE_LIMITED` — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.\n\nRequires one of the following token scopes: lists.","requestBody":"7c05cfa4-64d1-411c-a3b7-c2ec8395f522","method":"post","type":"path","servers":["4ca8b996-e74f-447c-8937-bc591ab08d00"],"path":"/business/imports/{importId}/commit","baseUrlOptions":["https://api.tryfuse.ai/api/v1"],"title":"Commit an import into a list","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.listId":"\u003cstring>","body.listName":"\u003cstring>","body.mapping":{}}]},"dependencies":{"parameters":{"c64aa9e7-6824-4a2d-8741-72cafc0e3edd":{"name":"importId","in":"path","required":true,"description":"The importId returned by POST /business/imports (or /business/imports/presign) that identifies the uploaded file.","schema":{"type":"string","minLength":8,"maxLength":800,"description":"The importId returned by POST /business/imports (or /business/imports/presign) that identifies the uploaded file.","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listId":{"type":"string","description":"24-character hex id of an existing contact list to append the rows to; mutually exclusive with listName, and an unknown or non-owned id answers 404 LIST_NOT_FOUND.","uniqueKey":"listId","typeLabel":"string"},"listName":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the destination contact list (1-255 characters): an existing list with this exact name (case-insensitive) is reused, otherwise it is created; mutually exclusive with listId. Two lists sharing the name answer 409 LIST_NAME_AMBIGUOUS and reserved system titles answer 422 LIST_NAME_RESERVED.","uniqueKey":"listName","typeLabel":"string"},"mapping":{"type":"object","properties":{},"description":"Column mapping from source column header to target field, e.g. {\"fname\": \"First Name\"} (up to 200 entries). Each key is a column header spelled exactly as it appears in the file (the `headers` of the import preview). Each value is one of these template labels, spelled and cased exactly like this: Full Name, First Name, Last Name, LinkedIn URL, Company, Company Domain, Job Title, Job Level, Department, Industry, Country, State, City, Email, Phone (the synonyms linkedinUrl, linkedin, Company Name, Mobile Phone, Seniority, Level are accepted and read as the label they stand for). Any other value is rejected with VALIDATION_FAILED. A header with no target carries null and is left out, so the suggestedMapping from POST /business/imports can be sent back unchanged. Headers you leave out of the mapping fall back to the stored suggestion, then to the standard header names (email, first_name, title, domain, url, position ...); the 202 response echoes the mapping the import ran with and lists every header it ignored. When two headers name the same label only the first one is used.","uniqueKey":"mapping","typeLabel":"object"},"enrich":{"type":"string","enum":["none","email","phone","phone_and_email","demographics"],"description":"Enrichment to run on the imported rows: none (default, rows saved exactly as uploaded), email, phone or phone_and_email (the enrichment waterfall, billed per contact processed) or demographics (resolve rows to canonical contacts, 1 credit per resolved contact; rows nobody matches are free). In the waterfall modes the rows are matched to canonical contacts first, for free.","uniqueKey":"enrich","typeLabel":"enum\u003cstring>"},"onDuplicate":{"type":"string","enum":["merge","skip","replace"],"description":"What to do with a row that matches a contact already in the destination list (matched by LinkedIn URL, then email, then name plus company domain). merge (default): fill the existing contact's empty fields from the row and keep it in the list. skip: leave the existing contact untouched and drop the row. replace: save the row as a new contact and remove the existing one from the list. With enrich set to anything but none, merge and replace both enrich the existing contact in place and skip leaves it out of the enrichment.","uniqueKey":"onDuplicate","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"listId":"\u003cstring>","listName":"\u003cstring>","mapping":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"731baf6d-1ad4-406e-93b3-44fbd40404b3":{"description":"Success","headers":{"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests permitted in the current window."},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests remaining in the current window."},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the current window resets."}},"content":{"application/json":{"schema":{"type":"object","required":["import"],"properties":{"import":{"type":"object","required":["importId","listId","jobId","mapping","ignoredHeaders"],"properties":{"importId":{"type":"string","isRequired":true,"uniqueKey":"import.importId","typeLabel":"string"},"listId":{"type":"string","isRequired":true,"uniqueKey":"import.listId","typeLabel":"string"},"jobId":{"type":"string","isRequired":true,"uniqueKey":"import.jobId","typeLabel":"string"},"mapping":{"type":"object","description":"Source header → template label the import ran with; null for a header that was left out.","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"import.mapping.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"import.mapping.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"import.mapping.additionalProperties","typeLabel":"string | null"},"isRequired":true,"uniqueKey":"import.mapping","typeLabel":"object"},"ignoredHeaders":{"type":"array","description":"Headers no template label claimed; their values did not reach the list.","items":{"type":"string","uniqueKey":"import.ignoredHeaders.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"import.ignoredHeaders","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"import","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"import":{"importId":"dXBsb2Fkcy82OGExZjIwYjljNDFkMjAwMTRiM2U5MDEvM2Y2ZjBlMmEtOGQ0Yi00ZTFhLTk3YzItNWQ4YjFmMGUyYTdjLmNzdg","listId":"68a1f20b9c41d20014b3e901","jobId":"3f6f0e2a-8d4b-4e1a-97c2-5d8b1f0e2a7c","mapping":{"First Name":"First Name","Last Name":"Last Name","Email":"Email","Company":"Company","Tel":"Phone","Deal stage":null},"ignoredHeaders":["Deal stage"]}},"examples":{"Example":{"title":"Example","value":{"import":{"importId":"dXBsb2Fkcy82OGExZjIwYjljNDFkMjAwMTRiM2U5MDEvM2Y2ZjBlMmEtOGQ0Yi00ZTFhLTk3YzItNWQ4YjFmMGUyYTdjLmNzdg","listId":"68a1f20b9c41d20014b3e901","jobId":"3f6f0e2a-8d4b-4e1a-97c2-5d8b1f0e2a7c","mapping":{"First Name":"First Name","Last Name":"Last Name","Email":"Email","Company":"Company","Tel":"Phone","Deal stage":null},"ignoredHeaders":["Deal stage"]}}}},"exampleType":"examples"}},"exampleType":"examples"},"5f125ebb-2b0c-49fe-a4d4-84ebb53609fa":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c4e3557b-fa81-47d7-8b55-d3907ba4d23d":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"68c63346-312f-465f-b7a9-b6194c7a6c89":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"7cf34ec0-3cf6-4ff7-bd02-ecc67ef8ac5c":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2d9f3778-c8c6-49da-9d32-bb7efeb69700":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"5049923e-128e-457b-9961-a5c88dff89d2":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"6b932d8e-22be-42b0-a5d6-590802580de2":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"bf14a5e6-7bc3-453b-90bd-5219ec01faf5":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a2b4b9f0-0554-4a99-be3e-9ac6c083c1c4":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c3b6bcfb-c0c8-423c-8765-1c2249ba910e":{"basicAuth":{"type":"http","scheme":"basic","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","scopes":[],"schemeName":"basicAuth"}}},"servers":{"4ca8b996-e74f-447c-8937-bc591ab08d00":{"url":"https://api.tryfuse.ai/api/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","scopes":[],"schemeName":"basicAuth"},"schema":{"title":"Basic Auth","type":"object","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"basicAuth","name":"Authorization"}],"title":"basicAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"fuseai","siteName":"Fuse API","title":"Commit an import into a list - Fuse API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T16:59:46.381Z","originalFileLocation":"api-reference/lists/commit-an-import-into-a-list.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"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\u0026#x27;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 enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. demographics (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row. - 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.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fuse API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Commit an import into a list - Fuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"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\u0026#x27;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 enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. demographics (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row. - 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.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fuse API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fuseai.mintlify.app/_mintlify/api/og/v2?division=Lists\u0026amp;title=Commit+an+import+into+a+list\u0026amp;description=Runs+a+parsed+import+into+a+list%2C+exactly+once%3A+append+to+an+existing+list+with+%60listId%60%2C+or+name+the+destination+with+%60listName%60+%28an+existing+list+with+that+ex\u0026amp;theme=6edc0ab12d2194e24d86a864\u0026amp;signature=677cab7dece4664d125eb746811b1dc9e7a4423adc3407b5f98cc53198e52569\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Commit an import into a list - Fuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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\u0026#x27;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 enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. demographics (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row. - 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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fuseai.mintlify.app/_mintlify/api/og/v2?division=Lists\u0026amp;title=Commit+an+import+into+a+list\u0026amp;description=Runs+a+parsed+import+into+a+list%2C+exactly+once%3A+append+to+an+existing+list+with+%60listId%60%2C+or+name+the+destination+with+%60listName%60+%28an+existing+list+with+that+ex\u0026amp;theme=6edc0ab12d2194e24d86a864\u0026amp;signature=677cab7dece4664d125eb746811b1dc9e7a4423adc3407b5f98cc53198e52569\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fuse API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#22857C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/lists/commit-an-import-into-a-list.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fuseai.com/#organization\",\"name\":\"Fuse API\",\"url\":\"https://docs.fuseai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=c9afa73057eb802e14743fbb297c60d5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fuseai.com#website\",\"name\":\"Fuse API\",\"url\":\"https://docs.fuseai.com\",\"publisher\":{\"@id\":\"https://docs.fuseai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list#webpage\",\"url\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list\",\"name\":\"Commit an import into a list\",\"description\":\"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 enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. demographics (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row. - 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.\",\"dateModified\":\"2026-10-29T16:59:46.381Z\",\"isPartOf\":{\"@id\":\"https://docs.fuseai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lists\",\"item\":\"https://docs.fuseai.com/api-reference/lists/list-the-token-owners-prospect-lists\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Commit an import into a list\",\"item\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list#apireference\",\"headline\":\"Commit an import into a list\",\"name\":\"Commit an import into a list\",\"description\":\"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 enriching every row of the file at the reserved (worst-case) price. Matching the rows to contacts is free in these modes, but rows the import later drops (duplicates within the file, rows with no usable identity) are priced too. Nothing was imported or billed. demographics (1 credit per matched contact, unmatched rows free) is not checked here: the import job checks the balance itself before it saves any row. - 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.\",\"url\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list#webpage\"},\"dateModified\":\"2026-10-29T16:59:46.381Z\",\"publisher\":{\"@id\":\"https://docs.fuseai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fuseai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fuse API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fuse API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Lists","pages":[{"title":"List the token owner's prospect lists","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists","href":"/api-reference/lists/list-the-token-owners-prospect-lists"},{"title":"Create a prospect list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists","href":"/api-reference/lists/create-a-prospect-list"},{"title":"Get one list's metadata","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}","href":"/api-reference/lists/get-one-lists-metadata"},{"title":"Delete a list","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}","href":"/api-reference/lists/delete-a-list"},{"title":"Rename a list or move it between folders","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}","href":"/api-reference/lists/rename-a-list-or-move-it-between-folders"},{"title":"Copy rows from one list into another","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/save-to-list","href":"/api-reference/lists/copy-rows-from-one-list-into-another"},{"title":"Build a company list from a contact list's companies","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/derive-company-list","href":"/api-reference/lists/build-a-company-list-from-a-contact-lists-companies"},{"title":"Distinct values a company list carries for a field","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/filter-values","href":"/api-reference/lists/distinct-values-a-company-list-carries-for-a-field"},{"title":"List a list's contacts (with ids and column values)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/rows","href":"/api-reference/lists/list-a-lists-contacts-with-ids-and-column-values"},{"title":"Add existing contacts to a list (by id)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/members","href":"/api-reference/lists/add-existing-contacts-to-a-list-by-id"},{"title":"Remove contacts from a list","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}/members","href":"/api-reference/lists/remove-contacts-from-a-list"},{"title":"Upload new contact data into a list (RAW upload)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/contacts","href":"/api-reference/lists/upload-new-contact-data-into-a-list-raw-upload"},{"title":"Enrich a list's contacts in place","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/enrich","href":"/api-reference/lists/enrich-a-lists-contacts-in-place"},{"title":"Push a list's contacts into a connected CRM","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/crm-push","href":"/api-reference/lists/push-a-lists-contacts-into-a-connected-crm"},{"title":"Presigned upload for a large import file","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/presign","href":"/api-reference/lists/presigned-upload-for-a-large-import-file"},{"title":"Start an import (parse + suggested mapping)","description":"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.\n\nErrors:\n- `400` `IMPORT_FILE_MISSING` — Neither a multipart file part nor an importId was sent.\n- `404` `IMPORT_NOT_FOUND` — importId does not decode to an upload of the token owner, or the uploaded object is gone.\n- `409` `IMPORT_ALREADY_COMMITTED` — The import was already committed; a committed file is never re-parsed. Upload it again for a new import.\n- `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.\n- `422` `IMPORT_FILE_TOO_LARGE` — Multipart file over 10MB, or a presigned object over 50MB.\n- `422` `IMPORT_FILE_EMPTY` — The file has no data rows.\n- `422` `VALIDATION_FAILED` — A body key other than importId (destination fields belong to the commit call).\n- `429` `RATE_LIMITED` — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.\n\nRequires one of the following token scopes: lists.","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports","href":"/api-reference/lists/start-an-import-parse-+-suggested-mapping"},{"title":"Commit an import into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/{importId}/commit","href":"/api-reference/lists/commit-an-import-into-a-list"}]},{"group":"Custom columns","pages":[{"title":"List a list's custom column definitions","description":"The list's column definitions — both plain custom columns created here and smart (AI) columns — as `{ id, name, type }`. Column ids key the `columnValues` map on `GET .../rows` and are what `PATCH .../columns/{columnId}/values` and `DELETE .../columns/{columnId}` take.\n\nErrors:\n- `404` `LIST_NOT_FOUND` — No list with that id is visible to the token owner.\n- `422` `VALIDATION_FAILED` — listId is not a 24-hex id.\n- `429` `RATE_LIMITED` — The lists rate bucket is exhausted.\n\nRequires one of the following token scopes: lists.","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/columns","href":"/api-reference/custom-columns/list-a-lists-custom-column-definitions"},{"title":"Create a custom column on a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/columns","href":"/api-reference/custom-columns/create-a-custom-column-on-a-list"},{"title":"Delete a custom column (its values go with it)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}/columns/{columnId}","href":"/api-reference/custom-columns/delete-a-custom-column-its-values-go-with-it"},{"title":"Write custom column values (keyed by contact id)","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}/columns/{columnId}/values","href":"/api-reference/custom-columns/write-custom-column-values-keyed-by-contact-id"}]},{"group":"Smart columns","pages":[{"title":"Add an AI column that researches every row","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/smart-columns","href":"/api-reference/smart-columns/add-an-ai-column-that-researches-every-row"},{"title":"Poll a smart-column run","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/smart-columns/{jobId}/status","href":"/api-reference/smart-columns/poll-a-smart-column-run"},{"title":"A smart column's definition and run state","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/smart-columns/{columnId}","href":"/api-reference/smart-columns/a-smart-columns-definition-and-run-state"},{"title":"Rename a smart column, change its prompt or providers","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}/smart-columns/{columnId}","href":"/api-reference/smart-columns/rename-a-smart-column-change-its-prompt-or-providers"},{"title":"Run a smart column again","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/smart-columns/{columnId}/rerun","href":"/api-reference/smart-columns/run-a-smart-column-again"},{"title":"Where a smart-column cell's value came from","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/rows/{contactId}/columns/{columnId}/provenance","href":"/api-reference/smart-columns/where-a-smart-column-cells-value-came-from"}]},{"group":"Exports","pages":[{"title":"Start an async CSV export of a list (returns a jobId)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/export","href":"/api-reference/exports/start-an-async-csv-export-of-a-list-returns-a-jobid"},{"title":"Poll an export job (presigned download URL when completed)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/exports/{jobId}","href":"/api-reference/exports/poll-an-export-job-presigned-download-url-when-completed"}]},{"group":"Campaigns","pages":[{"title":"List the token owner's campaigns with headline analytics","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns","href":"/api-reference/campaigns/list-the-token-owners-campaigns-with-headline-analytics"},{"title":"Create a draft campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns","href":"/api-reference/campaigns/create-a-draft-campaign"},{"title":"Get a campaign's status","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}","href":"/api-reference/campaigns/get-a-campaigns-status"},{"title":"Stop and delete a campaign","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaigns/{campaignId}","href":"/api-reference/campaigns/stop-and-delete-a-campaign"},{"title":"Update a campaign's settings","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/campaigns/{campaignId}","href":"/api-reference/campaigns/update-a-campaigns-settings"},{"title":"List a campaign's sequence steps","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/steps","href":"/api-reference/campaigns/list-a-campaigns-sequence-steps"},{"title":"Edit a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/campaigns/{campaignId}/steps/{stepId}","href":"/api-reference/campaigns/edit-a-sequence-step"},{"title":"Approve (activate) a draft campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/approve","href":"/api-reference/campaigns/approve-activate-a-draft-campaign"},{"title":"Stop an active campaign (approve re-activates it)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/stop","href":"/api-reference/campaigns/stop-an-active-campaign-approve-re-activates-it"},{"title":"Copy a campaign as a fresh draft","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/duplicate","href":"/api-reference/campaigns/copy-a-campaign-as-a-fresh-draft"},{"title":"The personalization variables this campaign's steps can use","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/variables","href":"/api-reference/campaigns/the-personalization-variables-this-campaigns-steps-can-use"},{"title":"A campaign's headline metrics since `since`","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/stats","href":"/api-reference/campaigns/a-campaigns-headline-metrics-since-`since`"},{"title":"The campaign's leads with their per-step state","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/leads","href":"/api-reference/campaigns/the-campaigns-leads-with-their-per-step-state"},{"title":"Export the campaign's leads to CSV","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/leads/export","href":"/api-reference/campaigns/export-the-campaigns-leads-to-csv"},{"title":"Per-arm results of a campaign's A/B splits","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/split-results","href":"/api-reference/campaigns/per-arm-results-of-a-campaigns-ab-splits"}]},{"group":"Campaign steps","pages":[{"title":"Add a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps","href":"/api-reference/campaign-steps/add-a-sequence-step"},{"title":"Remove a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaigns/{campaignId}/steps/{stepId}","href":"/api-reference/campaign-steps/remove-a-sequence-step"},{"title":"Copy one arm of an A/B split into the other","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/{stepId}/copy-arm","href":"/api-reference/campaign-steps/copy-one-arm-of-an-ab-split-into-the-other"},{"title":"Render the step for a sample lead without saving or sending","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/{stepId}/generate","href":"/api-reference/campaign-steps/render-the-step-for-a-sample-lead-without-saving-or-sending"},{"title":"Rebuild the AI topic plan across the campaign's steps","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/regenerate-topics","href":"/api-reference/campaign-steps/rebuild-the-ai-topic-plan-across-the-campaigns-steps"}]},{"group":"Knowledge hubs","pages":[{"title":"List the token owner's knowledge hubs","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs","href":"/api-reference/knowledge-hubs/list-the-token-owners-knowledge-hubs"},{"title":"Create a knowledge hub from websites","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs","href":"/api-reference/knowledge-hubs/create-a-knowledge-hub-from-websites"},{"title":"Make a hub the default one","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/default","href":"/api-reference/knowledge-hubs/make-a-hub-the-default-one"},{"title":"Facts learned from the team's communications","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/learned-facts","href":"/api-reference/knowledge-hubs/facts-learned-from-the-teams-communications"},{"title":"Discard a learned fact","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/learned-facts/{factId}","href":"/api-reference/knowledge-hubs/discard-a-learned-fact"},{"title":"Correct a learned fact","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/learned-facts/{factId}","href":"/api-reference/knowledge-hubs/correct-a-learned-fact"},{"title":"A hub's full detail","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/a-hubs-full-detail"},{"title":"Delete a hub","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/delete-a-hub"},{"title":"Update a hub's name, websites, or notes","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/update-a-hubs-name-websites-or-notes"},{"title":"Re-crawl one of the hub's websites","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/refresh","href":"/api-reference/knowledge-hubs/re-crawl-one-of-the-hubs-websites"},{"title":"The hub's knowledge pages","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}/pages","href":"/api-reference/knowledge-hubs/the-hubs-knowledge-pages"},{"title":"Add a custom knowledge page","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/pages","href":"/api-reference/knowledge-hubs/add-a-custom-knowledge-page"},{"title":"Remove a knowledge page","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}/pages/{pageId}","href":"/api-reference/knowledge-hubs/remove-a-knowledge-page"},{"title":"Edit a page's title or content","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/{hubId}/pages/{pageId}","href":"/api-reference/knowledge-hubs/edit-a-pages-title-or-content"},{"title":"Rebuild a page from the hub's sources","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/pages/{pageId}/regenerate","href":"/api-reference/knowledge-hubs/rebuild-a-page-from-the-hubs-sources"},{"title":"Attach a document to one of the hub's notes","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/attachments","href":"/api-reference/knowledge-hubs/attach-a-document-to-one-of-the-hubs-notes"},{"title":"A download URL for a note's attachment","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}/attachments/{noteId}","href":"/api-reference/knowledge-hubs/a-download-url-for-a-notes-attachment"},{"title":"Remove a note's attachment","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}/attachments/{noteId}","href":"/api-reference/knowledge-hubs/remove-a-notes-attachment"}]},{"group":"Analytics","pages":[{"title":"Campaigns analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/campaigns","href":"/api-reference/analytics/campaigns-analytics-roll-up"},{"title":"Dialer analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/dialer","href":"/api-reference/analytics/dialer-analytics-roll-up"},{"title":"Enrichment analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/enrichment","href":"/api-reference/analytics/enrichment-analytics-roll-up"},{"title":"Website intent analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/website-intent","href":"/api-reference/analytics/website-intent-analytics-roll-up"},{"title":"Agents analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/agents","href":"/api-reference/analytics/agents-analytics-roll-up"}]},{"group":"Website intent","pages":[{"title":"The deanonymized visitor feed","deprecated":null,"version":null,"openapi":"/openapi.json get /business/website-visitors","href":"/api-reference/website-intent/the-deanonymized-visitor-feed"},{"title":"Tracking config: domains, pages, script, credit limit","deprecated":null,"version":null,"openapi":"/openapi.json get /business/website-tracking","href":"/api-reference/website-intent/tracking-config:-domains-pages-script-credit-limit"},{"title":"Update tracked domains/pages or the monthly credit limit","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/website-tracking","href":"/api-reference/website-intent/update-tracked-domainspages-or-the-monthly-credit-limit"}]},{"group":"Account","pages":[{"title":"Connected sending accounts by channel","deprecated":null,"version":null,"openapi":"/openapi.json get /business/accounts","href":"/api-reference/account/connected-sending-accounts-by-channel"},{"title":"Teammates (id, name, email)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/team/members","href":"/api-reference/account/teammates-id-name-email"},{"title":"The writing styles AI campaigns accept","deprecated":null,"version":null,"openapi":"/openapi.json get /business/writing-styles","href":"/api-reference/account/the-writing-styles-ai-campaigns-accept"},{"title":"Which CRMs the team has connected","deprecated":null,"version":null,"openapi":"/openapi.json get /business/integrations","href":"/api-reference/account/which-crms-the-team-has-connected"},{"title":"Poll any async job","deprecated":null,"version":null,"openapi":"/openapi.json get /business/jobs/{jobId}","href":"/api-reference/account/poll-any-async-job"},{"title":"The credit spend ledger","deprecated":null,"version":null,"openapi":"/openapi.json post /business/credits/usage","href":"/api-reference/account/the-credit-spend-ledger"},{"title":"Get the token owner's identity","deprecated":null,"version":null,"openapi":"/openapi.json get /business/me","href":"/api-reference/account/get-the-token-owners-identity"},{"title":"Get the token owner's credit balance","deprecated":null,"version":null,"openapi":"/openapi.json get /business/credits","href":"/api-reference/account/get-the-token-owners-credit-balance"}]},{"group":"Data","pages":[{"title":"Get your key's usage plan","deprecated":null,"version":null,"openapi":"/openapi.json get /business/data/pricing","href":"/api-reference/data/get-your-keys-usage-plan"},{"title":"Count people matching a search (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/count","href":"/api-reference/data/count-people-matching-a-search-free"},{"title":"Count companies matching a search (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/companies/count","href":"/api-reference/data/count-companies-matching-a-search-free"},{"title":"Find a company's domain, LinkedIn page and logo (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/companies/resolve","href":"/api-reference/data/find-a-companys-domain-linkedin-page-and-logo-free"},{"title":"Find a person's email","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/email","href":"/api-reference/data/find-a-persons-email"},{"title":"Find a person's phone","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/phone","href":"/api-reference/data/find-a-persons-phone"},{"title":"Verify an email address","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/emails/verify","href":"/api-reference/data/verify-an-email-address"},{"title":"Find emails and phones for up to 100 people","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/enrich-jobs","href":"/api-reference/data/find-emails-and-phones-for-up-to-100-people"},{"title":"Get a people enrichment job's progress and rows","deprecated":null,"version":null,"openapi":"/openapi.json get /business/data/people/enrich-jobs/{jobId}","href":"/api-reference/data/get-a-people-enrichment-jobs-progress-and-rows"}]},{"group":"Prospect search","pages":[{"title":"Get the accepted prospect-search filter values","deprecated":null,"version":null,"openapi":"/openapi.json get /business/prospects/filter-options","href":"/api-reference/prospect-search/get-the-accepted-prospect-search-filter-values"},{"title":"Suggest values for a free-text search field","deprecated":null,"version":null,"openapi":"/openapi.json get /business/prospects/autocomplete","href":"/api-reference/prospect-search/suggest-values-for-a-free-text-search-field"},{"title":"Run a people search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/prospects/search","href":"/api-reference/prospect-search/run-a-people-search"},{"title":"Save people-search results into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/prospects/search/save-to-list","href":"/api-reference/prospect-search/save-people-search-results-into-a-list"}]},{"group":"Scheduled sends","pages":[{"title":"The campaign's send queue by status","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/scheduled-sends","href":"/api-reference/scheduled-sends/the-campaigns-send-queue-by-status"},{"title":"Edit a queued send's copy or time before it goes out","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/scheduled-sends/{sendId}","href":"/api-reference/scheduled-sends/edit-a-queued-sends-copy-or-time-before-it-goes-out"},{"title":"Skip one queued send","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/{sendId}/skip","href":"/api-reference/scheduled-sends/skip-one-queued-send"},{"title":"Approve queued sends awaiting review","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/approve","href":"/api-reference/scheduled-sends/approve-queued-sends-awaiting-review"},{"title":"Decline queued sends awaiting review","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/decline","href":"/api-reference/scheduled-sends/decline-queued-sends-awaiting-review"}]},{"group":"Campaign templates","pages":[{"title":"The workspace's saved campaign templates","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaign-templates","href":"/api-reference/campaign-templates/the-workspaces-saved-campaign-templates"},{"title":"Save a campaign's sequence as a reusable template","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaign-templates","href":"/api-reference/campaign-templates/save-a-campaigns-sequence-as-a-reusable-template"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaign-templates/{campaignTemplateId}","href":"/api-reference/campaign-templates/delete-a-template"}]},{"group":"Agents","pages":[{"title":"The agent kinds the wizard offers","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/signal-types","href":"/api-reference/agents/the-agent-kinds-the-wizard-offers"},{"title":"The token owner's agents across every kind","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents","href":"/api-reference/agents/the-token-owners-agents-across-every-kind"},{"title":"Create a web monitor agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/web-monitor","href":"/api-reference/agents/create-a-web-monitor-agent"},{"title":"Create a person starting new job agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/person-starting-new-job","href":"/api-reference/agents/create-a-person-starting-new-job-agent"},{"title":"Create a linkedin posts agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-posts","href":"/api-reference/agents/create-a-linkedin-posts-agent"},{"title":"Create a person discovery via filters agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/person-discovery-via-filters","href":"/api-reference/agents/create-a-person-discovery-via-filters-agent"},{"title":"Create a job postings agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-postings","href":"/api-reference/agents/create-a-job-postings-agent"},{"title":"Create a job posting in location agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-posting-in-location","href":"/api-reference/agents/create-a-job-posting-in-location-agent"},{"title":"Create a first person hired in company department agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/first-person-hired-in-company-department","href":"/api-reference/agents/create-a-first-person-hired-in-company-department-agent"},{"title":"Create a first person hired internationally agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/first-person-hired-internationally","href":"/api-reference/agents/create-a-first-person-hired-internationally-agent"},{"title":"Create a company headcount growth agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-headcount-growth","href":"/api-reference/agents/create-a-company-headcount-growth-agent"},{"title":"Create a company headcount growth over baseline agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-headcount-growth-over-baseline","href":"/api-reference/agents/create-a-company-headcount-growth-over-baseline-agent"},{"title":"Create a company department headcount agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-department-headcount","href":"/api-reference/agents/create-a-company-department-headcount-agent"},{"title":"Create a company employee job location in two countries agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-employee-job-location-in-two-countries","href":"/api-reference/agents/create-a-company-employee-job-location-in-two-countries-agent"},{"title":"Create a funding announcements agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/funding-announcements","href":"/api-reference/agents/create-a-funding-announcements-agent"},{"title":"Create a people watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/people-watcher","href":"/api-reference/agents/create-a-people-watcher-agent"},{"title":"Create a companies watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/companies-watcher","href":"/api-reference/agents/create-a-companies-watcher-agent"},{"title":"Create a job changes watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-changes-watcher","href":"/api-reference/agents/create-a-job-changes-watcher-agent"},{"title":"Create a linkedin profile agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-profile","href":"/api-reference/agents/create-a-linkedin-profile-agent"},{"title":"Create a linkedin post agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-post","href":"/api-reference/agents/create-a-linkedin-post-agent"},{"title":"Canonical values for agent config filters","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/autocomplete","href":"/api-reference/agents/canonical-values-for-agent-config-filters"},{"title":"An agent's config as the drawer shows it","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/{agentId}","href":"/api-reference/agents/an-agents-config-as-the-drawer-shows-it"},{"title":"Delete an agent (409 while a run is processing)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/agents/{agentId}","href":"/api-reference/agents/delete-an-agent-409-while-a-run-is-processing"},{"title":"Update a draft agent's config (partial)","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/agents/{agentId}","href":"/api-reference/agents/update-a-draft-agents-config-partial"},{"title":"Start a draft agent (spends credits)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/activate","href":"/api-reference/agents/start-a-draft-agent-spends-credits"},{"title":"Pause an agent (one-way, there is no resume)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/stop","href":"/api-reference/agents/pause-an-agent-one-way-there-is-no-resume"},{"title":"Copy an agent as a fresh draft","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/duplicate","href":"/api-reference/agents/copy-an-agent-as-a-fresh-draft"}]},{"group":"Research","pages":[{"title":"The research providers a run can use","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/providers","href":"/api-reference/research/the-research-providers-a-run-can-use"},{"title":"Research runs currently in flight","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs","href":"/api-reference/research/research-runs-currently-in-flight"},{"title":"Start a Deep Research run","deprecated":null,"version":null,"openapi":"/openapi.json post /business/research/runs","href":"/api-reference/research/start-a-deep-research-run"},{"title":"A research run's state, report, and result list","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs/{runId}","href":"/api-reference/research/a-research-runs-state-report-and-result-list"},{"title":"A research run's progress events","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs/{runId}/events","href":"/api-reference/research/a-research-runs-progress-events"},{"title":"Cancel an in-flight research run","deprecated":null,"version":null,"openapi":"/openapi.json post /business/research/runs/{runId}/cancel","href":"/api-reference/research/cancel-an-in-flight-research-run"}]},{"group":"Company search","pages":[{"title":"Get the accepted company-search filter values","deprecated":null,"version":null,"openapi":"/openapi.json get /business/companies/filter-options","href":"/api-reference/company-search/get-the-accepted-company-search-filter-values"},{"title":"Suggest values for company and location filters","deprecated":null,"version":null,"openapi":"/openapi.json get /business/companies/autocomplete","href":"/api-reference/company-search/suggest-values-for-company-and-location-filters"},{"title":"Run a company search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/companies/search","href":"/api-reference/company-search/run-a-company-search"},{"title":"Save company-search results into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/companies/search/save-to-list","href":"/api-reference/company-search/save-company-search-results-into-a-list"}]},{"group":"Saved searches","pages":[{"title":"List the token owner's saved searches","deprecated":null,"version":null,"openapi":"/openapi.json get /business/saved-searches","href":"/api-reference/saved-searches/list-the-token-owners-saved-searches"},{"title":"Create a saved search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/saved-searches","href":"/api-reference/saved-searches/create-a-saved-search"},{"title":"Get one saved search","deprecated":null,"version":null,"openapi":"/openapi.json get /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/get-one-saved-search"},{"title":"Delete a saved search","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/delete-a-saved-search"},{"title":"Rename a saved search or replace its filters","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/rename-a-saved-search-or-replace-its-filters"},{"title":"Replay a saved search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/saved-searches/{savedSearchId}/run","href":"/api-reference/saved-searches/replay-a-saved-search"}]},{"group":"Folders","pages":[{"title":"List the token owner's list folders of one kind","deprecated":null,"version":null,"openapi":"/openapi.json get /business/folders","href":"/api-reference/folders/list-the-token-owners-list-folders-of-one-kind"},{"title":"Create a list folder","deprecated":null,"version":null,"openapi":"/openapi.json post /business/folders","href":"/api-reference/folders/create-a-list-folder"},{"title":"Delete a folder (its lists move to the root)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/folders/{folderId}","href":"/api-reference/folders/delete-a-folder-its-lists-move-to-the-root"},{"title":"Rename a folder","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/folders/{folderId}","href":"/api-reference/folders/rename-a-folder"}]},{"group":"Contacts","pages":[{"title":"Resolve the caller's contact by LinkedIn URL","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/resolve","href":"/api-reference/contacts/resolve-the-callers-contact-by-linkedin-url"},{"title":"Set a contact's primary email and/or phone","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/contacts/{contactId}","href":"/api-reference/contacts/set-a-contacts-primary-email-andor-phone"},{"title":"A contact's activity timeline","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/{contactId}/activities","href":"/api-reference/contacts/a-contacts-activity-timeline"},{"title":"Start an async duplicate-contact scan (returns a jobId)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/dedupe-scan","href":"/api-reference/contacts/start-an-async-duplicate-contact-scan-returns-a-jobid"},{"title":"Merge the duplicate groups a completed scan found","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/dedupe-merge","href":"/api-reference/contacts/merge-the-duplicate-groups-a-completed-scan-found"},{"title":"Poll a dedupe scan or merge job (groups / totals when completed)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/dedupe-jobs/{jobId}","href":"/api-reference/contacts/poll-a-dedupe-scan-or-merge-job-groups-totals-when-completed"}]}]}]},"basePath":"","title":"Commit an import into a list - Fuse API","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}