Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (status is processing in this response), and you poll GET /contact-lists/{id} until import.status is ready or failed. While it runs, the list reports uploading. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send merge_tags (see that parameter).
Optional idempotency key: a unique string of 16-200 printable ASCII characters (a UUID is recommended). Retrying the write with the same key within 24 hours returns the stored response of the first call with an X-Idempotent-Replayed: true response header instead of executing it again. Reusing a key with a different request body returns 422 (IDEMPOTENCY_MISMATCH); a duplicate sent while the first call is still running returns 409 with a Retry-After header. Keys are scoped per endpoint and organization.
Target organization for the import. Defaults to the organization that owns the API key. Send it to target a sub-organization under an agency-tier parent; the API key is always limited to its own organization tree (otherwise the request returns 403 ORG_ACCESS_DENIED).
Optional. When provided, the list is scoped to this brand and the brand's organization is used, so a brand in an accessible sub-organization works without organization_id. A brand that does not belong to an organization your API key can access returns 404 BRAND_NOT_FOUND. If both are sent and the brand belongs to a different accessible organization than organization_id, the request returns 400 BRAND_ORG_MISMATCH.
Maps CSV columns to contact merge fields. Unknown keys are rejected with a 400. When omitted, or when it maps nothing, every non-phone column gets a merge tag automatically: a header that matches a standard field (first name, last name, address, address line 2, city, state, zip, including common aliases) gets the standard tag, and any other column gets a tag named after its header in lowercase with underscores (for example Donor Tier becomes {donor_tier}). When supplied, it is used exactly as sent and unlisted columns get no tag.
Show child attributes
Response
Import accepted and running as a background job. Poll GET /contact-lists/{id} until import.status is ready or failed.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Political Comms","description":"Documentation for the Political Comms P2P texting platform - help center, onboarding, compliance, and API reference.","colors":{"primary":"#1E3A8A","light":"#3B82F6","dark":"#1E3A8A"},"logo":{"light":"https://mintcdn.com/politicalcomms/EWPdkQOGp2k4Npo5/logo/main.png?fit=max\u0026auto=format\u0026n=EWPdkQOGp2k4Npo5\u0026q=85\u0026s=694b5108d71882d5774bc62c478bc370","dark":"https://mintcdn.com/politicalcomms/EWPdkQOGp2k4Npo5/logo/main.png?fit=max\u0026auto=format\u0026n=EWPdkQOGp2k4Npo5\u0026q=85\u0026s=694b5108d71882d5774bc62c478bc370","href":"/"},"favicon":"https://mintcdn.com/politicalcomms/EWPdkQOGp2k4Npo5/favicon.png?fit=max\u0026auto=format\u0026n=EWPdkQOGp2k4Npo5\u0026q=85\u0026s=63a87e09739757db232880f7adfda947","navbar":{"links":[{"href":"mailto:support@politicalcomms.com","label":"Support"}],"primary":{"type":"button","label":"Sign in","href":"https://app.politicalcomms.com"}},"footer":{"socials":{"website":"https://politicalcomms.com"},"links":[{"header":"Product","items":[{"label":"Dashboard","href":"https://app.politicalcomms.com"},{"label":"Pricing","href":"https://politicalcomms.com/pricing"},{"label":"Status","href":"https://status.politicalcomms.com"}]},{"header":"Resources","items":[{"label":"Help Center","href":"/help/getting-started"},{"label":"Onboarding","href":"/onboarding/overview"},{"label":"Compliance","href":"/compliance/overview"},{"label":"API Reference","href":"/api-reference/introduction"}]},{"header":"Legal","items":[{"label":"Terms of Use","href":"/legal/terms"},{"label":"Privacy Policy","href":"/legal/privacy"}]}]},"seo":{"metatags":{"og:site_name":"Political Comms Docs","og:type":"website","og:locale":"en_US","og:image":"https://politicalcomms.com/opengraph-image","og:image:width":"1200","og:image:height":"630","og:image:alt":"Political Comms. The direct-to-carrier political texting platform.","twitter:card":"summary_large_image","twitter:image":"https://politicalcomms.com/opengraph-image","twitter:image:alt":"Political Comms. The direct-to-carrier political texting platform.","robots":"index, follow, max-image-preview:large, max-snippet:-1","author":"Political Comms","publisher":"Political Comms","application-name":"Political Comms Docs","apple-mobile-web-app-title":"Political Comms Docs","theme-color":"#254692","msapplication-TileColor":"#254692","category":"Political Technology, Communications Infrastructure","keywords":"political texting, political SMS, P2P messaging, 10DLC registration, Campaign Verify, TCPA compliance, FCC political rules, MCP server, AI agent integration"},"indexing":"all"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"arrow-up-right-from-square","href":"https://app.politicalcomms.com"},{"anchor":"Status","icon":"signal","href":"https://status.politicalcomms.com"},{"anchor":"Changelog","icon":"clock-rotate-left","href":"/changelog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"politicalcomms","hasAudioNarration":false,"actualSubdomain":"politicalcomms","customDomains":["docs.politicalcomms.com"],"gitSource":{"type":"github","owner":"political-comms","repo":"political-comms-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af0be2da69b8556d5adbc29","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API Reference","count":69},{"language":"default","tag":"Endpoints","count":56},{"language":"default","tag":"Documentation","count":40},{"language":"default","tag":"Email","count":22},{"language":"default","tag":"Text","count":19},{"language":"default","tag":"Assets","count":15},{"language":"default","tag":"Help Center","count":13},{"language":"default","tag":"Projects","count":13},{"language":"default","tag":"Get Started","count":8},{"language":"default","tag":"Compliance","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/contact-lists/import-contact-list","slug":"/api-reference/contact-lists/import-contact-list","pageMetadata":{"title":"Import Contact List","description":"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (`status` is `processing` in this response), and you poll `GET /contact-lists/{id}` until `import.status` is `ready` or `failed`. While it runs, the list reports `uploading`. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send `merge_tags` (see that parameter).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /contact-lists/import","href":"/api-reference/contact-lists/import-contact-list","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {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(_components.p, {\n children: [\"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (\", _jsx(_components.code, {\n children: \"status\"\n }), \" is \", _jsx(_components.code, {\n children: \"processing\"\n }), \" in this response), and you poll \", _jsx(_components.code, {\n children: \"GET /contact-lists/{id}\"\n }), \" until \", _jsx(_components.code, {\n children: \"import.status\"\n }), \" is \", _jsx(_components.code, {\n children: \"ready\"\n }), \" or \", _jsx(_components.code, {\n children: \"failed\"\n }), \". While it runs, the list reports \", _jsx(_components.code, {\n children: \"uploading\"\n }), \". An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send \", _jsx(_components.code, {\n children: \"merge_tags\"\n }), \" (see that parameter).\"]\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":"Import Contact List","description":"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (`status` is `processing` in this response), and you poll `GET /contact-lists/{id}` until `import.status` is `ready` or `failed`. While it runs, the list reports `uploading`. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send `merge_tags` (see that parameter).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /contact-lists/import","href":"/api-reference/contact-lists/import-contact-list","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Contact Lists"],"summary":"Import Contact List","description":"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (`status` is `processing` in this response), and you poll `GET /contact-lists/{id}` until `import.status` is `ready` or `failed`. While it runs, the list reports `uploading`. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send `merge_tags` (see that parameter).","operationId":"importContactList","requestBody":"49453dee-f924-4e7d-b5ae-1ae0d78ed358","responses":{"202":"ce72152a-e756-4afc-802e-9dfc2bc68efd","400":"3dae160e-1ab1-4836-9150-423e6b97b27a","401":"6628200a-b24e-4deb-82bb-886aba685dc3","403":"1fa3f70a-eb53-48a3-85e0-035d841b7050","429":"fa07c270-85ea-4391-b78d-2723543498f3","500":"b5203f02-75fc-480d-8058-7243ebcdfd59"},"parameters":["ca9211e4-3810-43cc-971c-4f2c14fa1418"],"method":"post","type":"path","servers":["c65a3aeb-11c6-4066-95a4-d7340a28b01c"],"security":["568a13c8-a3cb-4bd8-9eea-41a0f02a6634"],"path":"/contact-lists/import","baseUrlOptions":["https://api.politicalcomms.com/v1"],"title":"Import Contact List","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ca9211e4-3810-43cc-971c-4f2c14fa1418":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":16,"maxLength":200,"isRequired":false,"description":"Optional idempotency key: a unique string of 16-200 printable ASCII characters (a UUID is recommended). Retrying the write with the same key within 24 hours returns the stored response of the first call with an `X-Idempotent-Replayed: true` response header instead of executing it again. Reusing a key with a different request body returns `422` (`IDEMPOTENCY_MISMATCH`); a duplicate sent while the first call is still running returns `409` with a `Retry-After` header. Keys are scoped per endpoint and organization.","uniqueKey":"","typeLabel":"string"},"description":"Optional idempotency key: a unique string of 16-200 printable ASCII characters (a UUID is recommended). Retrying the write with the same key within 24 hours returns the stored response of the first call with an `X-Idempotent-Replayed: true` response header instead of executing it again. Reusing a key with a different request body returns `422` (`IDEMPOTENCY_MISMATCH`); a duplicate sent while the first call is still running returns `409` with a `Retry-After` header. Keys are scoped per endpoint and organization."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["source_url","list_name","phone_column"],"properties":{"source_url":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"source_url","typeLabel":"string\u003curi>"},"list_name":{"type":"string","isRequired":true,"uniqueKey":"list_name","typeLabel":"string"},"phone_column":{"type":"string","isRequired":true,"uniqueKey":"phone_column","typeLabel":"string"},"organization_id":{"type":"string","description":"Target organization for the import. Defaults to the organization that owns the API key. Send it to target a sub-organization under an agency-tier parent; the API key is always limited to its own organization tree (otherwise the request returns 403 ORG_ACCESS_DENIED).","uniqueKey":"organization_id","typeLabel":"string"},"brand_id":{"type":"string","description":"Optional. When provided, the list is scoped to this brand and the brand's organization is used, so a brand in an accessible sub-organization works without `organization_id`. A brand that does not belong to an organization your API key can access returns 404 BRAND_NOT_FOUND. If both are sent and the brand belongs to a different accessible organization than `organization_id`, the request returns 400 BRAND_ORG_MISMATCH.","uniqueKey":"brand_id","typeLabel":"string"},"merge_tags":{"type":"object","properties":{"first_name":{"type":"string","minLength":1,"uniqueKey":"merge_tags.first_name","typeLabel":"string"},"last_name":{"type":"string","minLength":1,"uniqueKey":"merge_tags.last_name","typeLabel":"string"},"address":{"type":"string","minLength":1,"uniqueKey":"merge_tags.address","typeLabel":"string"},"address_line_2":{"type":"string","minLength":1,"uniqueKey":"merge_tags.address_line_2","typeLabel":"string"},"city":{"type":"string","minLength":1,"uniqueKey":"merge_tags.city","typeLabel":"string"},"state":{"type":"string","minLength":1,"uniqueKey":"merge_tags.state","typeLabel":"string"},"zip":{"type":"string","minLength":1,"uniqueKey":"merge_tags.zip","typeLabel":"string"},"custom_fields":{"type":"array","items":{"type":"object","properties":{"csv_column":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"merge_tags.custom_fields.items.[INDEX].csv_column","typeLabel":"string"},"merge_tag":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"merge_tags.custom_fields.items.[INDEX].merge_tag","typeLabel":"string"}},"required":["csv_column","merge_tag"],"additionalProperties":true,"uniqueKey":"merge_tags.custom_fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"merge_tags.custom_fields","typeLabel":"object[]"}},"description":"Maps CSV columns to contact merge fields. Unknown keys are rejected with a 400. When omitted, or when it maps nothing, every non-phone column gets a merge tag automatically: a header that matches a standard field (first name, last name, address, address line 2, city, state, zip, including common aliases) gets the standard tag, and any other column gets a tag named after its header in lowercase with underscores (for example `Donor Tier` becomes `{donor_tier}`). When supplied, it is used exactly as sent and unlisted columns get no tag.","additionalProperties":false,"uniqueKey":"merge_tags","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"source_url":"https://example.com/path/to/list.csv","organization_id":"01HX0000000000000000000000","brand_id":"01HX0000000000000000000001","list_name":"Spring Outreach List","phone_column":"phone","merge_tags":{"first_name":"first_name","last_name":"last_name","address":"street","address_line_2":"street2","city":"city","state":"state","zip":"zip","custom_fields":[{"csv_column":"donor_tier","merge_tag":"tier"}]}},"examples":{"Example":{"title":"Example","value":{"source_url":"https://example.com/path/to/list.csv","organization_id":"01HX0000000000000000000000","brand_id":"01HX0000000000000000000001","list_name":"Spring Outreach List","phone_column":"phone","merge_tags":{"first_name":"first_name","last_name":"last_name","address":"street","address_line_2":"street2","city":"city","state":"state","zip":"zip","custom_fields":[{"csv_column":"donor_tier","merge_tag":"tier"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"ce72152a-e756-4afc-802e-9dfc2bc68efd":{"description":"Import accepted and running as a background job. Poll GET /contact-lists/{id} until `import.status` is `ready` or `failed`.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"type":"object","properties":{"list_id":{"type":"string","uniqueKey":"data.list_id","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.name","typeLabel":"string"},"status":{"type":"string","enum":["processing"],"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"total_rows":{"oneOf":[{"type":"integer","uniqueKey":"data.total_rows.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.total_rows.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.total_rows","typeLabel":"integer | null"},"imported_via_api":{"type":"boolean","uniqueKey":"data.imported_via_api","typeLabel":"boolean"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["success","data"],"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"example":{"success":true,"data":{"list_id":"3f7a9c1e-8b24-4d6f-a2e5-9c7b3f1a8d42","name":"Spring Outreach List","status":"processing","total_rows":12500,"imported_via_api":true}},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"list_id":"3f7a9c1e-8b24-4d6f-a2e5-9c7b3f1a8d42","name":"Spring Outreach List","status":"processing","total_rows":12500,"imported_via_api":true}}}},"exampleType":"examples"}},"exampleType":"examples"},"3dae160e-1ab1-4836-9150-423e6b97b27a":{"description":"Invalid request (validation failure, malformed parameters, or a request the resource state does not allow).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, e.g. VALIDATION_ERROR, ORG_ACCESS_DENIED, PROJECT_NOT_FOUND.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID; include it in support requests.","uniqueKey":"correlationId","typeLabel":"string"},"details":{"oneOf":[{"type":"array","description":"Present on some errors. For VALIDATION_ERROR, an array of { field, message, code } with one entry per rejected field (field is the dotted path); an object for other codes (e.g. insufficient-balance shortfall).","uniqueKey":"details.oneOf.0","typeLabel":"array"},{"type":"object","description":"Present on some errors. For VALIDATION_ERROR, an array of { field, message, code } with one entry per rejected field (field is the dotted path); an object for other codes (e.g. insufficient-balance shortfall).","uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"array | object"}},"required":["error","code"],"additionalProperties":true,"description":"Standard error body produced by the API error handler for 4xx/5xx responses.","uniqueKey":"","typeLabel":"object"},"example":{"error":"Validation failed","code":"VALIDATION_ERROR","correlationId":"030bf857-922f-4b82-8fca-c5b0769c1590","details":[{"field":"organization_id","message":"Invalid UUID","code":"invalid_format"}]},"examples":{"Example":{"title":"Example","value":{"error":"Validation failed","code":"VALIDATION_ERROR","correlationId":"030bf857-922f-4b82-8fca-c5b0769c1590","details":[{"field":"organization_id","message":"Invalid UUID","code":"invalid_format"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"6628200a-b24e-4deb-82bb-886aba685dc3":{"description":"Missing, malformed, revoked, or expired API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Short error summary.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","description":"Human-readable detail.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["error","message"],"additionalProperties":true,"description":"Error body returned by the API-key authentication layer (401 and permission 403s).","uniqueKey":"","typeLabel":"object"},"example":{"error":"API key required","message":"Please provide an API key in the X-API-Key header"},"examples":{"Example":{"title":"Example","value":{"error":"API key required","message":"Please provide an API key in the X-API-Key header"}}},"exampleType":"examples"}},"exampleType":"examples"},"1fa3f70a-eb53-48a3-85e0-035d841b7050":{"description":"The API key lacks the required permission scope, or the requested resource belongs to an organization outside the key's hierarchy.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Error body returned by the API-key authentication layer (401 and permission 403s).","required":["error","message"],"properties":{"error":{"type":"string","description":"Short error summary.","isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"string"},"message":{"type":"string","description":"Human-readable detail.","isRequired":true,"uniqueKey":"oneOf.0.message","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Standard error body produced by the API error handler for 4xx/5xx responses.","required":["error","code"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, e.g. VALIDATION_ERROR, ORG_ACCESS_DENIED, PROJECT_NOT_FOUND.","isRequired":true,"uniqueKey":"oneOf.1.code","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID; include it in support requests.","uniqueKey":"oneOf.1.correlationId","typeLabel":"string"},"details":{"oneOf":[{"type":"array","description":"Present on some errors. For VALIDATION_ERROR, an array of { field, message, code } with one entry per rejected field (field is the dotted path); an object for other codes (e.g. insufficient-balance shortfall).","uniqueKey":"oneOf.1.details.oneOf.0","typeLabel":"array"},{"type":"object","description":"Present on some errors. For VALIDATION_ERROR, an array of { field, message, code } with one entry per rejected field (field is the dotted path); an object for other codes (e.g. insufficient-balance shortfall).","uniqueKey":"oneOf.1.details.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.1.details","typeLabel":"array | object"}},"additionalProperties":true,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"missingScope":{"title":"missingScope","value":{"error":"Insufficient permissions","message":"This API key does not have the required permissions: public:read"}},"orgAccessDenied":{"title":"orgAccessDenied","value":{"error":"Access denied: You do not have permission to access this organization's data","code":"ORG_ACCESS_DENIED","correlationId":"de038205-7c9c-4d4a-99bc-d7275a52f07e"}}},"exampleType":"examples"}},"exampleType":"examples"},"fa07c270-85ea-4391-b78d-2723543498f3":{"description":"Rate limit exceeded. Check the Retry-After header.","headers":{"Retry-After":{"description":"Seconds until the window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["RATE_LIMIT_EXCEEDED"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"statusCode":{"type":"integer","enum":[429],"isRequired":true,"uniqueKey":"statusCode","typeLabel":"enum\u003cinteger>"},"retryAfter":{"type":"integer","description":"Seconds until the rate-limit window resets. Also sent as the Retry-After header.","isRequired":true,"uniqueKey":"retryAfter","typeLabel":"integer"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"required":["success","error","code","statusCode","retryAfter"],"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"example":{"success":false,"error":"Rate limit exceeded","message":"Maximum 600 requests per 60 seconds","code":"RATE_LIMIT_EXCEEDED","statusCode":429,"retryAfter":3},"examples":{"Example":{"title":"Example","value":{"success":false,"error":"Rate limit exceeded","message":"Maximum 600 requests per 60 seconds","code":"RATE_LIMIT_EXCEEDED","statusCode":429,"retryAfter":3}}},"exampleType":"examples"}},"exampleType":"examples"},"b5203f02-75fc-480d-8058-7243ebcdfd59":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, e.g. VALIDATION_ERROR, ORG_ACCESS_DENIED, PROJECT_NOT_FOUND.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID; include it in support requests.","uniqueKey":"correlationId","typeLabel":"string"},"details":{"oneOf":[{"type":"array","description":"Present on some errors. For VALIDATION_ERROR, an array of { field, message, code } with one entry per rejected field (field is the dotted path); an object for other codes (e.g. insufficient-balance shortfall).","uniqueKey":"details.oneOf.0","typeLabel":"array"},{"type":"object","description":"Present on some errors. For VALIDATION_ERROR, an array of { field, message, code } with one entry per rejected field (field is the dotted path); an object for other codes (e.g. insufficient-balance shortfall).","uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"array | object"}},"required":["error","code"],"additionalProperties":true,"description":"Standard error body produced by the API error handler for 4xx/5xx responses.","uniqueKey":"","typeLabel":"object"},"example":{"error":"An unexpected error occurred. Please try again later.","code":"INTERNAL_ERROR","correlationId":"de038205-7c9c-4d4a-99bc-d7275a52f07e"},"examples":{"Example":{"title":"Example","value":{"error":"An unexpected error occurred. Please try again later.","code":"INTERNAL_ERROR","correlationId":"de038205-7c9c-4d4a-99bc-d7275a52f07e"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"568a13c8-a3cb-4bd8-9eea-41a0f02a6634":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Authenticate every request by passing your API key in the X-API-Key header. Keys are scoped to your organization hierarchy.","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"c65a3aeb-11c6-4066-95a4-d7340a28b01c":{"url":"https://api.politicalcomms.com/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Authenticate every request by passing your API key in the X-API-Key header. Keys are scoped to your organization hierarchy.","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Authenticate every request by passing your API key in the X-API-Key header. Keys are scoped to your organization hierarchy.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"politicalcomms","siteName":"Political Comms","title":"Import Contact List - Political Comms","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T21:08:59.450Z","originalFileLocation":"api-reference/contact-lists/import-contact-list.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (status is processing in this response), and you poll GET /contact-lists/{id} until import.status is ready or failed. While it runs, the list reports uploading. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send merge_tags (see that parameter).\">\u003cmeta data-mint-head name=\"keywords\" content=\"political texting, political SMS, P2P messaging, 10DLC registration, Campaign Verify, TCPA compliance, FCC political rules, MCP server, AI agent integration\">\u003cmeta data-mint-head name=\"application-name\" content=\"Political Comms\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_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/politicalcomms/3u6PEpheVhjd9O_C/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Import Contact List - Political Comms\">\u003cmeta data-mint-head property=\"og:description\" content=\"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (status is processing in this response), and you poll GET /contact-lists/{id} until import.status is ready or failed. While it runs, the list reports uploading. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send merge_tags (see that parameter).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Political Comms Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://politicalcomms.com/opengraph-image\">\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=\"Import Contact List - Political Comms\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (status is processing in this response), and you poll GET /contact-lists/{id} until import.status is ready or failed. While it runs, the list reports uploading. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send merge_tags (see that parameter).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://politicalcomms.com/opengraph-image\">\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/politicalcomms/3u6PEpheVhjd9O_C/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Political Comms Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#254692\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Political Comms. The direct-to-carrier political texting platform.\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"Political Comms. The direct-to-carrier political texting platform.\">\u003cmeta data-mint-head name=\"author\" content=\"Political Comms\">\u003cmeta data-mint-head name=\"publisher\" content=\"Political Comms\">\u003cmeta data-mint-head name=\"application-name\" content=\"Political Comms Docs\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#254692\">\u003cmeta data-mint-head name=\"category\" content=\"Political Technology, Communications Infrastructure\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/contact-lists/import-contact-list.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.politicalcomms.com/#organization\",\"name\":\"Political Comms\",\"url\":\"https://docs.politicalcomms.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/politicalcomms/EWPdkQOGp2k4Npo5/logo/main.png?fit=max\u0026auto=format\u0026n=EWPdkQOGp2k4Npo5\u0026q=85\u0026s=694b5108d71882d5774bc62c478bc370\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.politicalcomms.com#website\",\"name\":\"Political Comms\",\"url\":\"https://docs.politicalcomms.com\",\"publisher\":{\"@id\":\"https://docs.politicalcomms.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list#webpage\",\"url\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list\",\"name\":\"Import Contact List\",\"description\":\"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (status is processing in this response), and you poll GET /contact-lists/{id} until import.status is ready or failed. While it runs, the list reports uploading. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send merge_tags (see that parameter).\",\"dateModified\":\"2026-11-05T21:08:59.450Z\",\"isPartOf\":{\"@id\":\"https://docs.politicalcomms.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.politicalcomms.com/api-reference/projects/list-projects\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Assets\",\"item\":\"https://docs.politicalcomms.com/api-reference/contact-lists/list-contact-lists\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Contact Lists\",\"item\":\"https://docs.politicalcomms.com/api-reference/contact-lists/list-contact-lists\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Import Contact List\",\"item\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list#apireference\",\"headline\":\"Import Contact List\",\"name\":\"Import Contact List\",\"description\":\"Asynchronous job: import a CSV from a client-supplied presigned storage or public HTTPS URL. The file is fetched by the platform and may be at most 50 MB. The import runs as a background job: this call returns immediately with the created resource (status is processing in this response), and you poll GET /contact-lists/{id} until import.status is ready or failed. While it runs, the list reports uploading. An interrupted import resumes automatically. Columns other than the phone column become merge tags automatically unless you send merge_tags (see that parameter).\",\"url\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list\",\"mainEntityOfPage\":{\"@id\":\"https://docs.politicalcomms.com/api-reference/contact-lists/import-contact-list#webpage\"},\"image\":\"https://politicalcomms.com/opengraph-image\",\"dateModified\":\"2026-11-05T21:08:59.450Z\",\"publisher\":{\"@id\":\"https://docs.politicalcomms.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.politicalcomms.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Political Comms\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Political Comms","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"arrow-up-right-from-square","href":"https://app.politicalcomms.com"},{"anchor":"Status","icon":"signal","href":"https://status.politicalcomms.com"},{"anchor":"Changelog","icon":"clock-rotate-left","href":"/changelog"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Introduction","pages":[{"title":"Introduction","icon":"code","href":"/api-reference/introduction"},{"title":"Authentication","icon":"key","href":"/api-reference/authentication"},{"title":"Rate Limits","icon":"gauge-high","href":"/api-reference/rate-limits"},{"title":"Error Handling","icon":"circle-exclamation","href":"/api-reference/errors"},{"title":"Versioning \u0026 Deprecation","href":"/api-reference/versioning"},{"title":"Best Practices","icon":"stars","href":"/api-reference/best-practices"},{"title":"Two-Way Conversations","icon":"messages","href":"/api-reference/two-way-conversations"}]},{"group":"Webhooks","pages":[{"title":"Overview","icon":"webhook","href":"/api-reference/webhooks/overview"},{"title":"Setup \u0026 Configuration","icon":"plug","href":"/api-reference/webhooks/setup"},{"title":"Signature Validation","icon":"shield-check","href":"/api-reference/webhooks/signature-validation"},{"title":"Event Types","icon":"code","href":"/api-reference/webhooks/events"},{"title":"Delivery Error Codes","icon":"triangle-exclamation","href":"/api-reference/webhooks/error-codes"},{"title":"Retry Policy","icon":"rotate-right","href":"/api-reference/webhooks/retry-policy"}]},{"group":"Endpoints","pages":[{"group":"Text","pages":[{"group":"Projects","pages":[{"title":"List Projects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects","href":"/api-reference/projects/list-projects"},{"title":"Create Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects","href":"/api-reference/projects/create-project"},{"title":"Get Project Stats (all)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/stats","href":"/api-reference/projects/get-project-stats-all"},{"title":"Get Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{id}","href":"/api-reference/projects/get-project"},{"title":"Update Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /projects/{id}","href":"/api-reference/projects/update-project"},{"title":"Get Project Stats (single)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{id}/stats","href":"/api-reference/projects/get-project-stats-single"},{"title":"Get Project Throughput","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{id}/throughput","href":"/api-reference/projects/get-project-throughput"},{"title":"Get Survey Results","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{id}/survey-results","href":"/api-reference/projects/get-survey-results"},{"title":"Test Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{id}/test","href":"/api-reference/projects/test-project"},{"title":"Schedule Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{id}/schedule","href":"/api-reference/projects/schedule-project"},{"title":"Unschedule Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{id}/unschedule","href":"/api-reference/projects/unschedule-project"},{"title":"Pause Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{id}/pause","href":"/api-reference/projects/pause-project"},{"title":"Copy Project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{id}/copy","href":"/api-reference/projects/copy-project"}]},{"group":"Phone Numbers","pages":[{"title":"List Phone Numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /phone-numbers","href":"/api-reference/phone-numbers/list-phone-numbers"}]},{"group":"Toll-Free Verifications","pages":[{"title":"List Toll-Free Verifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /toll-free-verifications","href":"/api-reference/toll-free-verifications/list-toll-free-verifications"},{"title":"Get Toll-Free Verification","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /toll-free-verifications/{id}","href":"/api-reference/toll-free-verifications/get-toll-free-verification"}]},{"group":"Brands","pages":[{"title":"List Brands","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /brands","href":"/api-reference/brands/list-brands"}]},{"group":"10DLC Campaigns","pages":[{"title":"List Campaigns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns","href":"/api-reference/10dlc-campaigns/list-campaigns"},{"title":"Get Campaign Throughput","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/{id}/throughput","href":"/api-reference/10dlc-campaigns/get-campaign-throughput"}]}]},{"group":"Email","pages":[{"group":"Email Campaigns","pages":[{"title":"List Campaigns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/campaigns","href":"/api-reference/email-campaigns/list-campaigns"},{"title":"Create Campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/campaigns","href":"/api-reference/email-campaigns/create-campaign"},{"title":"Get Campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/campaigns/{id}","href":"/api-reference/email-campaigns/get-campaign"},{"title":"Schedule Campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/campaigns/{id}/schedule","href":"/api-reference/email-campaigns/schedule-campaign"},{"title":"Unschedule Campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/campaigns/{id}/unschedule","href":"/api-reference/email-campaigns/unschedule-campaign"},{"title":"Get Campaign Stats","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/campaigns/{id}/stats","href":"/api-reference/email-campaigns/get-campaign-stats"}]},{"group":"Email Templates","pages":[{"title":"List Email Templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/templates","href":"/api-reference/email-templates/list-email-templates"},{"title":"Create Email Template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/templates","href":"/api-reference/email-templates/create-email-template"},{"title":"Get Email Template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/templates/{id}","href":"/api-reference/email-templates/get-email-template"}]},{"group":"Email Senders","pages":[{"title":"List Sender Identities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/senders","href":"/api-reference/email-senders/list-sender-identities"},{"title":"Get Sender Identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/senders/{id}","href":"/api-reference/email-senders/get-sender-identity"}]},{"group":"Email Suppressions","pages":[{"title":"List Suppressions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/suppressions","href":"/api-reference/email-suppressions/list-suppressions"},{"title":"Add Suppressions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/suppressions","href":"/api-reference/email-suppressions/add-suppressions"},{"title":"Remove Suppressions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /email/suppressions","href":"/api-reference/email-suppressions/remove-suppressions"}]}]},{"group":"Assets","pages":[{"group":"Contact Lists","pages":[{"title":"List Contact Lists","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contact-lists","href":"/api-reference/contact-lists/list-contact-lists"},{"title":"Get Contact List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contact-lists/{id}","href":"/api-reference/contact-lists/get-contact-list"},{"title":"Delete Contact List","description":"Permanently remove a contact list from your account. The list is detached from any draft projects that reference it and no longer appears in list or read endpoints. A WinRed or Anedot list's donation feed is disconnected with it. Deletion is blocked with a 409 while a scheduled, sending, or active project depends on the list; unschedule the project or wait for the send to finish, then retry.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /contact-lists/{id}","href":"/api-reference/contact-lists/delete-contact-list"},{"title":"Import Contact List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /contact-lists/import","href":"/api-reference/contact-lists/import-contact-list"},{"title":"Analyze Contact List","description":"Asynchronous, billable job: trigger LRN mobile/landline/VoIP/invalid analysis for an imported list. Charged per lookup to the list's organization for the numbers not yet analyzed; the wallet is checked first, and `402` `INSUFFICIENT_BALANCE` queues nothing. Send an `Idempotency-Key` so a retried call is not charged twice. Returns immediately with `202` and the `cost_cents` and `numbers_queued` for the run. If nothing is left to analyze it returns `200` with `analysis.status` `complete`, `numbers_queued` 0 and `cost_cents` 0. If analysis is already running it returns `202` with `cost_cents` 0 and charges nothing. Poll `GET /contact-lists/{id}` until `analysis.status` is `complete`, or subscribe to the `contact_list.analyzed` webhook, then fetch the results with `GET /contact-lists/{id}/download?type=analyzed`. A project cannot be created, updated with, or scheduled on a list whose analysis is in progress; the request fails with `409` `LIST_ANALYSIS_IN_PROGRESS`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /contact-lists/{id}/analyze","href":"/api-reference/contact-lists/analyze-contact-list"}]},{"group":"Email Lists","pages":[{"title":"List Email Lists","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/lists","href":"/api-reference/email-lists/list-email-lists"},{"title":"Create Email List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/lists","href":"/api-reference/email-lists/create-email-list"},{"title":"Get Email List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/lists/{id}","href":"/api-reference/email-lists/get-email-list"},{"title":"List Contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/lists/{id}/contacts","href":"/api-reference/email-lists/list-contacts"},{"title":"Add Contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/lists/{id}/contacts","href":"/api-reference/email-lists/add-contacts"},{"title":"Import Contacts From A URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /email/lists/import","href":"/api-reference/email-lists/import-contacts-from-a-url"}]},{"group":"Media Files","pages":[{"title":"List Media Files","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /media","href":"/api-reference/media-files/list-media-files"},{"title":"Import Media","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /media","href":"/api-reference/media-files/import-media"},{"title":"Get Media File","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /media/{id}","href":"/api-reference/media-files/get-media-file"},{"title":"Delete Media File","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /media/{id}","href":"/api-reference/media-files/delete-media-file"}]}]},{"group":"Billing \u0026 Usage","pages":[{"group":"Billing","pages":[{"title":"Get Usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ledger/usage","href":"/api-reference/billing/get-usage"},{"title":"Get Usage by Initiator","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ledger/usage/by-initiator","href":"/api-reference/billing/get-usage-by-initiator"}]},{"group":"Analytics","pages":[{"title":"Get Message Stats","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /messages/stats","href":"/api-reference/analytics/get-message-stats"}]}]},{"group":"Admin","pages":[{"group":"Sending Domains","pages":[{"title":"List Sending Domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/domains","href":"/api-reference/sending-domains/list-sending-domains"},{"title":"Get Sending Domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /email/domains/{id}","href":"/api-reference/sending-domains/get-sending-domain"}]},{"group":"Tracking Domains","pages":[{"title":"List Tracking Domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tracking-domains","href":"/api-reference/tracking-domains/list-tracking-domains"}]},{"group":"Organizations","pages":[{"title":"List Organizations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /organizations","href":"/api-reference/organizations/list-organizations"},{"title":"Get Hierarchy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /hierarchy","href":"/api-reference/organizations/get-hierarchy"}]}]}]}]}]},"basePath":"","title":"Import Contact List - Political Comms","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}