{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Aptly API","colors":{"primary":"#0066FF"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aptly-10a57313","hasAudioNarration":false,"actualSubdomain":"aptly-10a57313","customDomains":["docs.getaptly.com"],"gitSource":{"type":"github","owner":"workturbo","repo":"core-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4dfc987cb31e1fa2cb0ab","collectionId":"1788173d-2862-4418-873a-da2b64e83176","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4dfc987cb31e1fa2cb0ab"},"feedback":{"agentFeedback":true},"entitlements":{},"buildId":"6ae4dfc987cb31e1fa2cb0ab","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":192},{"language":"default","tag":"Board","count":28},{"language":"default","tag":"Documentation","count":17},{"language":"default","tag":"Aptly Portal","count":14},{"language":"default","tag":"Contacts","count":10},{"language":"default","tag":"Cards","count":9},{"language":"default","tag":"Knowledge","count":8},{"language":"default","tag":"Getting Started","count":7},{"language":"default","tag":"Inboxes","count":7},{"language":"default","tag":"Context \u0026 Locations","count":6}]},"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":"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-or-update-a-contact","slug":"/api-reference/contacts/create-or-update-a-contact","pageMetadata":{"title":"Create or update a contact","description":"Creates a new contact or updates an existing one (upsert).\n\n**Lookup order:**\n1. If `_id` is provided, finds by ID.\n2. Otherwise finds by first email address.\n3. If no match is found, creates a new contact.\n\n**Body formats** — either native or legacy (capitalized keys) are accepted:\n\n*Native:* `firstname`, `lastname`, `email` (string or array), `phone` (array of `{number, type}`),\n`typeId`, `contactType`, `isCompany`, `title`, `company`, `imageUrl`, `customFields`\n\n*Legacy:* `\"First Name\"`, `\"Last Name\"`, `Email`, `\"Mobile Phone\"`, `\"Work Phone\"`,\n`\"Home Phone\"`, `\"Contact Type\"`, `Title`, `Company`\n\nReturns the enriched contact with custom fields populated by their type definitions.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts","href":"/api-reference/contacts/create-or-update-a-contact","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n em: \"em\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Creates a new contact or updates an existing one (upsert).\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Lookup order:\"\n })\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"If \", _jsx(_components.code, {\n children: \"_id\"\n }), \" is provided, finds by ID.\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Otherwise finds by first email address.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"If no match is found, creates a new contact.\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Body formats\"\n }), \" — either native or legacy (capitalized keys) are accepted:\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.em, {\n children: \"Native:\"\n }), \" \", _jsx(_components.code, {\n children: \"firstname\"\n }), \", \", _jsx(_components.code, {\n children: \"lastname\"\n }), \", \", _jsx(_components.code, {\n children: \"email\"\n }), \" (string or array), \", _jsx(_components.code, {\n children: \"phone\"\n }), \" (array of \", _jsx(_components.code, {\n children: \"{number, type}\"\n }), \"),\\n\", _jsx(_components.code, {\n children: \"typeId\"\n }), \", \", _jsx(_components.code, {\n children: \"contactType\"\n }), \", \", _jsx(_components.code, {\n children: \"isCompany\"\n }), \", \", _jsx(_components.code, {\n children: \"title\"\n }), \", \", _jsx(_components.code, {\n children: \"company\"\n }), \", \", _jsx(_components.code, {\n children: \"imageUrl\"\n }), \", \", _jsx(_components.code, {\n children: \"customFields\"\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.em, {\n children: \"Legacy:\"\n }), \" \", _jsx(_components.code, {\n children: \"\\\"First Name\\\"\"\n }), \", \", _jsx(_components.code, {\n children: \"\\\"Last Name\\\"\"\n }), \", \", _jsx(_components.code, {\n children: \"Email\"\n }), \", \", _jsx(_components.code, {\n children: \"\\\"Mobile Phone\\\"\"\n }), \", \", _jsx(_components.code, {\n children: \"\\\"Work Phone\\\"\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"\\\"Home Phone\\\"\"\n }), \", \", _jsx(_components.code, {\n children: \"\\\"Contact Type\\\"\"\n }), \", \", _jsx(_components.code, {\n children: \"Title\"\n }), \", \", _jsx(_components.code, {\n children: \"Company\"\n })]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Returns the enriched contact with custom fields populated by their type definitions.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create or update a contact","description":"Creates a new contact or updates an existing one (upsert).\n\n**Lookup order:**\n1. If `_id` is provided, finds by ID.\n2. Otherwise finds by first email address.\n3. If no match is found, creates a new contact.\n\n**Body formats** — either native or legacy (capitalized keys) are accepted:\n\n*Native:* `firstname`, `lastname`, `email` (string or array), `phone` (array of `{number, type}`),\n`typeId`, `contactType`, `isCompany`, `title`, `company`, `imageUrl`, `customFields`\n\n*Legacy:* `\"First Name\"`, `\"Last Name\"`, `Email`, `\"Mobile Phone\"`, `\"Work Phone\"`,\n`\"Home Phone\"`, `\"Contact Type\"`, `Title`, `Company`\n\nReturns the enriched contact with custom fields populated by their type definitions.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts","href":"/api-reference/contacts/create-or-update-a-contact","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create or update a contact","description":"Creates a new contact or updates an existing one (upsert).\n\n**Lookup order:**\n1. If `_id` is provided, finds by ID.\n2. Otherwise finds by first email address.\n3. If no match is found, creates a new contact.\n\n**Body formats** — either native or legacy (capitalized keys) are accepted:\n\n*Native:* `firstname`, `lastname`, `email` (string or array), `phone` (array of `{number, type}`),\n`typeId`, `contactType`, `isCompany`, `title`, `company`, `imageUrl`, `customFields`\n\n*Legacy:* `\"First Name\"`, `\"Last Name\"`, `Email`, `\"Mobile Phone\"`, `\"Work Phone\"`,\n`\"Home Phone\"`, `\"Contact Type\"`, `Title`, `Company`\n\nReturns the enriched contact with custom fields populated by their type definitions.\n","operationId":"upsertContact","tags":["Contacts"],"security":["11f24010-23ee-4969-9326-f4b9d1bebb1a","d3c0a8bd-fa40-48c6-bc0f-d1eabc53301c"],"requestBody":"82b79d49-918d-4680-9474-c33c51a6c783","responses":{"200":"aeb8ac13-29bc-4262-834c-f9e5d5744b30","400":"603569c3-d8b3-4471-a63c-28580dda3cf9","401":"e2d2232a-8cd6-4930-87ff-2b9aa1202fb9"},"method":"post","type":"path","servers":["07b42306-8584-4b68-93b8-f52adbaae2fe"],"path":"/api/contacts","baseUrlOptions":["https://core-api.getaptly.com"],"title":"Create or update a contact","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"_id":{"type":"string","description":"Existing contact ID — when provided, updates that contact.","uniqueKey":"_id","typeLabel":"string"},"firstname":{"type":"string","uniqueKey":"firstname","typeLabel":"string"},"lastname":{"type":"string","uniqueKey":"lastname","typeLabel":"string"},"email":{"oneOf":[{"type":"string","description":"One or more email addresses.","uniqueKey":"email.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"email.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"One or more email addresses.","uniqueKey":"email.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"email","typeLabel":"string | string[]"},"phone":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","uniqueKey":"phone.items.[INDEX].number","typeLabel":"string"},"type":{"type":"string","enum":["mobile","work","home"],"uniqueKey":"phone.items.[INDEX].type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"phone.items.[INDEX]","typeLabel":"object"},"uniqueKey":"phone","typeLabel":"object[]"},"typeId":{"type":"string","description":"Contact type ID.","uniqueKey":"typeId","typeLabel":"string"},"contactType":{"type":"string","description":"Contact type name (alternative to `typeId` — resolved to an ID automatically).","uniqueKey":"contactType","typeLabel":"string"},"isCompany":{"type":"boolean","uniqueKey":"isCompany","typeLabel":"boolean"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"},"company":{"type":"string","uniqueKey":"company","typeLabel":"string"},"imageUrl":{"type":"string","description":"Absolute URL to a JPG or PNG photo.","uniqueKey":"imageUrl","typeLabel":"string"},"customFields":{"type":"object","description":"Map of custom field ID to value. Unknown field IDs are rejected.","uniqueKey":"customFields","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"firstname":"Jane","lastname":"Smith","email":"[email protected]","phone":[{"number":"+15555550100","type":"mobile"}],"contactType":"Tenant"},"examples":{"Example":{"title":"Example","value":{"firstname":"Jane","lastname":"Smith","email":"[email protected]","phone":[{"number":"+15555550100","type":"mobile"}],"contactType":"Tenant"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"aeb8ac13-29bc-4262-834c-f9e5d5744b30":{"description":"Contact created or updated.","content":{"application/json":{"schema":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId of the contact.","uniqueKey":"_id","typeLabel":"string"},"uuid":{"type":"string","uniqueKey":"uuid","typeLabel":"string"},"firstname":{"type":"string","uniqueKey":"firstname","typeLabel":"string"},"lastname":{"type":"string","uniqueKey":"lastname","typeLabel":"string"},"fullName":{"type":"string","description":"Computed display name (first + last, or company name for org records).","uniqueKey":"fullName","typeLabel":"string"},"duogram":{"type":"string","description":"Two-letter initials derived from first and last name.","uniqueKey":"duogram","typeLabel":"string"},"photoId":{"oneOf":[{"type":"string","uniqueKey":"photoId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"photoId.oneOf.1","typeLabel":"null"}],"uniqueKey":"photoId","typeLabel":"string | null"},"imageUrl":{"oneOf":[{"type":"string","description":"CDN thumbnail URL for the contact's photo, or null if none.","uniqueKey":"imageUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"CDN thumbnail URL for the contact's photo, or null if none.","uniqueKey":"imageUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"imageUrl","typeLabel":"string | null"},"email":{"type":"string","uniqueKey":"email","typeLabel":"string"},"phone":{"type":"string","uniqueKey":"phone","typeLabel":"string"},"typeId":{"type":"string","uniqueKey":"typeId","typeLabel":"string"},"companyId":{"type":"string","uniqueKey":"companyId","typeLabel":"string"},"address":{"type":"object","uniqueKey":"address","typeLabel":"object"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"},"alerts":{"type":"array","items":{"type":"object","uniqueKey":"alerts.items.[INDEX]","typeLabel":"object"},"uniqueKey":"alerts","typeLabel":"object[]"},"company":{"type":"string","description":"Company name — populated when isCompany is true.","uniqueKey":"company","typeLabel":"string"},"isCompany":{"type":"boolean","uniqueKey":"isCompany","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"_id":"\u003cstring>","uuid":"\u003cstring>","firstname":"\u003cstring>","lastname":"\u003cstring>","fullName":"\u003cstring>","duogram":"\u003cstring>","photoId":"\u003cstring>","imageUrl":"\u003cstring>","email":"\u003cstring>","phone":"\u003cstring>","typeId":"\u003cstring>","companyId":"\u003cstring>","address":{},"title":"\u003cstring>","alerts":[{}],"company":"\u003cstring>","isCompany":true}}},"exampleType":"generated"}},"exampleType":"generated"},"603569c3-d8b3-4471-a63c-28580dda3cf9":{"description":"Invalid input (bad URL, unknown custom field, invalid date, etc.).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"e2d2232a-8cd6-4930-87ff-2b9aa1202fb9":{"description":"Invalid or missing API key.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"11f24010-23ee-4969-9326-f4b9d1bebb1a":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-token","scopes":[],"schemeName":"ApiKeyHeader"}},"d3c0a8bd-fa40-48c6-bc0f-d1eabc53301c":{"DelegateToken":{"type":"apiKey","in":"header","name":"Authorization","description":"Delegate token issued by the platform. Format: `DelegateToken \u003ctoken>`","scopes":[],"schemeName":"DelegateToken"}}},"servers":{"07b42306-8584-4b68-93b8-f52adbaae2fe":{"url":"https://core-api.getaptly.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-token","scopes":[],"schemeName":"ApiKeyHeader"},"schema":{"title":"x-token","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyHeader","name":"x-token"}],"title":"ApiKeyHeader"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"Delegate token issued by the platform. Format: `DelegateToken \u003ctoken>`","scopes":[],"schemeName":"DelegateToken"},"schema":{"title":"Authorization","type":"string","description":"Delegate token issued by the platform. Format: `DelegateToken \u003ctoken>`","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"DelegateToken","name":"Authorization"}],"title":"DelegateToken"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"aptly-10a57313","siteName":"Aptly API","title":"Create or update a contact - Aptly API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T18:20:14.345Z","originalFileLocation":"api-reference/contacts/create-or-update-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=\"Creates a new contact or updates an existing one (upsert). Lookup order: 1. If _id is provided, finds by ID. 2. Otherwise finds by first email address. 3. If no match is found, creates a new contact. Body formats — either native or legacy (capitalized keys) are accepted: Native: firstname, lastname, email (string or array), phone (array of {number, type}), typeId, contactType, isCompany, title, company, imageUrl, customFields Legacy: \u0026quot;First Name\u0026quot;, \u0026quot;Last Name\u0026quot;, Email, \u0026quot;Mobile Phone\u0026quot;, \u0026quot;Work Phone\u0026quot;, \u0026quot;Home Phone\u0026quot;, \u0026quot;Contact Type\u0026quot;, Title, Company Returns the enriched contact with custom fields populated by their type definitions.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Aptly API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aptly-10a57313/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aptly-10a57313/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aptly-10a57313/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/aptly-10a57313/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create or update a contact - Aptly API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a new contact or updates an existing one (upsert). Lookup order: 1. If _id is provided, finds by ID. 2. Otherwise finds by first email address. 3. If no match is found, creates a new contact. Body formats — either native or legacy (capitalized keys) are accepted: Native: firstname, lastname, email (string or array), phone (array of {number, type}), typeId, contactType, isCompany, title, company, imageUrl, customFields Legacy: \u0026quot;First Name\u0026quot;, \u0026quot;Last Name\u0026quot;, Email, \u0026quot;Mobile Phone\u0026quot;, \u0026quot;Work Phone\u0026quot;, \u0026quot;Home Phone\u0026quot;, \u0026quot;Contact Type\u0026quot;, Title, Company Returns the enriched contact with custom fields populated by their type definitions.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Aptly API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aptly-10a57313.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Create+or+update+a+contact\u0026amp;description=Creates+a+new+contact+or+updates+an+existing+one+%28upsert%29.%0A%0A**Lookup+order%3A**%0A1.+If+%60_id%60+is+provided%2C+finds+by+ID.%0A2.+Otherwise+finds+by+first+email+address.%0A3\u0026amp;theme=2df7969a14dd47f616338bb6\u0026amp;signature=7730d0c49c9eb1b1a6698e5ae89c6ba81bd92d45a3072308d40f706ed1ea0fe8\">\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 or update a contact - Aptly API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a new contact or updates an existing one (upsert). Lookup order: 1. If _id is provided, finds by ID. 2. Otherwise finds by first email address. 3. If no match is found, creates a new contact. Body formats — either native or legacy (capitalized keys) are accepted: Native: firstname, lastname, email (string or array), phone (array of {number, type}), typeId, contactType, isCompany, title, company, imageUrl, customFields Legacy: \u0026quot;First Name\u0026quot;, \u0026quot;Last Name\u0026quot;, Email, \u0026quot;Mobile Phone\u0026quot;, \u0026quot;Work Phone\u0026quot;, \u0026quot;Home Phone\u0026quot;, \u0026quot;Contact Type\u0026quot;, Title, Company Returns the enriched contact with custom fields populated by their type definitions.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aptly-10a57313.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Create+or+update+a+contact\u0026amp;description=Creates+a+new+contact+or+updates+an+existing+one+%28upsert%29.%0A%0A**Lookup+order%3A**%0A1.+If+%60_id%60+is+provided%2C+finds+by+ID.%0A2.+Otherwise+finds+by+first+email+address.%0A3\u0026amp;theme=2df7969a14dd47f616338bb6\u0026amp;signature=7730d0c49c9eb1b1a6698e5ae89c6ba81bd92d45a3072308d40f706ed1ea0fe8\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/aptly-10a57313/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Aptly API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0066FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getaptly.com/api-reference/contacts/create-or-update-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-or-update-a-contact.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.getaptly.com/#organization\",\"name\":\"Aptly API\",\"url\":\"https://docs.getaptly.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getaptly.com#website\",\"name\":\"Aptly API\",\"url\":\"https://docs.getaptly.com\",\"publisher\":{\"@id\":\"https://docs.getaptly.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact#webpage\",\"url\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact\",\"name\":\"Create or update a contact\",\"description\":\"Creates a new contact or updates an existing one (upsert). Lookup order: 1. If _id is provided, finds by ID. 2. Otherwise finds by first email address. 3. If no match is found, creates a new contact. Body formats — either native or legacy (capitalized keys) are accepted: Native: firstname, lastname, email (string or array), phone (array of {number, type}), typeId, contactType, isCompany, title, company, imageUrl, customFields Legacy: \\\"First Name\\\", \\\"Last Name\\\", Email, \\\"Mobile Phone\\\", \\\"Work Phone\\\", \\\"Home Phone\\\", \\\"Contact Type\\\", Title, Company Returns the enriched contact with custom fields populated by their type definitions.\",\"dateModified\":\"2026-10-30T18:20:14.345Z\",\"isPartOf\":{\"@id\":\"https://docs.getaptly.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.getaptly.com/api-reference/users/list-users\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contacts\",\"item\":\"https://docs.getaptly.com/api-reference/contacts/get-conversations-for-contacts\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create or update a contact\",\"item\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact#apireference\",\"headline\":\"Create or update a contact\",\"name\":\"Create or update a contact\",\"description\":\"Creates a new contact or updates an existing one (upsert). Lookup order: 1. If _id is provided, finds by ID. 2. Otherwise finds by first email address. 3. If no match is found, creates a new contact. Body formats — either native or legacy (capitalized keys) are accepted: Native: firstname, lastname, email (string or array), phone (array of {number, type}), typeId, contactType, isCompany, title, company, imageUrl, customFields Legacy: \\\"First Name\\\", \\\"Last Name\\\", Email, \\\"Mobile Phone\\\", \\\"Work Phone\\\", \\\"Home Phone\\\", \\\"Contact Type\\\", Title, Company Returns the enriched contact with custom fields populated by their type definitions.\",\"url\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getaptly.com/api-reference/contacts/create-or-update-a-contact#webpage\"},\"dateModified\":\"2026-10-30T18:20:14.345Z\",\"publisher\":{\"@id\":\"https://docs.getaptly.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getaptly.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Aptly API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Aptly API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"group":"Users","pages":[{"title":"List users","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/users","href":"/api-reference/users/list-users"},{"title":"List a user's email inboxes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/users/{userId}/inboxes","href":"/api-reference/users/list-a-users-email-inboxes"}]},{"group":"Inboxes","pages":[{"title":"List inboxes you can query","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes","href":"/api-reference/inboxes/list-inboxes-you-can-query"},{"title":"List threads and messages on an inbox","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes/{channelId}/messages","href":"/api-reference/inboxes/list-threads-and-messages-on-an-inbox"},{"title":"Conversation analytics for an inbox","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes/{channelId}/analytics","href":"/api-reference/inboxes/conversation-analytics-for-an-inbox"},{"title":"Activity history for an inbox","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes/{channelId}/history","href":"/api-reference/inboxes/activity-history-for-an-inbox"},{"title":"Volume and response-time trends for an inbox","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes/{channelId}/trends","href":"/api-reference/inboxes/volume-and-response-time-trends-for-an-inbox"},{"title":"Volume health for an inbox against its own baseline","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes/{channelId}/health","href":"/api-reference/inboxes/volume-health-for-an-inbox-against-its-own-baseline"},{"title":"List unsent drafts on an inbox","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/inboxes/{channelId}/drafts","href":"/api-reference/inboxes/list-unsent-drafts-on-an-inbox"}]},{"group":"Schema","pages":[{"title":"Get board schema","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/schema/{boardId}","href":"/api-reference/schema/get-board-schema"}]},{"group":"Boards","pages":[{"title":"List boards","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/boards","href":"/api-reference/boards/list-boards"},{"title":"Create a board","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/boards","href":"/api-reference/boards/create-a-board"}]},{"group":"Cards","pages":[{"title":"List cards","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/list","href":"/api-reference/cards/list-cards"},{"title":"List cards (deprecated)","deprecated":true,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}","href":"/api-reference/cards/list-cards-deprecated"},{"title":"Create or update a card","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}","href":"/api-reference/cards/create-or-update-a-card"},{"title":"Get a card","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/{cardId}","href":"/api-reference/cards/get-a-card"},{"title":"Archive a card","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/board/{boardId}/{cardId}","href":"/api-reference/cards/archive-a-card"},{"title":"List comments on a card","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/{cardId}/comments","href":"/api-reference/cards/list-comments-on-a-card"},{"title":"List contacts linked to a card","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/{cardId}/contacts","href":"/api-reference/cards/list-contacts-linked-to-a-card"},{"title":"Add or update a comment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/{cardId}/comment","href":"/api-reference/cards/add-or-update-a-comment"},{"title":"Upload a file to a card","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/{cardId}/file","href":"/api-reference/cards/upload-a-file-to-a-card"}]},{"group":"Board","pages":[{"title":"Archive a board","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/board/{boardId}","href":"/api-reference/board/archive-a-board"},{"title":"List merge fields for a board","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/merge-fields","href":"/api-reference/board/list-merge-fields-for-a-board"},{"title":"List users who can open a board","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/users","href":"/api-reference/board/list-users-who-can-open-a-board"},{"title":"Add a tab view","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/configuration/tabViews","href":"/api-reference/board/add-a-tab-view"},{"title":"Add a tab view (legacy)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/tabView","href":"/api-reference/board/add-a-tab-view-legacy"},{"title":"Verify a delegate token","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/verify-user","href":"/api-reference/board/verify-a-delegate-token"},{"title":"Set or update the board's webhook","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/webhook","href":"/api-reference/board/set-or-update-the-boards-webhook"},{"title":"Remove the board's webhook","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/board/{boardId}/webhook","href":"/api-reference/board/remove-the-boards-webhook"},{"title":"Get full board configuration","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration","href":"/api-reference/board/get-full-board-configuration"},{"title":"List board automations","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/automations","href":"/api-reference/board/list-board-automations"},{"title":"Create an automation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/configuration/automations","href":"/api-reference/board/create-an-automation"},{"title":"List create-card rules","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/card-rules","href":"/api-reference/board/list-create-card-rules"},{"title":"Get board options","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/options","href":"/api-reference/board/get-board-options"},{"title":"List board fields","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/fields","href":"/api-reference/board/list-board-fields"},{"title":"Add a field","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/configuration/fields","href":"/api-reference/board/add-a-field"},{"title":"Add a mirror field","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/configuration/mirror-fields","href":"/api-reference/board/add-a-mirror-field"},{"title":"Update a field","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/board/{boardId}/configuration/fields/{fieldUuid}","href":"/api-reference/board/update-a-field"},{"title":"Delete a field","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/board/{boardId}/configuration/fields/{fieldUuid}","href":"/api-reference/board/delete-a-field"},{"title":"Reorder fields","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/board/{boardId}/configuration/field-order","href":"/api-reference/board/reorder-fields"},{"title":"List board field groups","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/groups","href":"/api-reference/board/list-board-field-groups"},{"title":"Create a field group","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/board/{boardId}/configuration/groups","href":"/api-reference/board/create-a-field-group"},{"title":"Update a field group","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/board/{boardId}/configuration/groups/{groupUuid}","href":"/api-reference/board/update-a-field-group"},{"title":"Get the create-card form order","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/start-card-order","href":"/api-reference/board/get-the-create-card-form-order"},{"title":"Set the create-card form order","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/board/{boardId}/configuration/start-card-order","href":"/api-reference/board/set-the-create-card-form-order"},{"title":"Get board access settings","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/shares","href":"/api-reference/board/get-board-access-settings"},{"title":"Get board identity fields","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/theme","href":"/api-reference/board/get-board-identity-fields"},{"title":"Update board identity fields","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /api/board/{boardId}/configuration/theme","href":"/api-reference/board/update-board-identity-fields"},{"title":"List board filters","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/board/{boardId}/configuration/filters","href":"/api-reference/board/list-board-filters"}]},{"group":"Company","pages":[{"title":"Get company info","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/company/info","href":"/api-reference/company/get-company-info"}]},{"group":"Contacts","pages":[{"title":"Get conversations for contacts","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts/conversations","href":"/api-reference/contacts/get-conversations-for-contacts"},{"title":"Get contact conversations","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/contacts/{contactId}/conversations","href":"/api-reference/contacts/get-contact-conversations"},{"title":"List contacts","description":"Returns a paginated list of contacts scoped to your company. All filter params are optional and ANDed together.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/contacts","href":"/api-reference/contacts/list-contacts"},{"title":"Create or update a contact","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts","href":"/api-reference/contacts/create-or-update-a-contact"},{"title":"Look up contacts by email","description":"Returns contacts whose email address matches one or more of the provided values.\nMatching is case-insensitive and exact. Results are scoped to your company.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts/by-email","href":"/api-reference/contacts/look-up-contacts-by-email"},{"title":"Initiate contact email verification","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts/verify-email","href":"/api-reference/contacts/initiate-contact-email-verification"},{"title":"Confirm contact email verification","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts/verify-email/{requestId}/confirm","href":"/api-reference/contacts/confirm-contact-email-verification"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/contacts/{contactId}","href":"/api-reference/contacts/get-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/contacts/{contactId}","href":"/api-reference/contacts/update-a-contact"},{"title":"Get a contact's sentiment history","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/contacts/{contactId}/sentiment","href":"/api-reference/contacts/get-a-contacts-sentiment-history"}]},{"group":"Knowledge","pages":[{"title":"Create a knowledge document","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/knowledge/create","href":"/api-reference/knowledge/create-a-knowledge-document"},{"title":"List knowledge documents","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/knowledge/list","href":"/api-reference/knowledge/list-knowledge-documents"},{"title":"Get the knowledge document tree","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/knowledge/tree","href":"/api-reference/knowledge/get-the-knowledge-document-tree"},{"title":"List a knowledge document's direct children","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/knowledge/{id}/children","href":"/api-reference/knowledge/list-a-knowledge-documents-direct-children"},{"title":"List saved knowledge document versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/knowledge/{id}/history","href":"/api-reference/knowledge/list-saved-knowledge-document-versions"},{"title":"Read a saved knowledge document version","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/knowledge/{id}/history/{versionId}","href":"/api-reference/knowledge/read-a-saved-knowledge-document-version"},{"title":"Get a knowledge document","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/knowledge/{id}","href":"/api-reference/knowledge/get-a-knowledge-document"},{"title":"Update a knowledge document","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/knowledge/{id}","href":"/api-reference/knowledge/update-a-knowledge-document"}]},{"group":"Email","pages":[{"title":"Create an email draft","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/email/create-draft","href":"/api-reference/email/create-an-email-draft"},{"title":"Send an email","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/email/send","href":"/api-reference/email/send-an-email"}]},{"group":"App","pages":[{"title":"Verify a delegate token (keyless)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/app/verify","href":"/api-reference/app/verify-a-delegate-token-keyless"},{"title":"Get credential info","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/app/me","href":"/api-reference/app/get-credential-info"}]},{"group":"Templates","pages":[{"title":"List templates","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/templates","href":"/api-reference/templates/list-templates"},{"title":"Create a template","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/templates","href":"/api-reference/templates/create-a-template"},{"title":"Get a template","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/templates/{id}","href":"/api-reference/templates/get-a-template"},{"title":"Update a template","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/templates/{id}","href":"/api-reference/templates/update-a-template"}]},{"group":"Tasks","pages":[{"title":"Search tasks","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/tasks/search","href":"/api-reference/tasks/search-tasks"},{"title":"Create a task","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/tasks","href":"/api-reference/tasks/create-a-task"},{"title":"Update many tasks","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/tasks/bulk-update","href":"/api-reference/tasks/update-many-tasks"},{"title":"Get a task by ID","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/tasks/{taskId}","href":"/api-reference/tasks/get-a-task-by-id"},{"title":"Update a task","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/tasks/{taskId}","href":"/api-reference/tasks/update-a-task"}]},{"group":"RoutingGroups","pages":[{"title":"List routing groups","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/routing-groups","href":"/api-reference/routinggroups/list-routing-groups"},{"title":"Create a routing group","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/routing-groups/create","href":"/api-reference/routinggroups/create-a-routing-group"},{"title":"Update a routing group","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/routing-groups/{id}","href":"/api-reference/routinggroups/update-a-routing-group"},{"title":"Archive a routing group","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/routing-groups/{id}/archive","href":"/api-reference/routinggroups/archive-a-routing-group"}]},{"group":"Files","pages":[{"title":"Get a presigned URL for a direct file upload","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/files/upload-url","href":"/api-reference/files/get-a-presigned-url-for-a-direct-file-upload"},{"title":"Finalize a direct file upload","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/files/upload-complete","href":"/api-reference/files/finalize-a-direct-file-upload"}]},{"group":"WebForms","pages":[{"title":"Submit a web form","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/web-forms/{formId}","href":"/api-reference/webforms/submit-a-web-form"}]},{"group":"Tours","pages":[{"title":"List tour feedback","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/tours/feedback","href":"/api-reference/tours/list-tour-feedback"},{"title":"Get one showing's tour feedback","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/tours/{showingId}/feedback","href":"/api-reference/tours/get-one-showings-tour-feedback"}]},{"group":"Docs","pages":[{"title":"Fetch this OpenAPI spec","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/docs/openapi","href":"/api-reference/docs/fetch-this-openapi-spec"}]}]}]},{"tab":"Aptly Portal","icon":"door-closed","pages":[{"title":"Aptly Portal","href":"/portal/introduction"}]}]},"basePath":"","title":"Create or update a contact - Aptly API","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}