Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns 202 with an import_run_id; poll GET /v1/contacts/imports/{importRunId} until status is completed or failed.
Every mapping’s header must be a column from the session’s CSV. Map a column to null (target_field: null, target_kind: null) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns 400. At least one column must map to the email or phone standard field — contacts are matched (deduplicated) by normalized email or phone.
Each session can be executed once: re-executing a session whose latest run is queued, running, or completed returns 400. A session whose only runs failed can be executed again.
What to do when a row matches an existing contact (by normalized email or phone): update merges the mapped values into the existing contact; skip leaves the existing contact untouched and counts the row as skipped.
When true, imported values only fill fields that are currently empty on the matched contact (the default overwrite_behavior for every mapping becomes skip_if_filled). Per-mapping overwrite_behavior overrides this default.
IDs of custom fields you bulk-created for this import (from the preview's field_creation_candidates). Each ID must reference a field created via POST /v1/contact-fields against this same import session — unrelated fields are rejected with 400.
Response
Import accepted and queued. Poll GET /v1/contacts/imports/{importRunId} for progress.
Correlation ID of the queued background job (useful when contacting support).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tented Help Center","colors":{"primary":"#5A855B","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/logo/tented-logo-dark-text.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=524f92cf5a25aeddb0118ecf3d7d8175","dark":"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/logo/tented-logo-white-text.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=73fbcea2001239f6ad22a00acbaaa41e"},"favicon":"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/favicon.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=fcdbfd50c6458d9fe901a1b92e3a0ac1","navbar":{"links":[{"href":"mailto:support@tented.ai","label":"Support"}],"primary":{"type":"button","label":"Go to Tented","href":"https://app.tented.ai"}},"footer":{"socials":{"x":"https://x.com/tentedhq","linkedin":"https://www.linkedin.com/company/tented-ai"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tented","hasAudioNarration":false,"actualSubdomain":"tented","customDomains":["docs.tented.ai"],"gitSource":{"type":"github","owner":"tentedapp","repo":"tented-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6aebb61fbb7351feda32271b","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":141},{"language":"default","tag":"Guides","count":54},{"language":"default","tag":"API Docs","count":25},{"language":"default","tag":"Tents","count":23},{"language":"default","tag":"Email Templates","count":21},{"language":"default","tag":"Emails","count":21},{"language":"default","tag":"Triggered Flows","count":21},{"language":"default","tag":"Tent Templates","count":17},{"language":"default","tag":"Working with Tents","count":16},{"language":"default","tag":"Email Blasts","count":14}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/contact-imports/execute-an-import","slug":"/api-reference/contact-imports/execute-an-import","pageMetadata":{"title":"Execute an import","description":"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns `202` with an `import_run_id`; poll `GET /v1/contacts/imports/{importRunId}` until `status` is `completed` or `failed`.\n\nEvery mapping's `header` must be a column from the session's CSV. Map a column to `null` (`target_field: null`, `target_kind: null`) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns `400`. At least one column must map to the `email` or `phone` standard field — contacts are matched (deduplicated) by normalized email or phone.\n\nEach session can be executed once: re-executing a session whose latest run is `queued`, `running`, or `completed` returns `400`. A session whose only runs `failed` can be executed again.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports/{sessionId}/execute","href":"/api-reference/contact-imports/execute-an-import","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 p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns \", _jsx(_components.code, {\n children: \"202\"\n }), \" with an \", _jsx(_components.code, {\n children: \"import_run_id\"\n }), \"; poll \", _jsx(_components.code, {\n children: \"GET /v1/contacts/imports/{importRunId}\"\n }), \" until \", _jsx(_components.code, {\n children: \"status\"\n }), \" is \", _jsx(_components.code, {\n children: \"completed\"\n }), \" or \", _jsx(_components.code, {\n children: \"failed\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Every mapping’s \", _jsx(_components.code, {\n children: \"header\"\n }), \" must be a column from the session’s CSV. Map a column to \", _jsx(_components.code, {\n children: \"null\"\n }), \" (\", _jsx(_components.code, {\n children: \"target_field: null\"\n }), \", \", _jsx(_components.code, {\n children: \"target_kind: null\"\n }), \") to skip it. Each field can be the target of only one column; mapping two columns to the same field returns \", _jsx(_components.code, {\n children: \"400\"\n }), \". At least one column must map to the \", _jsx(_components.code, {\n children: \"email\"\n }), \" or \", _jsx(_components.code, {\n children: \"phone\"\n }), \" standard field — contacts are matched (deduplicated) by normalized email or phone.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Each session can be executed once: re-executing a session whose latest run is \", _jsx(_components.code, {\n children: \"queued\"\n }), \", \", _jsx(_components.code, {\n children: \"running\"\n }), \", or \", _jsx(_components.code, {\n children: \"completed\"\n }), \" returns \", _jsx(_components.code, {\n children: \"400\"\n }), \". A session whose only runs \", _jsx(_components.code, {\n children: \"failed\"\n }), \" can be executed again.\"]\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":"Execute an import","description":"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns `202` with an `import_run_id`; poll `GET /v1/contacts/imports/{importRunId}` until `status` is `completed` or `failed`.\n\nEvery mapping's `header` must be a column from the session's CSV. Map a column to `null` (`target_field: null`, `target_kind: null`) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns `400`. At least one column must map to the `email` or `phone` standard field — contacts are matched (deduplicated) by normalized email or phone.\n\nEach session can be executed once: re-executing a session whose latest run is `queued`, `running`, or `completed` returns `400`. A session whose only runs `failed` can be executed again.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports/{sessionId}/execute","href":"/api-reference/contact-imports/execute-an-import","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Contact Imports"],"operationId":"execute-contact-import","summary":"Execute an import","description":"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns `202` with an `import_run_id`; poll `GET /v1/contacts/imports/{importRunId}` until `status` is `completed` or `failed`.\n\nEvery mapping's `header` must be a column from the session's CSV. Map a column to `null` (`target_field: null`, `target_kind: null`) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns `400`. At least one column must map to the `email` or `phone` standard field — contacts are matched (deduplicated) by normalized email or phone.\n\nEach session can be executed once: re-executing a session whose latest run is `queued`, `running`, or `completed` returns `400`. A session whose only runs `failed` can be executed again.","parameters":["ce03dafd-7fb3-4f9b-9110-e39217b22e82"],"requestBody":"e8e9a6f0-70c2-490d-9b6d-614cb03fb53f","responses":{"202":"c97cb103-d4f3-4a1b-a170-c6e89911fd01","400":"8d3daa64-b6cc-4509-9afc-a5221b2c8c2b","401":"0d17a197-4668-47df-be0e-2a37f5783328","404":"995890d5-1df9-4a7c-8387-e17380569585"},"method":"post","type":"path","servers":["46d863a6-e43f-44d9-961b-cd303cc6f7c0"],"security":["a69c8ab2-91e8-4370-bf83-42244b8a98bb"],"path":"/v1/contacts/imports/{sessionId}/execute","baseUrlOptions":["https://api.tented.ai"],"title":"Execute an import","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ce03dafd-7fb3-4f9b-9110-e39217b22e82":{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"Import session ID from `POST /v1/contacts/imports`.","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"Import session ID from `POST /v1/contacts/imports`."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mappings":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","minLength":1,"description":"CSV column header. Must be one of the session's detected headers.","isRequired":true,"uniqueKey":"mappings.items.[INDEX].header","typeLabel":"string"},"target_field":{"oneOf":[{"type":"string","description":"Target field `api_name` (standard or custom) or `listIds` for a membership column. Set to `null` to skip this column.","isRequired":true,"uniqueKey":"mappings.items.[INDEX].target_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"Target field `api_name` (standard or custom) or `listIds` for a membership column. Set to `null` to skip this column.","isRequired":true,"uniqueKey":"mappings.items.[INDEX].target_field.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"mappings.items.[INDEX].target_field","typeLabel":"string | null"},"target_kind":{"oneOf":[{"type":"string","enum":["standard","custom","membership",null],"description":"Kind of target: `standard`, `custom`, or `membership`. Set to `null` to skip this column.","isRequired":true,"uniqueKey":"mappings.items.[INDEX].target_kind.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["standard","custom","membership",null],"description":"Kind of target: `standard`, `custom`, or `membership`. Set to `null` to skip this column.","isRequired":true,"uniqueKey":"mappings.items.[INDEX].target_kind.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"mappings.items.[INDEX].target_kind","typeLabel":"enum\u003cstring> | null"},"overwrite_behavior":{"type":"string","enum":["overwrite","skip_if_filled"],"description":"When updating an existing contact: `overwrite` replaces the current value; `skip_if_filled` only writes if the field is currently empty. Defaults to `overwrite`, or to `skip_if_filled` when `overwrite_blank_only` is `true`.","uniqueKey":"mappings.items.[INDEX].overwrite_behavior","typeLabel":"enum\u003cstring>"}},"required":["header","target_field","target_kind"],"description":"An approved column-to-field mapping.","uniqueKey":"mappings.items.[INDEX]","typeLabel":"object"},"minItems":1,"description":"Approved column mappings. Start from the preview's `proposed_mappings` and adjust as needed.","isRequired":true,"uniqueKey":"mappings","typeLabel":"object[]"},"duplicate_strategy":{"type":"string","enum":["update","skip"],"default":"update","description":"What to do when a row matches an existing contact (by normalized email or phone): `update` merges the mapped values into the existing contact; `skip` leaves the existing contact untouched and counts the row as skipped.","uniqueKey":"duplicate_strategy","typeLabel":"enum\u003cstring>"},"overwrite_blank_only":{"type":"boolean","default":false,"description":"When `true`, imported values only fill fields that are currently empty on the matched contact (the default `overwrite_behavior` for every mapping becomes `skip_if_filled`). Per-mapping `overwrite_behavior` overrides this default.","uniqueKey":"overwrite_blank_only","typeLabel":"boolean"},"list_ids":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"list_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":500,"description":"Static contact list IDs every imported contact is added to (max 500).","uniqueKey":"list_ids","typeLabel":"string\u003cuuid>[]"},"created_field_definition_ids":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"created_field_definition_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"IDs of custom fields you bulk-created for this import (from the preview's `field_creation_candidates`). Each ID must reference a field created via `POST /v1/contact-fields` against this same import session — unrelated fields are rejected with `400`.","uniqueKey":"created_field_definition_ids","typeLabel":"string\u003cuuid>[]"}},"required":["mappings"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"mappings":[{"header":"\u003cstring>","target_field":"\u003cstring>"}],"duplicate_strategy":"update","overwrite_blank_only":false,"list_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"created_field_definition_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"c97cb103-d4f3-4a1b-a170-c6e89911fd01":{"description":"Import accepted and queued. Poll `GET /v1/contacts/imports/{importRunId}` for progress.","content":{"application/json":{"schema":{"type":"object","properties":{"import_run_id":{"type":"string","format":"uuid","description":"ID of the queued import run. Poll `GET /v1/contacts/imports/{importRunId}` with it.","isRequired":true,"uniqueKey":"import_run_id","typeLabel":"string\u003cuuid>"},"import_session_id":{"type":"string","format":"uuid","description":"The import session the run was created from.","isRequired":true,"uniqueKey":"import_session_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["queued"],"description":"Initial run status — always `queued`.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"duplicate_strategy":{"type":"string","enum":["update","skip"],"description":"The duplicate strategy the run will use.","isRequired":true,"uniqueKey":"duplicate_strategy","typeLabel":"enum\u003cstring>"},"list_ids":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"list_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"Static list IDs every imported contact will be added to.","isRequired":true,"uniqueKey":"list_ids","typeLabel":"string\u003cuuid>[]"},"total_rows":{"oneOf":[{"type":"integer","description":"Total data rows to process, or `null` if not yet counted (counted during preprocessing for upload-mode imports).","isRequired":true,"uniqueKey":"total_rows.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Total data rows to process, or `null` if not yet counted (counted during preprocessing for upload-mode imports).","isRequired":true,"uniqueKey":"total_rows.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"total_rows","typeLabel":"integer | null"},"correlation_id":{"type":"string","description":"Correlation ID of the queued background job (useful when contacting support).","isRequired":true,"uniqueKey":"correlation_id","typeLabel":"string"}},"required":["import_run_id","import_session_id","status","duplicate_strategy","list_ids","total_rows","correlation_id"],"description":"Acknowledgement that an import run was queued.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"import_run_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","import_session_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","status":"queued","duplicate_strategy":"update","list_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"total_rows":123,"correlation_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"8d3daa64-b6cc-4509-9afc-a5221b2c8c2b":{"description":"Bad request — invalid mappings, no `email`/`phone` identity column mapped, the session was already executed, a run is already in progress for the session, or `created_field_definition_ids` references fields not created against this session. Validation failures include `details.issues` with per-field messages.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Stable machine-readable error code (present on email, blast, flow, and related endpoints, e.g. `campaign_not_ready`, `generation_in_progress`).","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Additional human-readable context (present on some tent endpoints).","uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable code used by tent creation errors (e.g. `INVALID_PROMPT_INTENT`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Additional error context. Validation errors include `issues`: an array of `{ path, message }` objects.","uniqueKey":"details","typeLabel":"object"},"limit":{"type":"integer","description":"Plan limit that was hit (present on `429` publish-limit errors).","uniqueKey":"limit","typeLabel":"integer"},"current":{"type":"integer","description":"Current usage against the limit (present on `429` publish-limit errors).","uniqueKey":"current","typeLabel":"integer"}},"required":["error"],"description":"Error response. All errors include `error`; the other fields vary by endpoint group.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","error_code":"\u003cstring>","message":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"current":123}}},"exampleType":"generated"}},"exampleType":"generated"},"0d17a197-4668-47df-be0e-2a37f5783328":{"description":"Unauthorized — missing, malformed, revoked, or expired API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Stable machine-readable error code (present on email, blast, flow, and related endpoints, e.g. `campaign_not_ready`, `generation_in_progress`).","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Additional human-readable context (present on some tent endpoints).","uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable code used by tent creation errors (e.g. `INVALID_PROMPT_INTENT`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Additional error context. Validation errors include `issues`: an array of `{ path, message }` objects.","uniqueKey":"details","typeLabel":"object"},"limit":{"type":"integer","description":"Plan limit that was hit (present on `429` publish-limit errors).","uniqueKey":"limit","typeLabel":"integer"},"current":{"type":"integer","description":"Current usage against the limit (present on `429` publish-limit errors).","uniqueKey":"current","typeLabel":"integer"}},"required":["error"],"description":"Error response. All errors include `error`; the other fields vary by endpoint group.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","error_code":"\u003cstring>","message":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"current":123}}},"exampleType":"generated"}},"exampleType":"generated"},"995890d5-1df9-4a7c-8387-e17380569585":{"description":"Not found — the import session does not exist in the workspace tied to your API key, or has expired (sessions are retained for 7 days).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Stable machine-readable error code (present on email, blast, flow, and related endpoints, e.g. `campaign_not_ready`, `generation_in_progress`).","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Additional human-readable context (present on some tent endpoints).","uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable code used by tent creation errors (e.g. `INVALID_PROMPT_INTENT`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Additional error context. Validation errors include `issues`: an array of `{ path, message }` objects.","uniqueKey":"details","typeLabel":"object"},"limit":{"type":"integer","description":"Plan limit that was hit (present on `429` publish-limit errors).","uniqueKey":"limit","typeLabel":"integer"},"current":{"type":"integer","description":"Current usage against the limit (present on `429` publish-limit errors).","uniqueKey":"current","typeLabel":"integer"}},"required":["error"],"description":"Error response. All errors include `error`; the other fields vary by endpoint group.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","error_code":"\u003cstring>","message":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"current":123}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"a69c8ab2-91e8-4370-bf83-42244b8a98bb":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Workspace API key, e.g. `Authorization: Bearer tented_...`. Create keys in Workspace Settings → API Keys.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"46d863a6-e43f-44d9-961b-cd303cc6f7c0":{"url":"https://api.tented.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Workspace API key, e.g. `Authorization: Bearer tented_...`. Create keys in Workspace Settings → API Keys.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Workspace API key, e.g. `Authorization: Bearer tented_...`. Create keys in Workspace Settings → API Keys.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"tented","siteName":"Tented Help Center","title":"Execute an import - Tented Help Center","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T16:49:08.269Z","originalFileLocation":"api-reference/contact-imports/execute-an-import.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=\"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns 202 with an import_run_id; poll GET /v1/contacts/imports/{importRunId} until status is completed or failed. Every mapping\u0026#x27;s header must be a column from the session\u0026#x27;s CSV. Map a column to null (target_field: null, target_kind: null) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns 400. At least one column must map to the email or phone standard field — contacts are matched (deduplicated) by normalized email or phone. Each session can be executed once: re-executing a session whose latest run is queued, running, or completed returns 400. A session whose only runs failed can be executed again.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tented Help Center\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_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/tented/Ot1teMsSMR0FZrqh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Execute an import - Tented Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns 202 with an import_run_id; poll GET /v1/contacts/imports/{importRunId} until status is completed or failed. Every mapping\u0026#x27;s header must be a column from the session\u0026#x27;s CSV. Map a column to null (target_field: null, target_kind: null) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns 400. At least one column must map to the email or phone standard field — contacts are matched (deduplicated) by normalized email or phone. Each session can be executed once: re-executing a session whose latest run is queued, running, or completed returns 400. A session whose only runs failed can be executed again.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tented Help Center\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tented.mintlify.site/_mintlify/api/og/v2?division=Contact+Imports\u0026amp;title=Execute+an+import\u0026amp;description=Approve+the+final+column+mappings+and+start+the+import.+The+import+runs+asynchronously+in+chunks+%E2%80%94+this+endpoint+returns+%60202%60+with+an+%60import_run_id%60%3B+poll+%60GE\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=63efee8574b10855ba70e1529ccf87c37bee70433d1ae86271531cac67d1ae53\">\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=\"Execute an import - Tented Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns 202 with an import_run_id; poll GET /v1/contacts/imports/{importRunId} until status is completed or failed. Every mapping\u0026#x27;s header must be a column from the session\u0026#x27;s CSV. Map a column to null (target_field: null, target_kind: null) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns 400. At least one column must map to the email or phone standard field — contacts are matched (deduplicated) by normalized email or phone. Each session can be executed once: re-executing a session whose latest run is queued, running, or completed returns 400. A session whose only runs failed can be executed again.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tented.mintlify.site/_mintlify/api/og/v2?division=Contact+Imports\u0026amp;title=Execute+an+import\u0026amp;description=Approve+the+final+column+mappings+and+start+the+import.+The+import+runs+asynchronously+in+chunks+%E2%80%94+this+endpoint+returns+%60202%60+with+an+%60import_run_id%60%3B+poll+%60GE\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=63efee8574b10855ba70e1529ccf87c37bee70433d1ae86271531cac67d1ae53\">\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/tented/Ot1teMsSMR0FZrqh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tented Help Center\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5A855B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/contact-imports/execute-an-import.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tented.ai/#organization\",\"name\":\"Tented Help Center\",\"url\":\"https://docs.tented.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/logo/tented-logo-dark-text.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=524f92cf5a25aeddb0118ecf3d7d8175\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tented.ai#website\",\"name\":\"Tented Help Center\",\"url\":\"https://docs.tented.ai\",\"publisher\":{\"@id\":\"https://docs.tented.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import#webpage\",\"url\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import\",\"name\":\"Execute an import\",\"description\":\"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns 202 with an import_run_id; poll GET /v1/contacts/imports/{importRunId} until status is completed or failed. Every mapping's header must be a column from the session's CSV. Map a column to null (target_field: null, target_kind: null) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns 400. At least one column must map to the email or phone standard field — contacts are matched (deduplicated) by normalized email or phone. Each session can be executed once: re-executing a session whose latest run is queued, running, or completed returns 400. A session whose only runs failed can be executed again.\",\"dateModified\":\"2026-10-23T16:49:08.269Z\",\"isPartOf\":{\"@id\":\"https://docs.tented.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Contact Imports\",\"item\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Execute an import\",\"item\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import#apireference\",\"headline\":\"Execute an import\",\"name\":\"Execute an import\",\"description\":\"Approve the final column mappings and start the import. The import runs asynchronously in chunks — this endpoint returns 202 with an import_run_id; poll GET /v1/contacts/imports/{importRunId} until status is completed or failed. Every mapping's header must be a column from the session's CSV. Map a column to null (target_field: null, target_kind: null) to skip it. Each field can be the target of only one column; mapping two columns to the same field returns 400. At least one column must map to the email or phone standard field — contacts are matched (deduplicated) by normalized email or phone. Each session can be executed once: re-executing a session whose latest run is queued, running, or completed returns 400. A session whose only runs failed can be executed again.\",\"url\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/execute-an-import#webpage\"},\"dateModified\":\"2026-10-23T16:49:08.269Z\",\"publisher\":{\"@id\":\"https://docs.tented.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tented.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tented Help Center\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Tented Help Center\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/contact-imports/execute-an-import.md","siteName":"Tented Help Center","nav":{"global":{},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Docs","pages":[{"title":"API Docs","href":"/api-reference/introduction"}]},{"tab":"API Reference","groups":[{"group":"Tents","pages":[{"title":"Create a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents","href":"/api-reference/tents/create-a-tent"},{"title":"Get tent status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tents/{tentId}","href":"/api-reference/tents/get-tent-status"},{"title":"Edit a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/edit","href":"/api-reference/tents/edit-a-tent"},{"title":"List tent assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tents/{tentId}/assets","href":"/api-reference/tents/list-tent-assets"},{"title":"Upload an asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/assets","href":"/api-reference/tents/upload-an-asset"},{"title":"Publish a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/publish","href":"/api-reference/tents/publish-a-tent"},{"title":"Unpublish a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/unpublish","href":"/api-reference/tents/unpublish-a-tent"},{"title":"Delete a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tents/{identifier}","href":"/api-reference/tents/delete-a-tent"},{"title":"Create tents in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/bulk","href":"/api-reference/tents/create-tents-in-bulk"},{"title":"Get bulk job status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/bulk-jobs/{bulkJobId}","href":"/api-reference/tents/get-bulk-job-status"},{"title":"Get a tent asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tents/{tentId}/assets/{assetId}","href":"/api-reference/tents/get-a-tent-asset"},{"title":"Delete a tent asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tents/{tentId}/assets/{assetId}","href":"/api-reference/tents/delete-a-tent-asset"},{"title":"Clone a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/clone","href":"/api-reference/tents/clone-a-tent"}]},{"group":"Analytics","pages":[{"title":"Get tent analytics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/analytics/tent","href":"/api-reference/analytics/get-tent-analytics"},{"title":"Get workspace analytics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/analytics/org","href":"/api-reference/analytics/get-workspace-analytics"}]},{"group":"Contacts","pages":[{"title":"List or look up contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts","href":"/api-reference/contacts/list-or-look-up-contacts"},{"title":"Create contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts","href":"/api-reference/contacts/create-contacts"},{"title":"Delete contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contacts","href":"/api-reference/contacts/delete-contacts"},{"title":"Update contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/update","href":"/api-reference/contacts/update-contacts"},{"title":"Delete contacts (POST)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/delete","href":"/api-reference/contacts/delete-contacts-post"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/{contactId}","href":"/api-reference/contacts/get-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contacts/{contactId}","href":"/api-reference/contacts/delete-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contacts/{contactId}","href":"/api-reference/contacts/update-a-contact"},{"title":"Upsert contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/upsert","href":"/api-reference/contacts/upsert-contacts"},{"title":"Search contacts by rules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/search","href":"/api-reference/contacts/search-contacts-by-rules"},{"title":"List contact activities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/{contactId}/activities","href":"/api-reference/contacts/list-contact-activities"}]},{"group":"Emails","pages":[{"title":"List emails","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails","href":"/api-reference/emails/list-emails"},{"title":"Create an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails","href":"/api-reference/emails/create-an-email"},{"title":"Get an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}","href":"/api-reference/emails/get-an-email"},{"title":"Delete an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/emails/{emailId}","href":"/api-reference/emails/delete-an-email"},{"title":"Update email metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/emails/{emailId}","href":"/api-reference/emails/update-email-metadata"},{"title":"Get email HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/content","href":"/api-reference/emails/get-email-html"},{"title":"Get plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/plain-text","href":"/api-reference/emails/get-plain-text"},{"title":"Override plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/emails/{emailId}/plain-text","href":"/api-reference/emails/override-plain-text"},{"title":"Reset plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/emails/{emailId}/plain-text","href":"/api-reference/emails/reset-plain-text"},{"title":"Iterate with AI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/messages","href":"/api-reference/emails/iterate-with-ai"},{"title":"Save HTML directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/save-code","href":"/api-reference/emails/save-html-directly"},{"title":"Approve an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/approve","href":"/api-reference/emails/approve-an-email"},{"title":"Unapprove an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/unapprove","href":"/api-reference/emails/unapprove-an-email"},{"title":"Get generation status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/generations/{generationId}","href":"/api-reference/emails/get-generation-status"},{"title":"Get generation HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/generations/{generationId}/content","href":"/api-reference/emails/get-generation-html"},{"title":"Get generation plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/generations/{generationId}/plain-text","href":"/api-reference/emails/get-generation-plain-text"},{"title":"List email assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/assets","href":"/api-reference/emails/list-email-assets"},{"title":"Upload an email asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/assets","href":"/api-reference/emails/upload-an-email-asset"},{"title":"Get an email asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/assets/{assetId}","href":"/api-reference/emails/get-an-email-asset"},{"title":"Delete an email asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/emails/{emailId}/assets/{assetId}","href":"/api-reference/emails/delete-an-email-asset"},{"title":"Clone an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/clone","href":"/api-reference/emails/clone-an-email"}]},{"group":"Email Blasts","pages":[{"title":"List blasts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts","href":"/api-reference/email-blasts/list-blasts"},{"title":"Create a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts","href":"/api-reference/email-blasts/create-a-blast"},{"title":"Get a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts/{blastId}","href":"/api-reference/email-blasts/get-a-blast"},{"title":"Delete a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-blasts/{blastId}","href":"/api-reference/email-blasts/delete-a-blast"},{"title":"Rename a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-blasts/{blastId}","href":"/api-reference/email-blasts/rename-a-blast"},{"title":"Set the audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-blasts/{blastId}/audience","href":"/api-reference/email-blasts/set-the-audience"},{"title":"Set the email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-blasts/{blastId}/email","href":"/api-reference/email-blasts/set-the-email"},{"title":"Schedule a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/schedule","href":"/api-reference/email-blasts/schedule-a-blast"},{"title":"Send a blast now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/send-now","href":"/api-reference/email-blasts/send-a-blast-now"},{"title":"Unschedule a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/unschedule","href":"/api-reference/email-blasts/unschedule-a-blast"},{"title":"Archive a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/archive","href":"/api-reference/email-blasts/archive-a-blast"},{"title":"List recipients \u0026 engagement","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts/{blastId}/contacts","href":"/api-reference/email-blasts/list-recipients-\u0026-engagement"},{"title":"Start a CSV export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/contacts/export","href":"/api-reference/email-blasts/start-a-csv-export"},{"title":"Get export status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts/{blastId}/contacts/export/{exportId}","href":"/api-reference/email-blasts/get-export-status"}]},{"group":"Triggered Flows","pages":[{"title":"List flows","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows","href":"/api-reference/triggered-flows/list-flows"},{"title":"Create a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows","href":"/api-reference/triggered-flows/create-a-flow"},{"title":"Get a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows/{flowId}","href":"/api-reference/triggered-flows/get-a-flow"},{"title":"Delete a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-flows/{flowId}","href":"/api-reference/triggered-flows/delete-a-flow"},{"title":"Update a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-flows/{flowId}","href":"/api-reference/triggered-flows/update-a-flow"},{"title":"Replace triggers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-flows/{flowId}/triggers","href":"/api-reference/triggered-flows/replace-triggers"},{"title":"Replace steps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-flows/{flowId}/steps","href":"/api-reference/triggered-flows/replace-steps"},{"title":"Add a step","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/steps","href":"/api-reference/triggered-flows/add-a-step"},{"title":"Delete a step","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-flows/{flowId}/steps/{stepId}","href":"/api-reference/triggered-flows/delete-a-step"},{"title":"Update a step","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-flows/{flowId}/steps/{stepId}","href":"/api-reference/triggered-flows/update-a-step"},{"title":"Set a step’s email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-flows/{flowId}/steps/{stepId}/email","href":"/api-reference/triggered-flows/set-a-step’s-email"},{"title":"Activate a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/activate","href":"/api-reference/triggered-flows/activate-a-flow"},{"title":"Pause a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/pause","href":"/api-reference/triggered-flows/pause-a-flow"},{"title":"Archive a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/archive","href":"/api-reference/triggered-flows/archive-a-flow"},{"title":"Add a contact to a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/contacts/{contactId}","href":"/api-reference/triggered-flows/add-a-contact-to-a-flow"},{"title":"Remove a contact from a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-flows/{flowId}/contacts/{contactId}","href":"/api-reference/triggered-flows/remove-a-contact-from-a-flow"},{"title":"List flow members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows/{flowId}/members","href":"/api-reference/triggered-flows/list-flow-members"},{"title":"Get a member run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows/{flowId}/members/{membershipId}","href":"/api-reference/triggered-flows/get-a-member-run"},{"title":"Trigger a flow for a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/trigger","href":"/api-reference/triggered-flows/trigger-a-flow-for-a-contact"},{"title":"Add a contact to a flow (campaign alias)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-campaigns/{campaignId}/contacts/{contactId}","href":"/api-reference/triggered-flows/add-a-contact-to-a-flow-campaign-alias"},{"title":"Remove a contact from a flow (campaign alias)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-campaigns/{campaignId}/contacts/{contactId}","href":"/api-reference/triggered-flows/remove-a-contact-from-a-flow-campaign-alias"}]},{"group":"Contact Imports","pages":[{"title":"Start a contact import","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports","href":"/api-reference/contact-imports/start-a-contact-import"},{"title":"Preview an import","description":"Parse the session's CSV and return everything needed to build the mapping step: the detected column headers, proposed column-to-field mappings (deterministic header matching plus AI-assisted suggestions), the catalog of available target fields (importable standard fields and your active custom fields), suggested new custom fields for unmapped columns (`field_creation_candidates`), a sample of rows, and validation issues found in that sample.\n\nProposed mappings never send two columns to the same field: a header-name match wins over an AI suggestion, then the earlier column wins, and the other column is left unmapped (its `reason` names the column that claimed the field) so it can be offered in `field_creation_candidates`.\n\nNo request body. Safe to call repeatedly — for example, after bulk-creating suggested custom fields via `POST /v1/contact-fields`, preview again to see the new fields mapped.\n\n`blocking_issues` must be resolved before executing: an import needs at least one column mapped to `email` or `phone` so contacts can be identified and deduplicated.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports/{sessionId}/preview","href":"/api-reference/contact-imports/preview-an-import"},{"title":"Execute an import","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports/{sessionId}/execute","href":"/api-reference/contact-imports/execute-an-import"},{"title":"Get an import run","description":"Fetch the status and progress counters of an import run. Runs move through `queued` → `running` → `completed` or `failed`. Rows are processed in chunks; `processed_rows`, `created_count`, `updated_count`, `skipped_count`, and `error_count` update as chunks complete, so you can poll this endpoint for live progress.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/imports/{importRunId}","href":"/api-reference/contact-imports/get-an-import-run"},{"title":"List per-row results","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/imports/{importRunId}/results","href":"/api-reference/contact-imports/list-per-row-results"},{"title":"Export results as CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/imports/{importRunId}/export","href":"/api-reference/contact-imports/export-results-as-csv"}]},{"group":"Contact Fields","pages":[{"title":"List contact fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-fields","href":"/api-reference/contact-fields/list-contact-fields"},{"title":"Create custom fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-fields","href":"/api-reference/contact-fields/create-custom-fields"},{"title":"Update a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contact-fields/{fieldDefinitionId}","href":"/api-reference/contact-fields/update-a-custom-field"},{"title":"Get rule metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-fields/rule-metadata","href":"/api-reference/contact-fields/get-rule-metadata"}]},{"group":"Contact Lists","pages":[{"title":"List contact lists","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists","href":"/api-reference/contact-lists/list-contact-lists"},{"title":"Create a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-lists","href":"/api-reference/contact-lists/create-a-contact-list"},{"title":"Get a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}","href":"/api-reference/contact-lists/get-a-contact-list"},{"title":"Delete a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contact-lists/{listId}","href":"/api-reference/contact-lists/delete-a-contact-list"},{"title":"Update a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contact-lists/{listId}","href":"/api-reference/contact-lists/update-a-contact-list"},{"title":"List members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}/contacts","href":"/api-reference/contact-lists/list-members"},{"title":"Add members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-lists/{listId}/contacts","href":"/api-reference/contact-lists/add-members"},{"title":"Remove members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contact-lists/{listId}/contacts","href":"/api-reference/contact-lists/remove-members"},{"title":"Get live member counts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}/member-count","href":"/api-reference/contact-lists/get-live-member-counts"},{"title":"Start a CSV export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-lists/{listId}/export","href":"/api-reference/contact-lists/start-a-csv-export"},{"title":"Get export status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}/export/{exportId}","href":"/api-reference/contact-lists/get-export-status"}]},{"group":"Email Templates","pages":[{"title":"List email templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates","href":"/api-reference/email-templates/list-email-templates"},{"title":"Create an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates","href":"/api-reference/email-templates/create-an-email-template"},{"title":"Get an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}","href":"/api-reference/email-templates/get-an-email-template"},{"title":"Delete an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-templates/{templateId}","href":"/api-reference/email-templates/delete-an-email-template"},{"title":"Update template metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-templates/{templateId}","href":"/api-reference/email-templates/update-template-metadata"},{"title":"Get template HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/content","href":"/api-reference/email-templates/get-template-html"},{"title":"Get plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/plain-text","href":"/api-reference/email-templates/get-plain-text"},{"title":"Override plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-templates/{templateId}/plain-text","href":"/api-reference/email-templates/override-plain-text"},{"title":"Reset plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-templates/{templateId}/plain-text","href":"/api-reference/email-templates/reset-plain-text"},{"title":"Iterate with AI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/messages","href":"/api-reference/email-templates/iterate-with-ai"},{"title":"Save HTML directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/save-code","href":"/api-reference/email-templates/save-html-directly"},{"title":"Approve an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/approve","href":"/api-reference/email-templates/approve-an-email-template"},{"title":"Unapprove an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/unapprove","href":"/api-reference/email-templates/unapprove-an-email-template"},{"title":"Get generation status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/generations/{generationId}","href":"/api-reference/email-templates/get-generation-status"},{"title":"Get generation HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/generations/{generationId}/content","href":"/api-reference/email-templates/get-generation-html"},{"title":"Get generation plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/generations/{generationId}/plain-text","href":"/api-reference/email-templates/get-generation-plain-text"},{"title":"List template assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/assets","href":"/api-reference/email-templates/list-template-assets"},{"title":"Upload a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/assets","href":"/api-reference/email-templates/upload-a-template-asset"},{"title":"Get a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/assets/{assetId}","href":"/api-reference/email-templates/get-a-template-asset"},{"title":"Delete a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-templates/{templateId}/assets/{assetId}","href":"/api-reference/email-templates/delete-a-template-asset"},{"title":"Clone an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/clone","href":"/api-reference/email-templates/clone-an-email-template"}]},{"group":"Tent Templates","pages":[{"title":"List tent templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates","href":"/api-reference/tent-templates/list-tent-templates"},{"title":"Create a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates","href":"/api-reference/tent-templates/create-a-tent-template"},{"title":"Create a tent template from a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/from-tent/{tentId}","href":"/api-reference/tent-templates/create-a-tent-template-from-a-tent"},{"title":"Get a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}","href":"/api-reference/tent-templates/get-a-tent-template"},{"title":"Delete a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tent-templates/{templateId}","href":"/api-reference/tent-templates/delete-a-tent-template"},{"title":"Get template HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/content","href":"/api-reference/tent-templates/get-template-html"},{"title":"Iterate with AI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/messages","href":"/api-reference/tent-templates/iterate-with-ai"},{"title":"Save HTML directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/save-code","href":"/api-reference/tent-templates/save-html-directly"},{"title":"Approve a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/approve","href":"/api-reference/tent-templates/approve-a-tent-template"},{"title":"Unapprove a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/unapprove","href":"/api-reference/tent-templates/unapprove-a-tent-template"},{"title":"Clone a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/clone","href":"/api-reference/tent-templates/clone-a-tent-template"},{"title":"Get generation status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/generations/{generationId}","href":"/api-reference/tent-templates/get-generation-status"},{"title":"Get generation HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/generations/{generationId}/content","href":"/api-reference/tent-templates/get-generation-html"},{"title":"List template assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/assets","href":"/api-reference/tent-templates/list-template-assets"},{"title":"Upload a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/assets","href":"/api-reference/tent-templates/upload-a-template-asset"},{"title":"Get a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/assets/{assetId}","href":"/api-reference/tent-templates/get-a-template-asset"},{"title":"Delete a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tent-templates/{templateId}/assets/{assetId}","href":"/api-reference/tent-templates/delete-a-template-asset"}]}]}]},"basePath":"","title":"Execute an import - Tented Help Center","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}