Create a contact import session. Two modes, selected by source:
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).
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).
After 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.
Content type of the upcoming upload. Must be one of text/csv, application/csv, application/vnd.ms-excel, or text/plain; anything else is rejected with 400. The presigned URL is bound to this content type — send the same Content-Type header on the PUT.
Required string length: 1 - 255
Response
Import session created. upload mode returns a presigned upload URL; rows mode returns the stored row count.
Seconds until upload_url expires (900 = 15 minutes).
{"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/start-a-contact-import","slug":"/api-reference/contact-imports/start-a-contact-import","pageMetadata":{"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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create a contact import session. Two modes, selected by \", _jsx(_components.code, {\n children: \"source\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"upload\"\n })\n }), \" — returns a presigned S3 \", _jsx(_components.code, {\n children: \"PUT\"\n }), \" URL. Upload the raw CSV bytes to \", _jsx(_components.code, {\n children: \"upload_url\"\n }), \" with the returned \", _jsx(_components.code, {\n children: \"upload_headers\"\n }), \" before the URL expires (\", _jsx(_components.code, {\n children: \"expires_in_seconds\"\n }), \", 15 minutes). Source files up to 350 MB are supported. Only CSV content types are accepted (\", _jsx(_components.code, {\n children: \"text/csv\"\n }), \", \", _jsx(_components.code, {\n children: \"application/csv\"\n }), \", \", _jsx(_components.code, {\n children: \"application/vnd.ms-excel\"\n }), \", \", _jsx(_components.code, {\n children: \"text/plain\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"rows\"\n })\n }), \" — 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; \", _jsx(_components.code, {\n children: \"null\"\n }), \" becomes an empty string. Inline request bodies are limited to 5 MB — larger bodies are rejected with \", _jsx(_components.code, {\n children: \"413\"\n }), \" (this keeps requests below the platform’s 6 MB payload ceiling, so treat ~5 MB as the practical limit and use \", _jsx(_components.code, {\n children: \"upload\"\n }), \" mode for anything bigger).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After creating a session, call \", _jsx(_components.code, {\n children: \"POST /v1/contacts/imports/{sessionId}/preview\"\n }), \" to get proposed column mappings, then \", _jsx(_components.code, {\n children: \"POST /v1/contacts/imports/{sessionId}/execute\"\n }), \" to run the import. Sessions expire after 7 days and can each be executed once.\"]\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Contact Imports"],"operationId":"create-contact-import","summary":"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.","requestBody":"71fddbf9-b855-4fcf-9c7a-f6298260ad30","responses":{"201":"612da6a0-26c9-4449-879b-20e94ad6b82d","400":"47a3c970-dcef-4a90-af04-928e0c6d78bf","401":"d76d834f-e748-4a8d-bea3-51f31f81a574","413":"715956dd-cdd1-4b0a-900b-6f26bb76ba01"},"method":"post","type":"path","servers":["46d863a6-e43f-44d9-961b-cd303cc6f7c0"],"security":["a69c8ab2-91e8-4370-bf83-42244b8a98bb"],"path":"/v1/contacts/imports","baseUrlOptions":["https://api.tented.ai"],"title":"Start a contact import","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Upload mode","required":["source"],"properties":{"source":{"type":"string","enum":["upload"],"description":"Import mode: upload a CSV file via a presigned URL.","isRequired":true,"uniqueKey":"oneOf.0.source","typeLabel":"enum\u003cstring>"},"file_name":{"type":"string","minLength":1,"maxLength":255,"default":"contacts.csv","description":"File name to associate with the import (shown in run details and used to name the results export).","uniqueKey":"oneOf.0.file_name","typeLabel":"string"},"content_type":{"type":"string","minLength":1,"maxLength":255,"default":"text/csv","description":"Content type of the upcoming upload. Must be one of `text/csv`, `application/csv`, `application/vnd.ms-excel`, or `text/plain`; anything else is rejected with `400`. The presigned URL is bound to this content type — send the same `Content-Type` header on the `PUT`.","uniqueKey":"oneOf.0.content_type","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"Upload mode · object"},{"type":"object","title":"Inline rows mode","required":["source","rows"],"properties":{"source":{"type":"string","enum":["rows"],"description":"Import mode: send rows inline as JSON.","isRequired":true,"uniqueKey":"oneOf.1.source","typeLabel":"enum\u003cstring>"},"rows":{"type":"array","items":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","description":"Cell value. Non-string values are stringified; `null` becomes an empty string.","uniqueKey":"oneOf.1.rows.items.[INDEX].additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","description":"Cell value. Non-string values are stringified; `null` becomes an empty string.","uniqueKey":"oneOf.1.rows.items.[INDEX].additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Cell value. Non-string values are stringified; `null` becomes an empty string.","uniqueKey":"oneOf.1.rows.items.[INDEX].additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","description":"Cell value. Non-string values are stringified; `null` becomes an empty string.","uniqueKey":"oneOf.1.rows.items.[INDEX].additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.1.rows.items.[INDEX].additionalProperties","typeLabel":"string | number | boolean | null"},"description":"One row: keys are column headers, values are cell values.","uniqueKey":"oneOf.1.rows.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":1000,"description":"Rows to import (1–1,000). The union of keys across all rows becomes the CSV header row. The total request body must stay under 5 MB.","isRequired":true,"uniqueKey":"oneOf.1.rows","typeLabel":"object[]"},"file_name":{"type":"string","minLength":1,"maxLength":255,"description":"Optional file name to associate with the import. Defaults to `contacts-\u003csessionId>.csv`.","uniqueKey":"oneOf.1.file_name","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"Inline rows mode · object"}],"uniqueKey":"","typeLabel":"Upload mode · object | Inline rows mode · object"},"examples":{"Example":{"title":"Example","value":{"source":"upload","file_name":"contacts.csv","content_type":"text/csv"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"612da6a0-26c9-4449-879b-20e94ad6b82d":{"description":"Import session created. `upload` mode returns a presigned upload URL; `rows` mode returns the stored row count.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Upload session","required":["import_session_id","file_name","upload_url","upload_headers","expires_in_seconds"],"properties":{"import_session_id":{"type":"string","format":"uuid","description":"Import session ID. Use it for the preview and execute calls.","isRequired":true,"uniqueKey":"oneOf.0.import_session_id","typeLabel":"string\u003cuuid>"},"file_name":{"type":"string","description":"File name associated with the import.","isRequired":true,"uniqueKey":"oneOf.0.file_name","typeLabel":"string"},"upload_url":{"type":"string","description":"Presigned S3 `PUT` URL. Upload the raw CSV bytes here (no auth header needed — the URL is self-authorizing).","isRequired":true,"uniqueKey":"oneOf.0.upload_url","typeLabel":"string"},"upload_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.upload_headers.additionalProperties","typeLabel":"string"},"description":"Headers to send with the `PUT` (currently the `Content-Type` the URL was signed for).","isRequired":true,"uniqueKey":"oneOf.0.upload_headers","typeLabel":"object"},"expires_in_seconds":{"type":"integer","description":"Seconds until `upload_url` expires (900 = 15 minutes).","isRequired":true,"uniqueKey":"oneOf.0.expires_in_seconds","typeLabel":"integer"}},"uniqueKey":"oneOf.0","typeLabel":"Upload session · object"},{"type":"object","title":"Rows session","required":["import_session_id","file_name","row_count"],"properties":{"import_session_id":{"type":"string","format":"uuid","description":"Import session ID. Use it for the preview and execute calls.","isRequired":true,"uniqueKey":"oneOf.1.import_session_id","typeLabel":"string\u003cuuid>"},"file_name":{"type":"string","description":"File name associated with the import.","isRequired":true,"uniqueKey":"oneOf.1.file_name","typeLabel":"string"},"row_count":{"type":"integer","description":"Number of rows stored from the request.","isRequired":true,"uniqueKey":"oneOf.1.row_count","typeLabel":"integer"}},"uniqueKey":"oneOf.1","typeLabel":"Rows session · object"}],"uniqueKey":"","typeLabel":"Upload session · object | Rows session · object"},"examples":{"Example":{"title":"Example","value":{"import_session_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","file_name":"\u003cstring>","upload_url":"\u003cstring>","upload_headers":{},"expires_in_seconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"47a3c970-dcef-4a90-af04-928e0c6d78bf":{"description":"Bad request — invalid parameters or request body. Validation failures include `details.issues` with per-field messages. Also returned when `content_type` is not a supported CSV content type (`Only CSV uploads are supported`).","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"},"d76d834f-e748-4a8d-bea3-51f31f81a574":{"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"},"715956dd-cdd1-4b0a-900b-6f26bb76ba01":{"description":"Payload too large — inline `rows` request bodies are limited to 5 MB. Use `source: \"upload\"` for larger imports.","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":"Start a contact import - Tented Help Center","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T16:49:08.251Z","originalFileLocation":"api-reference/contact-imports/start-a-contact-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=\"Create a contact import session. Two modes, selected by source: - 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). - 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\u0026#x27;s 6 MB payload ceiling, so treat ~5 MB as the practical limit and use upload mode for anything bigger). After 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.\">\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=\"Start a contact import - Tented Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a contact import session. Two modes, selected by source: - 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). - 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\u0026#x27;s 6 MB payload ceiling, so treat ~5 MB as the practical limit and use upload mode for anything bigger). After 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.\">\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/start-a-contact-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=Start+a+contact+import\u0026amp;description=Create+a+contact+import+session.+Two+modes%2C+selected+by+%60source%60%3A%0A%0A-+**%60upload%60**+%E2%80%94+returns+a+presigned+S3+%60PUT%60+URL.+Upload+the+raw+CSV+bytes+to+%60upload_url%60+w\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=a1df2783779d0f36b4dc188fee83986d4ffb10c8caaeb08b1083e7aa5e87015d\">\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=\"Start a contact import - Tented Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a contact import session. Two modes, selected by source: - 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). - 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\u0026#x27;s 6 MB payload ceiling, so treat ~5 MB as the practical limit and use upload mode for anything bigger). After 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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tented.mintlify.site/_mintlify/api/og/v2?division=Contact+Imports\u0026amp;title=Start+a+contact+import\u0026amp;description=Create+a+contact+import+session.+Two+modes%2C+selected+by+%60source%60%3A%0A%0A-+**%60upload%60**+%E2%80%94+returns+a+presigned+S3+%60PUT%60+URL.+Upload+the+raw+CSV+bytes+to+%60upload_url%60+w\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=a1df2783779d0f36b4dc188fee83986d4ffb10c8caaeb08b1083e7aa5e87015d\">\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/start-a-contact-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/start-a-contact-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/start-a-contact-import#webpage\",\"url\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import\",\"name\":\"Start a contact import\",\"description\":\"Create a contact import session. Two modes, selected by source: - 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). - 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). After 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.\",\"dateModified\":\"2026-10-23T16:49:08.251Z\",\"isPartOf\":{\"@id\":\"https://docs.tented.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tented Help Center\",\"item\":\"https://docs.tented.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Start a contact import\",\"item\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import#apireference\",\"headline\":\"Start a contact import\",\"name\":\"Start a contact import\",\"description\":\"Create a contact import session. Two modes, selected by source: - 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). - 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). After 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.\",\"url\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tented.ai/api-reference/contact-imports/start-a-contact-import#webpage\"},\"dateModified\":\"2026-10-23T16:49:08.251Z\",\"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/start-a-contact-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)","description":"Alias for `DELETE /v1/email-flows/{flowId}/contacts/{contactId}` that addresses the flow by its campaign ID. Drops the contact’s current run. Returns `204` when the contact was not in the flow.","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","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":"Start a contact 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"]}