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.
Proposed 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.
No 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.
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.
Issues that must be resolved before execution — currently only missing_identity_mapping: no column maps to email or phone, so contacts cannot be identified.
Show child attributes
{"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":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/contact-imports/preview-an-import","slug":"/api-reference/contact-imports/preview-an-import","pageMetadata":{"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","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: [\"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 (\", _jsx(_components.code, {\n children: \"field_creation_candidates\"\n }), \"), a sample of rows, and validation issues found in that sample.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Proposed 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 \", _jsx(_components.code, {\n children: \"reason\"\n }), \" names the column that claimed the field) so it can be offered in \", _jsx(_components.code, {\n children: \"field_creation_candidates\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"No request body. Safe to call repeatedly — for example, after bulk-creating suggested custom fields via \", _jsx(_components.code, {\n children: \"POST /v1/contact-fields\"\n }), \", preview again to see the new fields mapped.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"blocking_issues\"\n }), \" must be resolved before executing: an import needs at least one column mapped to \", _jsx(_components.code, {\n children: \"email\"\n }), \" or \", _jsx(_components.code, {\n children: \"phone\"\n }), \" so contacts can be identified and deduplicated.\"]\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Contact Imports"],"operationId":"preview-contact-import","summary":"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.","parameters":["49079674-8b8f-4081-abec-4d107d39fe2d"],"responses":{"200":"8f680081-4421-43fa-a0dd-f64fabe0e112","400":"579e899d-847e-44c8-af04-0231a59ee044","401":"29149cef-487e-4c1b-a87f-7694214efaa0","404":"1d0bda71-ce6f-4831-bece-76dc8d5b5b42"},"method":"post","type":"path","servers":["46d863a6-e43f-44d9-961b-cd303cc6f7c0"],"security":["a69c8ab2-91e8-4370-bf83-42244b8a98bb"],"path":"/v1/contacts/imports/{sessionId}/preview","baseUrlOptions":["https://api.tented.ai"],"title":"Preview an import","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"49079674-8b8f-4081-abec-4d107d39fe2d":{"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`."}},"responses":{"8f680081-4421-43fa-a0dd-f64fabe0e112":{"description":"Parsed preview with proposed mappings and sample validation issues.","content":{"application/json":{"schema":{"type":"object","properties":{"import_session_id":{"type":"string","format":"uuid","description":"Import session ID.","isRequired":true,"uniqueKey":"import_session_id","typeLabel":"string\u003cuuid>"},"headers":{"type":"array","items":{"type":"string","uniqueKey":"headers.items.[INDEX]","typeLabel":"string"},"description":"Column headers detected in the CSV.","isRequired":true,"uniqueKey":"headers","typeLabel":"string[]"},"proposed_mappings":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","description":"CSV column header this mapping applies to.","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].header","typeLabel":"string"},"target_field":{"oneOf":[{"type":"string","description":"Target field `api_name` (e.g. `email`, `firstName`, or a custom field's `api_name`), `listIds` for list-membership columns, or `null` when the column is unmapped.","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].target_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"Target field `api_name` (e.g. `email`, `firstName`, or a custom field's `api_name`), `listIds` for list-membership columns, or `null` when the column is unmapped.","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].target_field.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].target_field","typeLabel":"string | null"},"target_kind":{"oneOf":[{"type":"string","enum":["standard","custom","membership",null],"description":"Kind of target: `standard` (built-in contact field), `custom` (custom field), `membership` (the column contains contact list IDs to add the contact to), or `null` when unmapped.","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].target_kind.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["standard","custom","membership",null],"description":"Kind of target: `standard` (built-in contact field), `custom` (custom field), `membership` (the column contains contact list IDs to add the contact to), or `null` when unmapped.","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].target_kind.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].target_kind","typeLabel":"enum\u003cstring> | null"},"reason":{"type":"string","description":"Why this mapping was proposed (e.g. exact header match, AI suggestion).","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].reason","typeLabel":"string"},"source":{"type":"string","enum":["deterministic","llm","user"],"description":"How the mapping was produced: `deterministic` header matching, `llm` (AI-assisted), or `user` (previously approved).","isRequired":true,"uniqueKey":"proposed_mappings.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"overwrite_behavior":{"type":"string","enum":["overwrite","skip_if_filled"],"description":"Per-column overwrite behavior when updating an existing contact. Omitted on proposed mappings — set it when executing.","uniqueKey":"proposed_mappings.items.[INDEX].overwrite_behavior","typeLabel":"enum\u003cstring>"}},"required":["header","target_field","target_kind","reason","source"],"description":"A proposed column-to-field mapping from the preview step.","uniqueKey":"proposed_mappings.items.[INDEX]","typeLabel":"object"},"description":"Proposed column-to-field mappings, one per header. Use these as the starting point for the execute call's `mappings`.","isRequired":true,"uniqueKey":"proposed_mappings","typeLabel":"object[]"},"unmapped_headers":{"type":"array","items":{"type":"string","uniqueKey":"unmapped_headers.items.[INDEX]","typeLabel":"string"},"description":"Headers with no proposed target (`target_field: null`).","isRequired":true,"uniqueKey":"unmapped_headers","typeLabel":"string[]"},"available_fields":{"type":"object","properties":{"standard":{"type":"array","items":{"type":"object","properties":{"api_name":{"type":"string","description":"Stable field identifier used as a mapping `target_field` (e.g. `email`, `firstName`, or a custom field's `api_name`).","isRequired":true,"uniqueKey":"available_fields.standard.items.[INDEX].api_name","typeLabel":"string"},"display_name":{"type":"string","description":"Human-readable label.","isRequired":true,"uniqueKey":"available_fields.standard.items.[INDEX].display_name","typeLabel":"string"},"type":{"type":"string","enum":["standard","custom"],"description":"`standard` for built-in contact fields, `custom` for workspace custom fields.","isRequired":true,"uniqueKey":"available_fields.standard.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"value_type":{"type":"string","enum":["string","number","boolean","email","phone","date"],"description":"Value type. Standard fields may use `email`/`phone`; custom fields are `string`, `number`, `boolean`, or `date`.","isRequired":true,"uniqueKey":"available_fields.standard.items.[INDEX].value_type","typeLabel":"enum\u003cstring>"},"is_editable":{"type":"boolean","description":"Whether values can be edited manually in the UI. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].is_editable","typeLabel":"boolean"},"field_definition_id":{"type":"string","format":"uuid","description":"Custom field definition ID. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].field_definition_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["active","archived"],"description":"Field status. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"management_mode":{"type":"string","enum":["org_managed","integration_managed"],"description":"Who owns the field: your workspace or a connected integration. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].management_mode","typeLabel":"enum\u003cstring>"},"provenance_kind":{"type":"string","enum":["manual_ui","import_csv","integration"],"description":"How the field was created. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].provenance_kind","typeLabel":"enum\u003cstring>"},"created_from_import_session_id":{"oneOf":[{"type":"string","description":"Import session the field was created from, when `provenance_kind` is `import_csv`. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].created_from_import_session_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Import session the field was created from, when `provenance_kind` is `import_csv`. Custom fields only.","uniqueKey":"available_fields.standard.items.[INDEX].created_from_import_session_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"available_fields.standard.items.[INDEX].created_from_import_session_id","typeLabel":"string | null"}},"required":["api_name","display_name","type","value_type"],"description":"A field available as an import mapping target. Standard entries include only the first four properties; custom entries include the full definition metadata.","uniqueKey":"available_fields.standard.items.[INDEX]","typeLabel":"object"},"description":"Importable standard contact fields.","isRequired":true,"uniqueKey":"available_fields.standard","typeLabel":"object[]"},"custom":{"type":"array","items":{"type":"object","properties":{"api_name":{"type":"string","description":"Stable field identifier used as a mapping `target_field` (e.g. `email`, `firstName`, or a custom field's `api_name`).","isRequired":true,"uniqueKey":"available_fields.custom.items.[INDEX].api_name","typeLabel":"string"},"display_name":{"type":"string","description":"Human-readable label.","isRequired":true,"uniqueKey":"available_fields.custom.items.[INDEX].display_name","typeLabel":"string"},"type":{"type":"string","enum":["standard","custom"],"description":"`standard` for built-in contact fields, `custom` for workspace custom fields.","isRequired":true,"uniqueKey":"available_fields.custom.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"value_type":{"type":"string","enum":["string","number","boolean","email","phone","date"],"description":"Value type. Standard fields may use `email`/`phone`; custom fields are `string`, `number`, `boolean`, or `date`.","isRequired":true,"uniqueKey":"available_fields.custom.items.[INDEX].value_type","typeLabel":"enum\u003cstring>"},"is_editable":{"type":"boolean","description":"Whether values can be edited manually in the UI. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].is_editable","typeLabel":"boolean"},"field_definition_id":{"type":"string","format":"uuid","description":"Custom field definition ID. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].field_definition_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["active","archived"],"description":"Field status. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"management_mode":{"type":"string","enum":["org_managed","integration_managed"],"description":"Who owns the field: your workspace or a connected integration. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].management_mode","typeLabel":"enum\u003cstring>"},"provenance_kind":{"type":"string","enum":["manual_ui","import_csv","integration"],"description":"How the field was created. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].provenance_kind","typeLabel":"enum\u003cstring>"},"created_from_import_session_id":{"oneOf":[{"type":"string","description":"Import session the field was created from, when `provenance_kind` is `import_csv`. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].created_from_import_session_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Import session the field was created from, when `provenance_kind` is `import_csv`. Custom fields only.","uniqueKey":"available_fields.custom.items.[INDEX].created_from_import_session_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"available_fields.custom.items.[INDEX].created_from_import_session_id","typeLabel":"string | null"}},"required":["api_name","display_name","type","value_type"],"description":"A field available as an import mapping target. Standard entries include only the first four properties; custom entries include the full definition metadata.","uniqueKey":"available_fields.custom.items.[INDEX]","typeLabel":"object"},"description":"Your workspace's active custom fields.","isRequired":true,"uniqueKey":"available_fields.custom","typeLabel":"object[]"}},"required":["standard","custom"],"description":"Catalog of valid mapping targets.","isRequired":true,"uniqueKey":"available_fields","typeLabel":"object"},"field_creation_candidates":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","description":"Unmapped CSV column this candidate would capture.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].header","typeLabel":"string"},"suggested_display_name":{"type":"string","description":"Suggested human-readable label for the new custom field.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].suggested_display_name","typeLabel":"string"},"suggested_api_name":{"type":"string","description":"Suggested `api_name` for the new custom field.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].suggested_api_name","typeLabel":"string"},"suggested_value_type":{"type":"string","enum":["string","number","boolean","date"],"description":"Value type inferred from the column's sample values.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].suggested_value_type","typeLabel":"enum\u003cstring>"},"confidence":{"type":"string","enum":["low","medium","high"],"description":"Confidence in the suggestion.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].confidence","typeLabel":"enum\u003cstring>"},"sample_values":{"type":"array","items":{"type":"string","uniqueKey":"field_creation_candidates.items.[INDEX].sample_values.items.[INDEX]","typeLabel":"string"},"description":"Sample values from the column.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].sample_values","typeLabel":"string[]"},"reason":{"type":"string","description":"Why this column looks like a new custom field.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].reason","typeLabel":"string"},"conflicts":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["archived_existing","duplicate_suggestion"],"description":"`archived_existing`: an archived custom field already uses this name — restore it instead of creating a new one. `duplicate_suggestion`: another candidate in this preview resolves to the same name.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].conflicts.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"resolution":{"type":"string","enum":["restore_existing","resolve_duplicate"],"description":"Suggested resolution.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].conflicts.items.[INDEX].resolution","typeLabel":"enum\u003cstring>"},"existing_field_definition_id":{"type":"string","format":"uuid","description":"ID of the archived field (for `archived_existing`).","uniqueKey":"field_creation_candidates.items.[INDEX].conflicts.items.[INDEX].existing_field_definition_id","typeLabel":"string\u003cuuid>"},"existing_field_display_name":{"type":"string","description":"Display name of the archived field (for `archived_existing`).","uniqueKey":"field_creation_candidates.items.[INDEX].conflicts.items.[INDEX].existing_field_display_name","typeLabel":"string"},"conflict_key":{"type":"string","description":"Shared key that groups duplicate suggestions (for `duplicate_suggestion`).","uniqueKey":"field_creation_candidates.items.[INDEX].conflicts.items.[INDEX].conflict_key","typeLabel":"string"}},"required":["kind","resolution"],"description":"Conflict blocking automatic creation.","uniqueKey":"field_creation_candidates.items.[INDEX].conflicts.items.[INDEX]","typeLabel":"object"},"description":"Empty when the candidate is ready to create as-is. Multiple conflicts can apply to the same candidate.","isRequired":true,"uniqueKey":"field_creation_candidates.items.[INDEX].conflicts","typeLabel":"object[]"}},"required":["header","suggested_display_name","suggested_api_name","suggested_value_type","confidence","sample_values","reason","conflicts"],"description":"A suggested new custom field for an unmapped column. Create accepted candidates via `POST /v1/contact-fields`, then pass their IDs to execute as `created_field_definition_ids`.","uniqueKey":"field_creation_candidates.items.[INDEX]","typeLabel":"object"},"description":"Suggested new custom fields for unmapped columns.","isRequired":true,"uniqueKey":"field_creation_candidates","typeLabel":"object[]"},"sample_rows":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"sample_rows.items.[INDEX].additionalProperties","typeLabel":"string"},"description":"One row: header → cell value (always strings).","uniqueKey":"sample_rows.items.[INDEX]","typeLabel":"object"},"description":"A sample of the file's first data rows.","isRequired":true,"uniqueKey":"sample_rows","typeLabel":"object[]"},"sample_issues":{"type":"array","items":{"type":"object","properties":{"row_number":{"type":"integer","description":"1-based CSV line number, counting the header row as line 1 (the first data row is 2).","isRequired":true,"uniqueKey":"sample_issues.items.[INDEX].row_number","typeLabel":"integer"},"header":{"type":"string","description":"CSV column header the issue occurred in.","isRequired":true,"uniqueKey":"sample_issues.items.[INDEX].header","typeLabel":"string"},"target_field":{"type":"string","description":"Target field `api_name` the column maps to.","isRequired":true,"uniqueKey":"sample_issues.items.[INDEX].target_field","typeLabel":"string"},"code":{"type":"string","enum":["invalid_email","invalid_phone","invalid_boolean","invalid_number","invalid_date","invalid_value_too_long","invalid_list_id","unknown_list_id","dynamic_list_not_supported","system_list_not_writable","missing_identity_mapping"],"description":"Machine-readable issue code.","isRequired":true,"uniqueKey":"sample_issues.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"sample_issues.items.[INDEX].message","typeLabel":"string"},"value":{"type":"string","description":"The offending cell value.","isRequired":true,"uniqueKey":"sample_issues.items.[INDEX].value","typeLabel":"string"}},"required":["row_number","header","target_field","code","message","value"],"description":"A field-level validation issue for one cell of the import.","uniqueKey":"sample_issues.items.[INDEX]","typeLabel":"object"},"description":"Validation issues found in the sample rows under the proposed mappings — a preview of the problems the full import would hit.","isRequired":true,"uniqueKey":"sample_issues","typeLabel":"object[]"},"blocking_issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["missing_identity_mapping"],"description":"Blocking issue code.","isRequired":true,"uniqueKey":"blocking_issues.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"blocking_issues.items.[INDEX].message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"blocking_issues.items.[INDEX]","typeLabel":"object"},"description":"Issues that must be resolved before execution — currently only `missing_identity_mapping`: no column maps to `email` or `phone`, so contacts cannot be identified.","isRequired":true,"uniqueKey":"blocking_issues","typeLabel":"object[]"}},"required":["import_session_id","headers","proposed_mappings","unmapped_headers","available_fields","field_creation_candidates","sample_rows","sample_issues","blocking_issues"],"description":"Preview of an import: detected headers, proposed mappings, available target fields, new-field suggestions, and sample validation issues.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"import_session_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","headers":["\u003cstring>"],"proposed_mappings":[{"header":"\u003cstring>","target_field":"\u003cstring>","target_kind":"standard","reason":"\u003cstring>","source":"deterministic","overwrite_behavior":"overwrite"}],"unmapped_headers":["\u003cstring>"],"available_fields":{"standard":[{"api_name":"\u003cstring>","display_name":"\u003cstring>","type":"standard","value_type":"string","is_editable":true,"field_definition_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","status":"active","management_mode":"org_managed","provenance_kind":"manual_ui","created_from_import_session_id":"\u003cstring>"}],"custom":[{"api_name":"\u003cstring>","display_name":"\u003cstring>","type":"standard","value_type":"string","is_editable":true,"field_definition_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","status":"active","management_mode":"org_managed","provenance_kind":"manual_ui","created_from_import_session_id":"\u003cstring>"}]},"field_creation_candidates":[{"header":"\u003cstring>","suggested_display_name":"\u003cstring>","suggested_api_name":"\u003cstring>","suggested_value_type":"string","confidence":"low","sample_values":["\u003cstring>"],"reason":"\u003cstring>","conflicts":[{"kind":"archived_existing","resolution":"restore_existing","existing_field_definition_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","existing_field_display_name":"\u003cstring>","conflict_key":"\u003cstring>"}]}],"sample_rows":[{}],"sample_issues":[{"row_number":123,"header":"\u003cstring>","target_field":"\u003cstring>","code":"invalid_email","message":"\u003cstring>","value":"\u003cstring>"}],"blocking_issues":[{"code":"missing_identity_mapping","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"579e899d-847e-44c8-af04-0231a59ee044":{"description":"Bad request — the source file is unavailable (e.g. the presigned upload was never completed) or exceeds the 350 MB size limit.","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"},"29149cef-487e-4c1b-a87f-7694214efaa0":{"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"},"1d0bda71-ce6f-4831-bece-76dc8d5b5b42":{"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":"Preview an import - Tented Help Center","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T16:49:08.260Z","originalFileLocation":"api-reference/contact-imports/preview-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=\"Parse the session\u0026#x27;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. Proposed 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. No 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. 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.\">\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=\"Preview an import - Tented Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Parse the session\u0026#x27;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. Proposed 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. No 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. 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.\">\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/preview-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=Preview+an+import\u0026amp;description=Parse+the+session%27s+CSV+and+return+everything+needed+to+build+the+mapping+step%3A+the+detected+column+headers%2C+proposed+column-to-field+mappings+%28deterministic+he\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=50988806eee6c96f3b8336e32696f2431096e6d6a8e288d934c9f4671956d24b\">\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=\"Preview an import - Tented Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Parse the session\u0026#x27;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. Proposed 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. No 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. 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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tented.mintlify.site/_mintlify/api/og/v2?division=Contact+Imports\u0026amp;title=Preview+an+import\u0026amp;description=Parse+the+session%27s+CSV+and+return+everything+needed+to+build+the+mapping+step%3A+the+detected+column+headers%2C+proposed+column-to-field+mappings+%28deterministic+he\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=50988806eee6c96f3b8336e32696f2431096e6d6a8e288d934c9f4671956d24b\">\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/preview-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/preview-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/preview-an-import#webpage\",\"url\":\"https://docs.tented.ai/api-reference/contact-imports/preview-an-import\",\"name\":\"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. Proposed 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. No 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. 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.\",\"dateModified\":\"2026-10-23T16:49:08.260Z\",\"isPartOf\":{\"@id\":\"https://docs.tented.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/preview-an-import#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/preview-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\":\"Preview an import\",\"item\":\"https://docs.tented.ai/api-reference/contact-imports/preview-an-import\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/preview-an-import#apireference\",\"headline\":\"Preview an import\",\"name\":\"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. Proposed 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. No 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. 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.\",\"url\":\"https://docs.tented.ai/api-reference/contact-imports/preview-an-import\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/preview-an-import#webpage\"},\"dateModified\":\"2026-10-23T16:49:08.260Z\",\"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/preview-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","description":"Create a contact import session. Two modes, selected by `source`:\n\n- **`upload`** — returns a presigned S3 `PUT` URL. Upload the raw CSV bytes to `upload_url` with the returned `upload_headers` before the URL expires (`expires_in_seconds`, 15 minutes). Source files up to 350 MB are supported. Only CSV content types are accepted (`text/csv`, `application/csv`, `application/vnd.ms-excel`, `text/plain`).\n- **`rows`** — send rows inline as JSON objects (1–1,000 rows). Keys are column headers; the union of keys across all rows becomes the CSV header row. Values are stringified; `null` becomes an empty string. Inline request bodies are limited to 5 MB — larger bodies are rejected with `413` (this keeps requests below the platform's 6 MB payload ceiling, so treat ~5 MB as the practical limit and use `upload` mode for anything bigger).\n\nAfter creating a session, call `POST /v1/contacts/imports/{sessionId}/preview` to get proposed column mappings, then `POST /v1/contacts/imports/{sessionId}/execute` to run the import. Sessions expire after 7 days and can each be executed once.","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","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","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"},{"title":"Get an import run","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":"Preview 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"]}