Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.
Tenant API key with the operation's scope: cxm:conversations.read, cxm:conversations.write, cxm:contacts.write, or cxm:organizations.write. Corresponding resource wildcards and broader cxm:read, cxm:write, or cxm:* scopes apply. Keep it in a trusted backend; do not expose it in browser code.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Crescendo CXP Documentation","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/cxp/qzLutHilHYGEIkc7/logo/light.png?fit=max\u0026auto=format\u0026n=qzLutHilHYGEIkc7\u0026q=85\u0026s=b5082c07055ff79d37dc82b1c6db1a7e","dark":"https://mintcdn.com/cxp/qzLutHilHYGEIkc7/logo/dark.png?fit=max\u0026auto=format\u0026n=qzLutHilHYGEIkc7\u0026q=85\u0026s=b5a325a6618a3c137af6e72c952ed497"},"favicon":"https://mintcdn.com/cxp/QVAK8SdzA-wez6wK/favicon.png?fit=max\u0026auto=format\u0026n=QVAK8SdzA-wez6wK\u0026q=85\u0026s=cc300816020149618ec0fbcf1e11742a","navbar":{"links":[{"href":"mailto:support@crescendo.ai","label":"Support"}]},"footer":{"socials":{"linkedin":"https://linkedin.com/company/crescendocx"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Crescendo","icon":"house","href":"https://www.crescendo.ai"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@crescendo.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cxp","hasAudioNarration":false,"actualSubdomain":"cxp","customDomains":["docs.cxp.crescendo.ai"],"gitSource":{"type":"github","owner":"enegelai","repo":"cxm","deployBranch":"main","contentDirectory":"public/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"9c99f9ea-2d11-445a-a110-ead9904cd66e","liveDeploymentHistoryId":"6ae58d1bb1d87e83eee5f742","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae58d1bb1d87e83eee5f742"},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6ae86c54ca78e46845595ef6","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"CXP","count":32},{"language":"default","tag":"Capabilities","count":21},{"language":"default","tag":"Admin guide","count":10},{"language":"default","tag":"Conversations","count":10},{"language":"default","tag":"Developers","count":10},{"language":"default","tag":"Agent guide","count":7},{"language":"default","tag":"Work with external contacts","count":6},{"language":"default","tag":"Scenarios","count":6},{"language":"default","tag":"API reference","count":6},{"language":"default","tag":"Analyze support","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/contacts/create-a-contact","slug":"/api-reference/contacts/create-a-contact","pageMetadata":{"title":"Create a contact","description":"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/contacts","href":"/api-reference/contacts/create-a-contact","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.\"\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":"Create a contact","description":"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/contacts","href":"/api-reference/contacts/create-a-contact","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cxp/20b71f9a0fdf1b75/cxm-docs-password-gate.js"],"openApiReferenceData":{"operation":{"operationId":"createContact","summary":"Create a contact","description":"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.","tags":["Contacts"],"security":["ba598b66-fda8-44a5-b2a6-2e605de7fd1d"],"parameters":["861211dc-f432-4b1c-900e-790ec682c0fd"],"requestBody":"f016ec48-d7eb-43c1-ac72-7b224bad3fcd","responses":{"201":"9101b12c-b1b8-461f-8b92-6acfb8253ad5","400":"344272c7-fa54-4346-a867-bae361740ac8","401":"635162bd-c559-4d16-bf03-500fc29c4e8c","403":"1847f2d5-42fc-4793-a35b-4d64b6b0739a","409":"59de7d50-25ac-4ccb-8421-51543af013ef","413":"ce1547a6-13e8-445e-b24e-60c74fe5c3ba","429":"83b5bb35-26a1-4357-a667-c03605cdbb23","502":"1e2994cd-3542-4a8a-8012-3e9be6e634e8","503":"e69ccd8b-38af-4045-95e7-26a5b75adc6f","504":"fd0023ae-1e8e-4762-bfe9-bdc4d26ac929"},"method":"post","type":"path","servers":["601f0723-e7fb-4b92-a071-ea2f652aad97"],"path":"/api/v1/cxm/tenants/{tenantId}/contacts","baseUrlOptions":["https://platform.crescendo.ai"],"title":"Create a contact","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"861211dc-f432-4b1c-900e-790ec682c0fd":{"name":"tenantId","in":"path","required":true,"description":"Tenant authorized for the API key and every referenced resource.","schema":{"type":"string","minLength":1,"maxLength":255,"isRequired":true,"description":"Tenant authorized for the API key and every referenced resource.","uniqueKey":"","typeLabel":"string"},"example":"tenant_demo"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["contact"],"properties":{"contact":{"oneOf":[{"type":"object","description":"Create-only contact fields. Secondary addresses alone cannot satisfy the required primary email or phone. No organization, custom fields or historical timestamps.","required":["email"],"properties":{"email":{"type":"string","format":"email","maxLength":320,"description":"Primary email; trimmed, validated and normalized to lowercase. At least one nonblank primary email or phone is required.","minLength":1,"isRequired":true,"uniqueKey":"contact.oneOf.0.email","typeLabel":"string\u003cemail>"},"contactId":{"type":"string","minLength":1,"maxLength":255,"description":"Optional preserved ID. Omission generates ct_\u003cuuid>; anonymous is reserved.","not":{"const":"anonymous"},"uniqueKey":"contact.oneOf.0.contactId","typeLabel":"string"},"phone":{"type":"string","minLength":1,"maxLength":64,"description":"Primary phone, normalized to E.164. Unsupported extensions are rejected. At least one nonblank primary email or phone is required.","uniqueKey":"contact.oneOf.0.phone","typeLabel":"string"},"firstName":{"type":"string","minLength":1,"maxLength":255,"description":"Standard Contact first-name property. When both firstName and lastName are supplied without name, CXP derives the display name as `{firstName} {lastName}`.","uniqueKey":"contact.oneOf.0.firstName","typeLabel":"string"},"lastName":{"type":"string","minLength":1,"maxLength":255,"description":"Standard Contact last-name property. When both firstName and lastName are supplied without name, CXP derives the display name as `{firstName} {lastName}`.","uniqueKey":"contact.oneOf.0.lastName","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Contact display name. An explicit value takes precedence over display-name derivation from firstName and lastName.","uniqueKey":"contact.oneOf.0.name","typeLabel":"string"},"tags":{"type":"array","maxItems":50,"items":{"type":"string","minLength":1,"maxLength":100,"uniqueKey":"contact.oneOf.0.tags.items.[INDEX]","typeLabel":"string"},"description":"Case-insensitive deduplication; whitespace-only values are invalid.","uniqueKey":"contact.oneOf.0.tags","typeLabel":"string[]"},"secondaryEmails":{"type":"array","maxItems":50,"items":{"type":"string","format":"email","minLength":1,"maxLength":320,"uniqueKey":"contact.oneOf.0.secondaryEmails.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Normalized and deduplicated; repeats of the primary email are removed.","uniqueKey":"contact.oneOf.0.secondaryEmails","typeLabel":"string\u003cemail>[]"},"secondaryPhones":{"type":"array","maxItems":50,"items":{"type":"string","minLength":1,"maxLength":64,"description":"Normalized to E.164.","uniqueKey":"contact.oneOf.0.secondaryPhones.items.[INDEX]","typeLabel":"string"},"description":"Normalized and deduplicated; repeats of the primary phone are removed.","uniqueKey":"contact.oneOf.0.secondaryPhones","typeLabel":"string[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"contact.oneOf.0","typeLabel":"object"},{"type":"object","description":"Create-only contact fields. Secondary addresses alone cannot satisfy the required primary email or phone. No organization, custom fields or historical timestamps.","required":["phone"],"properties":{"phone":{"type":"string","minLength":1,"maxLength":64,"description":"Primary phone, normalized to E.164. Unsupported extensions are rejected. At least one nonblank primary email or phone is required.","isRequired":true,"uniqueKey":"contact.oneOf.1.phone","typeLabel":"string"},"contactId":{"type":"string","minLength":1,"maxLength":255,"description":"Optional preserved ID. Omission generates ct_\u003cuuid>; anonymous is reserved.","not":{"const":"anonymous"},"uniqueKey":"contact.oneOf.1.contactId","typeLabel":"string"},"email":{"type":"string","format":"email","maxLength":320,"description":"Primary email; trimmed, validated and normalized to lowercase. At least one nonblank primary email or phone is required.","minLength":1,"uniqueKey":"contact.oneOf.1.email","typeLabel":"string\u003cemail>"},"firstName":{"type":"string","minLength":1,"maxLength":255,"description":"Standard Contact first-name property. When both firstName and lastName are supplied without name, CXP derives the display name as `{firstName} {lastName}`.","uniqueKey":"contact.oneOf.1.firstName","typeLabel":"string"},"lastName":{"type":"string","minLength":1,"maxLength":255,"description":"Standard Contact last-name property. When both firstName and lastName are supplied without name, CXP derives the display name as `{firstName} {lastName}`.","uniqueKey":"contact.oneOf.1.lastName","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Contact display name. An explicit value takes precedence over display-name derivation from firstName and lastName.","uniqueKey":"contact.oneOf.1.name","typeLabel":"string"},"tags":{"type":"array","maxItems":50,"items":{"type":"string","minLength":1,"maxLength":100,"uniqueKey":"contact.oneOf.1.tags.items.[INDEX]","typeLabel":"string"},"description":"Case-insensitive deduplication; whitespace-only values are invalid.","uniqueKey":"contact.oneOf.1.tags","typeLabel":"string[]"},"secondaryEmails":{"type":"array","maxItems":50,"items":{"type":"string","format":"email","minLength":1,"maxLength":320,"uniqueKey":"contact.oneOf.1.secondaryEmails.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Normalized and deduplicated; repeats of the primary email are removed.","uniqueKey":"contact.oneOf.1.secondaryEmails","typeLabel":"string\u003cemail>[]"},"secondaryPhones":{"type":"array","maxItems":50,"items":{"type":"string","minLength":1,"maxLength":64,"description":"Normalized to E.164.","uniqueKey":"contact.oneOf.1.secondaryPhones.items.[INDEX]","typeLabel":"string"},"description":"Normalized and deduplicated; repeats of the primary phone are removed.","uniqueKey":"contact.oneOf.1.secondaryPhones","typeLabel":"string[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"contact.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"contact","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"contact":{"contactId":"external-contact-123","email":"jane@example.com","firstName":"Jane","lastName":"Doe","tags":["historical-import"],"secondaryEmails":["jane.alt@example.com"]}},"examples":{"Example":{"title":"Example","value":{"contact":{"contactId":"external-contact-123","email":"jane@example.com","firstName":"Jane","lastName":"Doe","tags":["historical-import"],"secondaryEmails":["jane.alt@example.com"]}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"9101b12c-b1b8-461f-8b92-6acfb8253ad5":{"description":"Contact created.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["contact"],"properties":{"contact":{"type":"object","additionalProperties":false,"required":["contactId","result"],"properties":{"contactId":{"type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"contact.contactId","typeLabel":"string"},"result":{"type":"string","const":"created","isRequired":true,"uniqueKey":"contact.result","typeLabel":"string"}},"isRequired":true,"uniqueKey":"contact","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"contact":{"contactId":"external-contact-123","result":"created"}},"examples":{"Example":{"title":"Example","value":{"contact":{"contactId":"external-contact-123","result":"created"}}}},"exampleType":"examples"}},"exampleType":"examples"},"344272c7-fa54-4346-a867-bae361740ac8":{"description":"The body, a field, an unknown property, or a custom field is invalid.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"BadRequest","message":"message.text is required"},"examples":{"Example":{"title":"Example","value":{"code":"BadRequest","message":"message.text is required"}}},"exampleType":"examples"}},"exampleType":"examples"},"635162bd-c559-4d16-bf03-500fc29c4e8c":{"description":"The API key is missing, invalid, or expired.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"Unauthenticated","message":"Authentication required"},"examples":{"Example":{"title":"Example","value":{"code":"Unauthenticated","message":"Authentication required"}}},"exampleType":"examples"}},"exampleType":"examples"},"1847f2d5-42fc-4793-a35b-4d64b6b0739a":{"description":"The API key does not authorize the tenant or required scope.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"PermissionDenied","message":"API key does not allow this operation"},"examples":{"Example":{"title":"Example","value":{"code":"PermissionDenied","message":"API key does not allow this operation"}}},"exampleType":"examples"}},"exampleType":"examples"},"59de7d50-25ac-4ccb-8421-51543af013ef":{"description":"A supplied ID or identity conflicts with existing tenant data.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"id":{"title":"id","value":{"code":"ContactIdConflict","message":"Contact ID already exists","existingContactId":"external-contact-123"}},"identity":{"title":"identity","value":{"code":"ContactIdentityConflict","message":"A contact with a supplied email or phone already exists","existingContactId":"ct_existing"}}},"exampleType":"examples"}},"exampleType":"examples"},"ce1547a6-13e8-445e-b24e-60c74fe5c3ba":{"description":"The request exceeds the endpoint body limit or a lower configured gateway limit.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"PayloadTooLarge","message":"CXM API request body must not exceed 1048576 bytes"},"examples":{"Example":{"title":"Example","value":{"code":"PayloadTooLarge","message":"CXM API request body must not exceed 1048576 bytes"}}},"exampleType":"examples"}},"exampleType":"examples"},"83b5bb35-26a1-4357-a667-c03605cdbb23":{"description":"The tenant/API-key/route limit was exceeded.","headers":{"Retry-After":{"description":"Seconds to wait before another request.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"RateLimitExceeded","message":"CXM API rate limit exceeded"},"examples":{"Example":{"title":"Example","value":{"code":"RateLimitExceeded","message":"CXM API rate limit exceeded"}}},"exampleType":"examples"}},"exampleType":"examples"},"1e2994cd-3542-4a8a-8012-3e9be6e634e8":{"description":"The gateway could not complete downstream transport. The durable mutation outcome may be unknown.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"BadGateway","message":"CXM API downstream request failed"},"examples":{"Example":{"title":"Example","value":{"code":"BadGateway","message":"CXM API downstream request failed"}}},"exampleType":"examples"}},"exampleType":"examples"},"e69ccd8b-38af-4045-95e7-26a5b75adc6f":{"description":"A required service or durable/configuration dependency is unavailable.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"ServiceUnavailable","message":"CXM API is temporarily unavailable"},"examples":{"Example":{"title":"Example","value":{"code":"ServiceUnavailable","message":"CXM API is temporarily unavailable"}}},"exampleType":"examples"}},"exampleType":"examples"},"fd0023ae-1e8e-4762-bfe9-bdc4d26ac929":{"description":"The gateway timed out. The durable mutation outcome may be unknown, and retrying can duplicate effects.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["BadRequest","InvalidCustomField","Unauthenticated","PermissionDenied","EmailChannelNotFound","AssigneeNotFound","NotFound","EmailChannelDisabled","ContactIdentityConflict","OrganizationAmbiguous","AssigneeAmbiguous","Conflict","PayloadTooLarge","RateLimitExceeded","BadGateway","ServiceUnavailable","GatewayTimeout","ContactIdConflict","OrganizationIdConflict","ConversationIdConflict","ContactNotFound","OrganizationNotFound","ContactReadOnly","TeamNotFound","TeamAmbiguous"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"existingContactId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingContactId","typeLabel":"string"},"existingOrganizationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingOrganizationId","typeLabel":"string"},"existingConversationId":{"type":"string","minLength":1,"maxLength":255,"description":"One blocking record ID in a corresponding create/import conflict response. It does not establish that an earlier request had the same payload.","uniqueKey":"existingConversationId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"GatewayTimeout","message":"CXM API downstream request timed out"},"examples":{"Example":{"title":"Example","value":{"code":"GatewayTimeout","message":"CXM API downstream request timed out"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"ba598b66-fda8-44a5-b2a6-2e605de7fd1d":{"BearerApiKey":{"type":"http","scheme":"bearer","description":"Tenant API key with the operation's scope: `cxm:conversations.read`, `cxm:conversations.write`, `cxm:contacts.write`, or `cxm:organizations.write`. Corresponding resource wildcards and broader `cxm:read`, `cxm:write`, or `cxm:*` scopes apply. Keep it in a trusted backend; do not expose it in browser code.","scopes":[],"schemeName":"BearerApiKey"}}},"servers":{"601f0723-e7fb-4b92-a071-ea2f652aad97":{"url":"https://platform.crescendo.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Tenant API key with the operation's scope: `cxm:conversations.read`, `cxm:conversations.write`, `cxm:contacts.write`, or `cxm:organizations.write`. Corresponding resource wildcards and broader `cxm:read`, `cxm:write`, or `cxm:*` scopes apply. Keep it in a trusted backend; do not expose it in browser code.","scopes":[],"schemeName":"BearerApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Tenant API key with the operation's scope: `cxm:conversations.read`, `cxm:conversations.write`, `cxm:contacts.write`, or `cxm:organizations.write`. Corresponding resource wildcards and broader `cxm:read`, `cxm:write`, or `cxm:*` scopes apply. Keep it in a trusted backend; do not expose it in browser code.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerApiKey","name":"Authorization"}],"title":"BearerApiKey"}]},"originalFileLocation":"api-reference/openapi-v1.json"},"subdomain":"cxp","siteName":"Crescendo CXP Documentation","title":"Create a contact - Crescendo CXP Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T10:56:26.987Z","originalFileLocation":"api-reference/contacts/create-a-contact.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 one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Crescendo CXP Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_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/cxp/e3U7VDbNZMZP9uh7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a contact - Crescendo CXP Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Crescendo CXP Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cxp.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Create+a+contact\u0026amp;description=Create+one+contact+without+updating+or+merging+an+existing+record.+Requires+cxm%3Acontacts.write.+At+least+one+primary+email+or+phone+is+required%3B+secondary+addre\u0026amp;theme=db8a1c43495fbccdeaa0a9b9\u0026amp;signature=1d2097733f0a81d247b10586b1d70102d176a7b1c82c8688a1db66da29c829a9\">\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=\"Create a contact - Crescendo CXP Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cxp.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Create+a+contact\u0026amp;description=Create+one+contact+without+updating+or+merging+an+existing+record.+Requires+cxm%3Acontacts.write.+At+least+one+primary+email+or+phone+is+required%3B+secondary+addre\u0026amp;theme=db8a1c43495fbccdeaa0a9b9\u0026amp;signature=1d2097733f0a81d247b10586b1d70102d176a7b1c82c8688a1db66da29c829a9\">\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/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Crescendo CXP Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/contacts/create-a-contact.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cxp.crescendo.ai/#organization\",\"name\":\"Crescendo CXP Documentation\",\"url\":\"https://docs.cxp.crescendo.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cxp/qzLutHilHYGEIkc7/logo/light.png?fit=max\u0026auto=format\u0026n=qzLutHilHYGEIkc7\u0026q=85\u0026s=b5082c07055ff79d37dc82b1c6db1a7e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cxp.crescendo.ai#website\",\"name\":\"Crescendo CXP Documentation\",\"url\":\"https://docs.cxp.crescendo.ai\",\"publisher\":{\"@id\":\"https://docs.cxp.crescendo.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact#webpage\",\"url\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact\",\"name\":\"Create a contact\",\"description\":\"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.\",\"dateModified\":\"2026-11-02T10:56:26.987Z\",\"isPartOf\":{\"@id\":\"https://docs.cxp.crescendo.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.cxp.crescendo.ai/api-reference/conversations/create-or-continue-a-conversation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a contact\",\"item\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact#apireference\",\"headline\":\"Create a contact\",\"name\":\"Create a contact\",\"description\":\"Create one contact without updating or merging an existing record. Requires cxm:contacts.write. At least one primary email or phone is required; secondary addresses alone are insufficient. Checks all supplied primary and secondary identities against stored primary and secondary values and returns one blocking contact ID. ID conflicts take precedence. IDs and primary emails have database uniqueness protection; concurrent phone/secondary conflicts may escape lookup checks. Deduplicate and serialize overlapping identities. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.\",\"url\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cxp.crescendo.ai/api-reference/contacts/create-a-contact#webpage\"},\"dateModified\":\"2026-11-02T10:56:26.987Z\",\"publisher\":{\"@id\":\"https://docs.cxp.crescendo.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cxp.crescendo.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Crescendo CXP Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Crescendo CXP Documentation","nav":{"global":{"anchors":[{"anchor":"Crescendo","icon":"house","href":"https://www.crescendo.ai"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@crescendo.ai"}]},"tabs":[{"tab":"CXP","pages":[{"title":"CXP","href":""}]},{"tab":"Capabilities","pages":[{"title":"Capabilities","href":"/capabilities"}]},{"tab":"Developers","groups":[{"group":"API guides","pages":[{"title":"CXP API overview","href":"/developers/api-overview"},{"title":"Create a conversation","href":"/developers/create-conversation"},{"title":"Manage conversations with the API","href":"/developers/conversation-operations"},{"title":"Create a contact","href":"/developers/create-contact"},{"title":"Create an organization","href":"/developers/create-organization"},{"title":"Import a historical conversation","href":"/developers/import-conversation"},{"title":"Authenticated chat widgets","href":"/developers/authenticated-widget"}]},{"group":"API reference","pages":[{"group":"Conversations","pages":[{"title":"Create or continue a conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/conversations","href":"/api-reference/conversations/create-or-continue-a-conversation"},{"title":"Get a conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json get /api/v1/cxm/tenants/{tenantId}/conversations/{conversationId}","href":"/api-reference/conversations/get-a-conversation"},{"title":"Update a conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json patch /api/v1/cxm/tenants/{tenantId}/conversations/{conversationId}","href":"/api-reference/conversations/update-a-conversation"},{"title":"Assign a conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json put /api/v1/cxm/tenants/{tenantId}/conversations/{conversationId}/assignment","href":"/api-reference/conversations/assign-a-conversation"},{"title":"Add a conversation internal note","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/conversations/{conversationId}/internal-notes","href":"/api-reference/conversations/add-a-conversation-internal-note"},{"title":"Get conversation history","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json get /api/v1/cxm/tenants/{tenantId}/conversations/{conversationId}/history","href":"/api-reference/conversations/get-conversation-history"},{"title":"Import a historical conversation","description":"Create one historical conversation and all supplied messages atomically. Requires cxm:conversations.write. References an existing contact (or anonymous) and optional existing organization, without updating either. No messages, AI turns, routing or notifications are activated during import. Waits for one search-indexing attempt after commit. Indexing failure returns 201 with the created ID and IndexingFailed; an existing projection returns IndexingConflict without replacing it. A known disabled indexer rejects with 503 before creation. There is no append, merge, upsert or transcript continuation. Import shares the conversation-write rate group. Search may retain only the latest 500 messages and public history applies size/redaction limits, so neither is a lossless export verifier. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/conversations/import","href":"/api-reference/conversations/import-a-historical-conversation"}]},{"group":"Contacts","pages":[{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/contacts","href":"/api-reference/contacts/create-a-contact"}]},{"group":"Organizations","pages":[{"title":"Create an organization","description":"Create one organization with an optional preserved ID. Requires cxm:organizations.write. Duplicate names are allowed; this endpoint does not match or update by name. Preserve IDs or save the returned source-to-CXP mapping for repeated imports. Requires the matching tenant API-key write scope or broader scope. Maximum JSON request body: 1 MiB, subject to a lower configured gateway limit. Unknown fields are rejected. Each accepted request executes; no idempotency or replay guarantee. A timeout may occur after commit.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-v1.json post /api/v1/cxm/tenants/{tenantId}/organizations","href":"/api-reference/organizations/create-an-organization"}]}]}]},{"tab":"What's new","pages":[{"title":"What's new","href":"/whats-new"}]}]},"basePath":"","title":"Create a contact - Crescendo CXP Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}