PATCH /candidates/{id} is a permanent alias of this endpoint and keeps working unchanged, with the same scopes and the same response. See Resource names.
Updates an existing contact. Only the fields you send are changed; everything else is left alone.
A partial update, so you send the fields you want to change and nothing more. Use it to correct a phone number, move someone’s status, change their job assignments, or attach metadata.
// Update only statusPATCH /contacts/{id}{ "status": "IN_PROCESS"}// Update how to reach themPATCH /contacts/{id}{ "email": "newemail@example.com", "phoneNumber": "+1987654321"}// Assign to multiple jobsPATCH /contacts/{id}{ "jobIds": ["job-uuid-1", "job-uuid-2", "job-uuid-3"]}// Remove all job assignmentsPATCH /contacts/{id}{ "jobIds": []}// Set gender explicitlyPATCH /contacts/{id}{ "gender": "female"}// Clear gender (revert to auto-detection)PATCH /contacts/{id}{ "gender": null}// Replace the work historyPATCH /contacts/{id}{ "workHistory": [ { "companyName": "Tech Corp", "candidatePosition": "Senior Software Engineer", "referenceName": "Jane Smith", "referencePhone": "+1234567890", "startDate": "2020-01-01" } ]}
metadata is not readable by an agent. It is your own scratch space — free-form,
unvalidated, and never placed in a prompt. If you want a value an agent can say, it has to
be a contact field: catalogued, typed, and addressable as {{contact.<key>}}. See
Update Contact.
Sending metadata never disturbs the contact’s fields. The two are stored separately, so
replacing metadata wholesale cannot reach the catalogued values: they survive the write
untouched, and the response shows them back to you under fields. A routine sync of your own
payload cannot erase a value an agent depends on.It does not work as a back door either. Nothing on the metadata path checks a value against
its field’s type, enum or reserved-key rules, and nothing reads a contact field out of it —
whatever you put there stays your own scratch space. fields below is the validated door, on
this endpoint and on POST /contacts, and it answers
422 naming the key when a value does not fit.
fields merges; metadata replaces. A key you omit keeps its value, and an explicit
null clears one. The two behave differently in the same request body on purpose:
metadata is one opaque document you own, fields are individually catalogued values.
// Change one value, leave every other alonePATCH /contacts/{id}{ "fields": { "order_number": "SO-40129" } }// Clear onePATCH /contacts/{id}{ "fields": { "renewal_date": null } }
"fields": null is not a wipe — it reads as “no values in this request” and is a no-op.
Clearing is per key, which is what stops a partial update from blanking a contact by accident.
Every value is checked against its field’s declared type, and an unknown key is refused. Both
answer 422naming the key — never a silent drop, because a caller who believes it wrote a
value it did not is the worse outcome. 422 rather than 400: the request is well formed, it
is the catalog that rejects its contents.Validation runs in the same transaction as the contact update, so a rejection applies
nothing — not the status, not the metadata, not the other values.
The field is
Accepted
Refused
string
any text (trimmed)
an object
number
42, "42", "-7.5"
"twelve", "12abc"
bool
true, "true", "yes", "1" and negatives
"maybe"
date
"2026-04-20", any parseable date
"not a date"
enum
one of the field’s enumOptions
anything else — the error lists the options
tags
["vip","renewal"], or"vip, renewal"
42, true, an object
Reserved and read-only keys are refused too: first_name, email and the rest are set as the
contact’s own properties above, and company_description and agent_name resolve from your
company and your agent, so a value stored under them would be shadowed on every call.
A tags field stores a string[] and accepts either the array or one comma-separated
string — so a single CSV cell holding several tags maps onto one field without your side
splitting it first. The two are equivalent:
Entries are trimmed, blanks are dropped ("vip,, renewal," is two tags) and duplicates are
removed case-insensitively, keeping the spelling that came first — ["VIP","vip"] stores
["VIP"].
A comma is always a separator, so a tag cannot contain one. That holds inside an array
element too: ["north, east"] stores two tags, exactly as "north, east" does. The two
shapes would otherwise mean different things, and a value edited in the dashboard — which
renders the list as one comma-joined line — would split on the next save with no warning.
Bounded, because these are stored on the contact and read on every call: at most 50 tags,
60 characters per tag, and 2000 characters of raw tag text per request. Each is a 422
naming the limit.
An empty list is the erase.[], [""] and "," all say the contact has no tags, so
they clear the field exactly as null and "" do — you never get a key present with an
empty array behind it.
What it will not do is guess: a number, a boolean or an object is a 422 rather than a
one-element list, because a caller sending 42 for a tags field has a mapping bug and a
silent ["42"] would be spoken on a call.
Off by default. When passed, a key in fields that your catalog does not know yet is
defined for you as a string field, instead of the request being rejected.
PATCH /contacts/{id}?createMissingFields=true{ "fields": { "warranty_ref": "W-9921" } }// warranty_ref now exists in your catalog, labelled "Warranty ref"
A typo becomes a permanent field.oder_number creates oder_number, visible in every
agent’s variable palette until somebody deletes it. That is why the option is opt-in per
request rather than a mode you can leave on.
Two things to know:
It needs no extra scope. The same write:contacts that lets you define a field
explicitly lets you define one implicitly. What it will still never do is quietly ignore an
unknown key you did not ask it to create.
The field is always string. The value is the only evidence available and it is a poor
one: "1" could be a number, a boolean or an order reference, and a wrong guess becomes
validation that rejects your next row.
PATCH /contact-fields/{id} retypes it
afterwards. Reserved keys, malformed keys and a company already at its field ceiling are all
still refused.
For anything you control, define the fields explicitly with
POST /contact-fields — you get the right
type and label, and a typo fails loudly.
jobIds sets which jobs a contact is associated with. It replaces the array rather than adding to it:
// Assign the contact to several jobsawait updateContact("contact-uuid", { jobIds: ["job-1-uuid", "job-2-uuid", "job-3-uuid"],});// Add one to the existing assignments// Note: fetch current state first, since PATCH replaces the whole jobIds arrayconst contact = await getContact("contact-uuid");await updateContact("contact-uuid", { jobIds: [...contact.jobIds, "new-job-uuid"],});// Replace every assignment with one jobawait updateContact("contact-uuid", { jobIds: ["only-this-job-uuid"],});// Remove every job assignmentawait updateContact("contact-uuid", { jobIds: [],});
Job validation: every id in jobIds must name an existing job belonging to your API key’s
company. An unknown id is a validation error, not a silent omission.
Concurrent jobIds updates lose assignments. Because the field replaces the array, adding
one job is a read-modify-write, and the endpoint offers no precondition to make that safe — no
If-Match, no version field. Two requests that both read ["job-1"] and each append their own
job leave the contact with whichever wrote last, and the other assignment is gone. It is not
reported: both calls answer 200.Serialise jobIds writes for a given contact — a queue or a lock of your own, keyed on the
contact id — rather than issuing them in parallel from several workers. Fields that are not
read-modify-write (email, status, metadata) do not have this problem.
The names are hiring-flavoured because they predate the neutral vocabulary, and they are the
values the API accepts, so they are unchanged. Sending anything else is a 400.
Define any key in fields that your catalog does not know yet, as a STRING field, instead of rejecting the request. Off by default, because a typo would otherwise become a permanent field in your catalog — visible in every agent's variable palette until somebody deletes it. A key the platform reserves, a malformed key, and a company already at its field ceiling are all still refused.
Catalogued field values, keyed by catalog key. MERGED key by key, unlike metadata which replaces: a key you omit keeps its value, and an explicit null clears one. Validated against each field's declared type, so an unknown key or a wrong-typed value is a 422 naming it, and the whole request is rolled back.
The contact's catalogued field values, keyed by field key — the counterpart of metadata, and the only half an agent can speak. Each key is defined in the company catalog (GET /contact-fields) and addressable in a flow as {{contact.<key>}}. Written through fields on POST /contacts and PATCH /contacts/{id}, never through metadata. A field with no value is absent rather than null; {} means none are set.
Your own scratch space on the contact: free-form, unvalidated, and never read by an agent. Replaced wholesale on update. Not the place for values you want an agent to say — those are fields.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"InstaView API","colors":{"primary":"#2741F9","light":"#4D5FFF","dark":"#1D34C4"},"logo":{"light":"https://mintcdn.com/instaview/srYC_WLR3UAwt0PY/logo/light.svg?fit=max\u0026auto=format\u0026n=srYC_WLR3UAwt0PY\u0026q=85\u0026s=a941bc948e20b3503a55e49b4438bfd8","dark":"https://mintcdn.com/instaview/srYC_WLR3UAwt0PY/logo/dark.svg?fit=max\u0026auto=format\u0026n=srYC_WLR3UAwt0PY\u0026q=85\u0026s=fbf32075feea3b5f404b1aef04c449ea"},"favicon":"https://mintcdn.com/instaview/srYC_WLR3UAwt0PY/favicon.svg?fit=max\u0026auto=format\u0026n=srYC_WLR3UAwt0PY\u0026q=85\u0026s=1499b591dcea46419afceafb5b77004e","api":{"playground":{}},"navbar":{"links":[{"href":"https://support.instaview.sk","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.instaview.sk"}},"footer":{"socials":{"github":"https://github.com/StarIC-s-r-o","linkedin":"https://www.linkedin.com/company/instaviewai"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"instaview","hasAudioNarration":false,"actualSubdomain":"instaview","customDomains":["docs.instaview.sk"],"gitSource":{"type":"github","owner":"staric-s-r-o","repo":"instaview","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb630a25769d6ebcdc21d7","collectionId":"9e3238e9-e795-4633-9eb1-2fa50fb2b100","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb630a25769d6ebcdc21d7"},"entitlements":{},"buildId":"6adb630a25769d6ebcdc21d7","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API Reference","count":75},{"language":"default","tag":"Documentation","count":20},{"language":"default","tag":"Changelog","count":13},{"language":"default","tag":"Runs","count":10},{"language":"default","tag":"2026","count":10},{"language":"default","tag":"Resources","count":9},{"language":"default","tag":"Agents","count":8},{"language":"default","tag":"Conversations","count":8},{"language":"default","tag":"Sourcing","count":8},{"language":"default","tag":"Webhooks","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/contacts/update-contact","slug":"/api-reference/contacts/update-contact","pageMetadata":{"title":"Update Contact","openapi":"PATCH /contacts/{id}","description":"Updates a contact that belongs to the API key's company. Only basic profile, reachability and status fields are supported.","href":"/api-reference/contacts/update-contact"},"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: \"Updates a contact that belongs to the API key’s company. Only basic profile, reachability and status fields are supported.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Heading,Info,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`PATCH /candidates/{id}`}),` is a permanent alias of this endpoint and keeps working unchanged, with the same scopes and the same response. See `,_jsx(_components.a,{href:`/api-reference/introduction#resource-names`,children:`Resource names`}),`.`]})}),`\n`,_jsx(_components.p,{children:`Updates an existing contact. Only the fields you send are changed; everything else is left alone.`}),`\n`,_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`A partial update, so you send the fields you want to change and nothing more. Use it to correct a phone number, move someone’s status, change their job assignments, or attach metadata.`}),`\n`,_jsx(Heading,{level:`2`,id:`use-cases`,children:`Use Cases`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Status updates`}),`: move a contact through your own process`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reachability`}),`: change email, phone number or name`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Gender override`}),`: set or clear it for accurate addressing on the call`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Job assignments`}),`: attach, replace or clear them`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Metadata`}),`: add or change your own opaque key-value pairs — not the same thing as `,_jsx(_components.a,{href:`/api-reference/contacts/update-contact`,children:`contact fields`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Refinement`}),`: fill the record in as you learn more`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`partial-updates`,children:`Partial Updates`}),`\n`,_jsx(_components.p,{children:`You can update any combination of fields:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`50`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`50`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Update only status`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"IN_PROCESS\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Update how to reach them`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"email\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"newemail@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"phoneNumber\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"+1987654321\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Assign to multiple jobs`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"jobIds\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"job-uuid-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"job-uuid-2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"job-uuid-3\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Remove all job assignments`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"jobIds\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Set gender explicitly`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"gender\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"female\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Clear gender (revert to auto-detection)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"gender\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Replace the work history`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"workHistory\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"companyName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Tech Corp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"candidatePosition\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Senior Software Engineer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"referenceName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Jane Smith\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"referencePhone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"+1234567890\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"startDate\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"2020-01-01\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`metadata`}),` is not readable by an agent.`]}),` It is your own scratch space — free-form,\nunvalidated, and never placed in a prompt. If you want a value an agent can `,_jsx(_components.em,{children:`say`}),`, it has to\nbe a `,_jsx(_components.strong,{children:`contact field`}),`: catalogued, typed, and addressable as `,_jsx(_components.code,{children:`{{contact.\u003ckey>}}`}),`. See\n`,_jsx(_components.a,{href:`/api-reference/contacts/update-contact`,children:`Update Contact`}),`.`]})}),`\n`,_jsxs(Info,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Sending `,_jsx(_components.code,{children:`metadata`}),` never disturbs the contact’s fields.`]}),` The two are stored separately, so\nreplacing `,_jsx(_components.code,{children:`metadata`}),` wholesale cannot reach the catalogued values: they survive the write\nuntouched, and the response shows them back to you under `,_jsx(_components.code,{children:`fields`}),`. A routine sync of your own\npayload cannot erase a value an agent depends on.`]}),_jsxs(_components.p,{children:[`It does not work as a back door either. Nothing on the `,_jsx(_components.code,{children:`metadata`}),` path checks a value against\nits field’s type, enum or reserved-key rules, and nothing reads a contact field out of it —\nwhatever you put there stays your own scratch space. `,_jsx(_components.code,{children:`fields`}),` below is the validated door, on\nthis endpoint and on `,_jsx(_components.a,{href:`/api-reference/contacts/create-contact`,children:_jsx(_components.code,{children:`POST /contacts`})}),`, and it answers\n`,_jsx(_components.code,{children:`422`}),` naming the key when a value does not fit.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`updating-field-values`,children:`Updating Field Values`}),`\n`,_jsxs(_components.p,{children:[`Send `,_jsx(_components.code,{children:`fields`}),` to change a contact’s catalogued values in the same request as anything else:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contacted\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order_number\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"SO-40129\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`]})})}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`fields`}),` merges; `,_jsx(_components.code,{children:`metadata`}),` replaces.`]}),` A key you omit keeps its value, and an explicit\n`,_jsx(_components.code,{children:`null`}),` clears one. The two behave differently in the same request body on purpose:\n`,_jsx(_components.code,{children:`metadata`}),` is one opaque document you own, `,_jsx(_components.code,{children:`fields`}),` are individually catalogued values.`]})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Change one value, leave every other alone`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order_number\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"SO-40129\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Clear one`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"renewal_date\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`\"fields\": null`}),` is not a wipe — it reads as “no values in this request” and is a no-op.\nClearing is per key, which is what stops a partial update from blanking a contact by accident.`]}),`\n`,_jsx(Heading,{level:`3`,id:`values-are-validated-against-the-catalog`,children:`Values are validated against the catalog`}),`\n`,_jsxs(_components.p,{children:[`Every value is checked against its field’s declared type, and an unknown key is refused. Both\nanswer `,_jsx(_components.code,{children:`422`}),` `,_jsx(_components.strong,{children:`naming the key`}),` — never a silent drop, because a caller who believes it wrote a\nvalue it did not is the worse outcome. `,_jsx(_components.code,{children:`422`}),` rather than `,_jsx(_components.code,{children:`400`}),`: the request is well formed, it\nis the catalog that rejects its contents.`]}),`\n`,_jsxs(_components.p,{children:[`Validation runs in the same transaction as the contact update, so a rejection applies\n`,_jsx(_components.strong,{children:`nothing`}),` — not the status, not the metadata, not the other values.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`The field is`}),_jsx(_components.th,{children:`Accepted`}),_jsx(_components.th,{children:`Refused`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`string`})}),_jsx(_components.td,{children:`any text (trimmed)`}),_jsx(_components.td,{children:`an object`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`number`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`42`}),`, `,_jsx(_components.code,{children:`\"42\"`}),`, `,_jsx(_components.code,{children:`\"-7.5\"`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`\"twelve\"`}),`, `,_jsx(_components.code,{children:`\"12abc\"`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bool`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),`, `,_jsx(_components.code,{children:`\"true\"`}),`, `,_jsx(_components.code,{children:`\"yes\"`}),`, `,_jsx(_components.code,{children:`\"1\"`}),` and negatives`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\"maybe\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`date`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`\"2026-04-20\"`}),`, any parseable date`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\"not a date\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`enum`})}),_jsxs(_components.td,{children:[`one of the field’s `,_jsx(_components.code,{children:`enumOptions`})]}),_jsx(_components.td,{children:`anything else — the error lists the options`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`tags`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`[\"vip\",\"renewal\"]`}),`, `,_jsx(_components.strong,{children:`or`}),` `,_jsx(_components.code,{children:`\"vip, renewal\"`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`42`}),`, `,_jsx(_components.code,{children:`true`}),`, an object`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Reserved and read-only keys are refused too: `,_jsx(_components.code,{children:`first_name`}),`, `,_jsx(_components.code,{children:`email`}),` and the rest are set as the\ncontact’s own properties above, and `,_jsx(_components.code,{children:`company_description`}),` and `,_jsx(_components.code,{children:`agent_name`}),` resolve from your\ncompany and your agent, so a value stored under them would be shadowed on every call.`]}),`\n`,_jsxs(Heading,{level:`3`,id:`tags-takes-two-shapes`,children:[_jsx(_components.code,{children:`tags`}),` takes two shapes`]}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`tags`}),` field stores a `,_jsx(_components.code,{children:`string[]`}),` and accepts either the array or `,_jsx(_components.strong,{children:`one comma-separated\nstring`}),` — so a single CSV cell holding several tags maps onto one field without your side\nsplitting it first. The two are equivalent:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tags\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vip\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"renewal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] } }`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Same result`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tags\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"vip, renewal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Entries are trimmed, blanks are dropped (`,_jsx(_components.code,{children:`\"vip,, renewal,\"`}),` is two tags) and duplicates are\nremoved case-insensitively, keeping the spelling that came first — `,_jsx(_components.code,{children:`[\"VIP\",\"vip\"]`}),` stores\n`,_jsx(_components.code,{children:`[\"VIP\"]`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`A comma is always a separator, so a tag cannot contain one.`}),` That holds inside an array\nelement too: `,_jsx(_components.code,{children:`[\"north, east\"]`}),` stores two tags, exactly as `,_jsx(_components.code,{children:`\"north, east\"`}),` does. The two\nshapes would otherwise mean different things, and a value edited in the dashboard — which\nrenders the list as one comma-joined line — would split on the next save with no warning.`]})}),`\n`,_jsxs(_components.p,{children:[`Bounded, because these are stored on the contact and read on every call: at most `,_jsx(_components.strong,{children:`50 tags`}),`,\n`,_jsx(_components.strong,{children:`60 characters`}),` per tag, and `,_jsx(_components.strong,{children:`2000 characters`}),` of raw tag text per request. Each is a `,_jsx(_components.code,{children:`422`}),`\nnaming the limit.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`An empty list is the erase.`}),` `,_jsx(_components.code,{children:`[]`}),`, `,_jsx(_components.code,{children:`[\"\"]`}),` and `,_jsx(_components.code,{children:`\",\"`}),` all say the contact has no tags, so\nthey clear the field exactly as `,_jsx(_components.code,{children:`null`}),` and `,_jsx(_components.code,{children:`\"\"`}),` do — you never get a key present with an\nempty array behind it.`]})}),`\n`,_jsxs(_components.p,{children:[`What it will not do is guess: a number, a boolean or an object is a `,_jsx(_components.code,{children:`422`}),` rather than a\none-element list, because a caller sending `,_jsx(_components.code,{children:`42`}),` for a tags field has a mapping bug and a\nsilent `,_jsx(_components.code,{children:`[\"42\"]`}),` would be spoken on a call.`]}),`\n`,_jsx(Heading,{level:`3`,id:`createmissingfields=true`,children:_jsx(_components.code,{children:`?createMissingFields=true`})}),`\n`,_jsxs(_components.p,{children:[`Off by default. When passed, a key in `,_jsx(_components.code,{children:`fields`}),` that your catalog does not know yet is\n`,_jsx(_components.strong,{children:`defined for you`}),` as a `,_jsx(_components.code,{children:`string`}),` field, instead of the request being rejected.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PATCH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` /`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`createMissingFields`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"warranty_ref\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"W-9921\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// warranty_ref now exists in your catalog, labelled \"Warranty ref\"`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`It works the same way on `,_jsx(_components.a,{href:`/api-reference/contacts/create-contact`,children:_jsx(_components.code,{children:`POST /contacts`})}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`A typo becomes a permanent field.`}),` `,_jsx(_components.code,{children:`oder_number`}),` creates `,_jsx(_components.code,{children:`oder_number`}),`, visible in every\nagent’s variable palette until somebody deletes it. That is why the option is opt-in per\nrequest rather than a mode you can leave on.`]})}),`\n`,_jsx(_components.p,{children:`Two things to know:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`It needs no extra scope.`}),` The same `,_jsx(_components.code,{children:`write:contacts`}),` that lets you define a field\nexplicitly lets you define one implicitly. What it will still never do is quietly ignore an\nunknown key you did not ask it to create.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`The field is always `,_jsx(_components.code,{children:`string`}),`.`]}),` The value is the only evidence available and it is a poor\none: `,_jsx(_components.code,{children:`\"1\"`}),` could be a number, a boolean or an order reference, and a wrong guess becomes\nvalidation that rejects your next row.\n`,_jsx(_components.a,{href:`/api-reference/contact-fields/update-contact-field`,children:_jsx(_components.code,{children:`PATCH /contact-fields/{id}`})}),` retypes it\nafterwards. Reserved keys, malformed keys and a company already at its field ceiling are all\nstill refused.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For anything you control, define the fields explicitly with\n`,_jsx(_components.a,{href:`/api-reference/contact-fields/create-contact-field`,children:_jsx(_components.code,{children:`POST /contact-fields`})}),` — you get the right\ntype and label, and a typo fails loudly.`]}),`\n`,_jsx(Heading,{level:`2`,id:`managing-job-assignments`,children:`Managing Job Assignments`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`jobIds`}),` sets which jobs a contact is associated with. It `,_jsx(_components.strong,{children:`replaces`}),` the array rather than adding to it:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`21`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Assign the contact to several jobs`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` updateContact`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contact-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jobIds:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"job-1-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"job-2-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"job-3-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Add one to the existing assignments`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Note: fetch current state first, since PATCH replaces the whole jobIds array`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` contact`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getContact`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contact-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` updateContact`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contact-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jobIds:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contact`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`jobIds`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"new-job-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Replace every assignment with one job`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` updateContact`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contact-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jobIds:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"only-this-job-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Remove every job assignment`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` updateContact`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contact-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jobIds:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Job validation`}),`: every id in `,_jsx(_components.code,{children:`jobIds`}),` must name an existing job belonging to your API key’s\ncompany. An unknown id is a validation error, not a silent omission.`]})}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Concurrent `,_jsx(_components.code,{children:`jobIds`}),` updates lose assignments.`]}),` Because the field replaces the array, adding\none job is a read-modify-write, and the endpoint offers no precondition to make that safe — no\n`,_jsx(_components.code,{children:`If-Match`}),`, no version field. Two requests that both read `,_jsx(_components.code,{children:`[\"job-1\"]`}),` and each append their own\njob leave the contact with whichever wrote last, and the other assignment is gone. It is not\nreported: both calls answer `,_jsx(_components.code,{children:`200`}),`.`]}),_jsxs(_components.p,{children:[`Serialise `,_jsx(_components.code,{children:`jobIds`}),` writes for a given contact — a queue or a lock of your own, keyed on the\ncontact id — rather than issuing them in parallel from several workers. Fields that are not\nread-modify-write (`,_jsx(_components.code,{children:`email`}),`, `,_jsx(_components.code,{children:`status`}),`, `,_jsx(_components.code,{children:`metadata`}),`) do not have this problem.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`status-values`,children:`Status Values`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`status`}),` is one of:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`UNDEFINED`})}),_jsx(_components.td,{children:`No status set`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`APPLIED`})}),_jsx(_components.td,{children:`The starting point for an inbound contact`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`IN_PROCESS`})}),_jsx(_components.td,{children:`Somewhere in your process`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REJECTED`})}),_jsx(_components.td,{children:`Closed out unsuccessfully`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ACCEPTED`})}),_jsx(_components.td,{children:`Closed out successfully`})]})]})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The names are hiring-flavoured because they predate the neutral vocabulary, and they are the\nvalues the API accepts, so they are unchanged. Sending anything else is a `,_jsx(_components.code,{children:`400`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`company-isolation`,children:`Company Isolation`}),`\n`,_jsx(_components.p,{children:`You can only update contacts belonging to your API key’s company. Ownership is validated before anything is written.`}),`\n`,_jsx(Heading,{level:`2`,id:`error-scenarios`,children:`Error Scenarios`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`404 Not Found`}),`: the contact does not exist, or has been deleted`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`403 Forbidden`}),`: the contact belongs to a different company, or a `,_jsx(_components.code,{children:`jobIds`}),` entry names another company’s job`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`400 Bad Request`}),`: invalid field values, or a `,_jsx(_components.code,{children:`jobIds`}),` entry naming no job at all`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`related-resources`,children:`Related Resources`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Contacts Resource Guide`,icon:`user`,href:`/guides/resources/contacts`,children:_jsx(_components.p,{children:`Learn about managing contacts and their status workflow`})}),_jsx(Card,{title:`Get Contact`,icon:`eye`,href:`/api-reference/contacts/get-contact`,children:_jsx(_components.p,{children:`Read the current state first`})}),_jsx(Card,{title:`Create Contact`,icon:`plus`,href:`/api-reference/contacts/create-contact`,children:_jsx(_components.p,{children:`Create a new contact`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update Contact","openapi":"PATCH /contacts/{id}","description":"Updates a contact that belongs to the API key's company. Only basic profile, reachability and status fields are supported.","href":"/api-reference/contacts/update-contact"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Use Cases","slug":"use-cases","depth":2,"children":[]},{"title":"Partial Updates","slug":"partial-updates","depth":2,"children":[]},{"title":"Updating Field Values","slug":"updating-field-values","depth":2,"children":[{"title":"Values are validated against the catalog","slug":"values-are-validated-against-the-catalog","depth":3,"children":[]},{"title":"tags takes two shapes","slug":"tags-takes-two-shapes","depth":3,"children":[]},{"title":"?createMissingFields=true","slug":"createmissingfields=true","depth":3,"children":[]}]},{"title":"Managing Job Assignments","slug":"managing-job-assignments","depth":2,"children":[]},{"title":"Status Values","slug":"status-values","depth":2,"children":[]},{"title":"Company Isolation","slug":"company-isolation","depth":2,"children":[]},{"title":"Error Scenarios","slug":"error-scenarios","depth":2,"children":[]},{"title":"Related Resources","slug":"related-resources","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Updates a contact that belongs to the API key's company. Only basic profile, reachability and status fields are supported.","operationId":"PublicCandidatesController_updateCandidate_v1","parameters":["c5505f2a-ef9c-496f-ba2c-c4a303ec5384","1b4ffd2e-30ff-415f-9dc2-6f1202e57471","227fb2a8-7f54-4293-aebc-9ef04845b9fc"],"requestBody":"99dfb1bf-01a7-4456-8c00-68b19be2dc57","responses":{"200":"1ce94367-d64f-40fc-93f2-d845ed71dada"},"security":["028bec7d-a16f-42dc-a3b9-2a528ff501d2"],"summary":"Update contact","tags":["Contacts"],"method":"patch","type":"path","servers":["fefe9da2-a252-4644-8424-0eaff357a7a8"],"path":"/contacts/{id}","baseUrlOptions":["https://api.instaview.sk"],"title":"Update contact","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c5505f2a-ef9c-496f-ba2c-c4a303ec5384":{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}},"1b4ffd2e-30ff-415f-9dc2-6f1202e57471":{"name":"companyId","required":false,"in":"query","description":"Required for ATS API keys to specify which company to access. Ignored for standard company API keys.","schema":{"type":"string","isRequired":false,"description":"Required for ATS API keys to specify which company to access. Ignored for standard company API keys.","uniqueKey":"","typeLabel":"string"}},"227fb2a8-7f54-4293-aebc-9ef04845b9fc":{"name":"createMissingFields","required":false,"in":"query","description":"Define any key in `fields` that your catalog does not know yet, as a STRING field, instead of rejecting the request. Off by default, because a typo would otherwise become a permanent field in your catalog — visible in every agent's variable palette until somebody deletes it. A key the platform reserves, a malformed key, and a company already at its field ceiling are all still refused.","schema":{"type":"boolean","default":false,"isRequired":false,"description":"Define any key in `fields` that your catalog does not know yet, as a STRING field, instead of rejecting the request. Off by default, because a typo would otherwise become a permanent field in your catalog — visible in every agent's variable palette until somebody deletes it. A key the platform reserves, a malformed key, and a company already at its field ceiling are all still refused.","uniqueKey":"","typeLabel":"boolean"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","description":"The contact's first name","example":"John","minLength":1,"maxLength":100,"uniqueKey":"firstName","typeLabel":"string"},"lastName":{"type":"string","description":"The contact's last name","example":"Doe","minLength":1,"maxLength":100,"uniqueKey":"lastName","typeLabel":"string"},"email":{"type":"string","description":"The contact's email address","example":"john.doe@example.com","uniqueKey":"email","typeLabel":"string"},"phoneNumber":{"type":"string","description":"The contact's phone number in E.164 format","example":"+421901234567","pattern":"^\\+[1-9]\\d{1,14}$","uniqueKey":"phoneNumber","typeLabel":"string"},"gdprExpiryDate":{"type":"string","description":"GDPR expiry date in ISO 8601 format (must be in the future)","example":"2026-11-16","format":"date","uniqueKey":"gdprExpiryDate","typeLabel":"string\u003cdate>"},"status":{"type":"string","description":"Contact status","enum":["UNDEFINED","APPLIED","IN_PROCESS","REJECTED","ACCEPTED"],"example":"IN_PROCESS","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"jobIds":{"description":"Array of job IDs to assign the contact to (replaces existing assignments)","example":["123e4567-e89b-12d3-a456-426614174000","987e6543-e21b-12d3-a456-426614174001"],"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"jobIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"uniqueKey":"jobIds","typeLabel":"string\u003cuuid>[]"},"metadata":{"type":"object","description":"Custom metadata (replaces existing metadata, max 10KB, 5 levels deep, 50 keys)","example":{"source":"LinkedIn","referredBy":"John Smith"},"uniqueKey":"metadata","typeLabel":"object"},"fields":{"type":"object","description":"Catalogued field values, keyed by catalog key. MERGED key by key, unlike `metadata` which replaces: a key you omit keeps its value, and an explicit `null` clears one. Validated against each field's declared type, so an unknown key or a wrong-typed value is a 422 naming it, and the whole request is rolled back.","additionalProperties":true,"example":{"order_number":"SO-40129","renewal_date":null},"uniqueKey":"fields","typeLabel":"object"},"gender":{"oneOf":[{"type":"string","description":"The contact's gender. Set to 'male' or 'female' to override auto-detection, or null to clear and revert to auto-detection.","enum":["male","female"],"example":"female","uniqueKey":"gender.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The contact's gender. Set to 'male' or 'female' to override auto-detection, or null to clear and revert to auto-detection.","enum":["male","female"],"example":"female","uniqueKey":"gender.oneOf.1","typeLabel":"null"}],"uniqueKey":"gender","typeLabel":"enum\u003cstring> | null"},"cvText":{"type":"string","description":"The contact's CV in plain text. This will be automatically anonymized.","example":"Jane Doe\nSoftware Engineer\nExperience: ...","maxLength":50000,"uniqueKey":"cvText","typeLabel":"string"},"workHistory":{"type":"array","description":"Optional work history items for the contact (replaces the existing ones).","maxItems":20,"items":{"type":"object","properties":{"companyName":{"type":"string","description":"Name of the employer company","example":"Google","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"workHistory.items.[INDEX].companyName","typeLabel":"string"},"candidatePosition":{"type":"string","description":"The role held at that company. Keeps its original field name, which is the name the API accepts.","example":"Software Engineer","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"workHistory.items.[INDEX].candidatePosition","typeLabel":"string"},"referencePhone":{"type":"string","description":"Phone number of reference contact in E.164 format","example":"+1987654321","pattern":"^\\+[1-9]\\d{1,14}$","isRequired":true,"uniqueKey":"workHistory.items.[INDEX].referencePhone","typeLabel":"string"},"id":{"type":"string","description":"Work history item ID","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","uniqueKey":"workHistory.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"referenceName":{"type":"string","description":"Name of the reference person","example":"Jane Smith","maxLength":255,"uniqueKey":"workHistory.items.[INDEX].referenceName","typeLabel":"string"},"startDate":{"type":"string","description":"Job start date in calendar format (yyyy-MM-dd)","example":"2020-01-01","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"workHistory.items.[INDEX].startDate","typeLabel":"string\u003cdate>"},"endDate":{"type":"string","description":"Job end date in calendar format (yyyy-MM-dd)","example":"2022-12-31","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"workHistory.items.[INDEX].endDate","typeLabel":"string\u003cdate>"}},"required":["companyName","candidatePosition","referencePhone"],"uniqueKey":"workHistory.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workHistory","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"firstName":"John","lastName":"Doe","email":"john.doe@example.com","phoneNumber":"+421901234567","gdprExpiryDate":"2026-11-16","status":"IN_PROCESS","jobIds":["123e4567-e89b-12d3-a456-426614174000","987e6543-e21b-12d3-a456-426614174001"],"metadata":{"source":"LinkedIn","referredBy":"John Smith"},"fields":{"order_number":"SO-40129","renewal_date":null},"gender":"female","cvText":"Jane Doe\nSoftware Engineer\nExperience: ...","workHistory":[{"companyName":"Google","candidatePosition":"Software Engineer","referencePhone":"+1987654321","id":"123e4567-e89b-12d3-a456-426614174000","referenceName":"Jane Smith","startDate":"2020-01-01","endDate":"2022-12-31"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"1ce94367-d64f-40fc-93f2-d845ed71dada":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Contact ID","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"firstName":{"type":"string","description":"The contact's first name","example":"John","isRequired":true,"uniqueKey":"firstName","typeLabel":"string"},"lastName":{"type":"string","description":"The contact's last name","example":"Doe","isRequired":true,"uniqueKey":"lastName","typeLabel":"string"},"status":{"type":"string","description":"Contact status","enum":["UNDEFINED","APPLIED","IN_PROCESS","REJECTED","ACCEPTED"],"example":"APPLIED","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"fields":{"type":"object","description":"The contact's catalogued field values, keyed by field key — the counterpart of `metadata`, and the only half an agent can speak. Each key is defined in the company catalog (`GET /contact-fields`) and addressable in a flow as `{{contact.\u003ckey>}}`. Written through `fields` on `POST /contacts` and `PATCH /contacts/{id}`, never through `metadata`. A field with no value is absent rather than null; `{}` means none are set.","example":{"order_number":"SO-40128","is_vip":true,"renewal_date":"2026-04-01"},"additionalProperties":true,"isRequired":true,"uniqueKey":"fields","typeLabel":"object"},"createdAt":{"type":"string","description":"Created timestamp (UTC)","example":"2025-11-20T10:30:00Z","format":"date-time","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","description":"Updated timestamp (UTC)","example":"2025-11-20T10:30:00Z","format":"date-time","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string\u003cdate-time>"},"jobId":{"type":"string","description":"[Deprecated] Single job ID; use jobIds instead.","deprecated":true,"example":"987e6543-e21b-12d3-a456-426614174000","uniqueKey":"jobId","typeLabel":"string"},"jobIds":{"type":"array","description":"Jobs the contact is assigned to.","items":{"type":"string","format":"uuid","uniqueKey":"jobIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"uniqueItems":true,"maxItems":50,"uniqueKey":"jobIds","typeLabel":"string\u003cuuid>[]"},"email":{"type":"string","description":"The contact's email address","example":"john.doe@example.com","uniqueKey":"email","typeLabel":"string"},"phoneNumber":{"type":"string","description":"The contact's phone number","example":"+421915123456","uniqueKey":"phoneNumber","typeLabel":"string"},"gdprExpiryDate":{"type":"string","description":"GDPR expiry date. Currently returned as a date (no time). NOTE: We plan to migrate to a timestamp with timezone (timestamptz) for global correctness.","example":"2026-11-16","format":"date","uniqueKey":"gdprExpiryDate","typeLabel":"string\u003cdate>"},"overallRating":{"type":"number","description":"Overall rating/match score (0-100)","example":85,"minimum":0,"maximum":100,"uniqueKey":"overallRating","typeLabel":"number"},"metadata":{"type":"object","description":"Your own scratch space on the contact: free-form, unvalidated, and never read by an agent. Replaced wholesale on update. Not the place for values you want an agent to say — those are `fields`.","example":{"source":"LinkedIn","externalId":"CAND-12345"},"uniqueKey":"metadata","typeLabel":"object"},"analysisCount":{"type":"number","description":"Number of analyses for this contact. Not currently populated by any endpoint — treat as absent.","example":2,"uniqueKey":"analysisCount","typeLabel":"number"},"interviewCount":{"type":"number","description":"Number of conversations for this contact. Keeps its original field name, and is not currently populated by any endpoint — treat as absent.","example":3,"uniqueKey":"interviewCount","typeLabel":"number"},"links":{"type":"object","description":"Convenience links to related collections. Endpoints may be added incrementally.","example":{"analyses":"/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/analyses","interviews":"/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/conversations"},"uniqueKey":"links","typeLabel":"object"},"gender":{"oneOf":[{"type":"string","description":"The contact's gender. Used for gender-aware addressing on the call. Null if not explicitly set (auto-detected from the name).","enum":["male","female"],"example":"female","uniqueKey":"gender.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The contact's gender. Used for gender-aware addressing on the call. Null if not explicitly set (auto-detected from the name).","enum":["male","female"],"example":"female","uniqueKey":"gender.oneOf.1","typeLabel":"null"}],"uniqueKey":"gender","typeLabel":"enum\u003cstring> | null"},"anonymizedCvText":{"type":"string","description":"The contact's anonymized CV in plain text.","example":"[NAME]\nSoftware Engineer\nExperience: ...","uniqueKey":"anonymizedCvText","typeLabel":"string"},"workHistory":{"type":"array","description":"Work history items for the contact.","maxItems":20,"items":{"type":"object","properties":{"companyName":{"type":"string","description":"Name of the employer company","example":"Google","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"workHistory.items.[INDEX].companyName","typeLabel":"string"},"candidatePosition":{"type":"string","description":"The role held at that company. Keeps its original field name, which is the name the API accepts.","example":"Software Engineer","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"workHistory.items.[INDEX].candidatePosition","typeLabel":"string"},"referencePhone":{"type":"string","description":"Phone number of reference contact in E.164 format","example":"+1987654321","pattern":"^\\+[1-9]\\d{1,14}$","isRequired":true,"uniqueKey":"workHistory.items.[INDEX].referencePhone","typeLabel":"string"},"id":{"type":"string","description":"Work history item ID","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","uniqueKey":"workHistory.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"referenceName":{"type":"string","description":"Name of the reference person","example":"Jane Smith","maxLength":255,"uniqueKey":"workHistory.items.[INDEX].referenceName","typeLabel":"string"},"startDate":{"type":"string","description":"Job start date in calendar format (yyyy-MM-dd)","example":"2020-01-01","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"workHistory.items.[INDEX].startDate","typeLabel":"string\u003cdate>"},"endDate":{"type":"string","description":"Job end date in calendar format (yyyy-MM-dd)","example":"2022-12-31","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"workHistory.items.[INDEX].endDate","typeLabel":"string\u003cdate>"}},"required":["companyName","candidatePosition","referencePhone"],"uniqueKey":"workHistory.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workHistory","typeLabel":"object[]"}},"required":["id","firstName","lastName","status","fields","createdAt","updatedAt"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"123e4567-e89b-12d3-a456-426614174000","firstName":"John","lastName":"Doe","status":"APPLIED","fields":{"order_number":"SO-40128","is_vip":true,"renewal_date":"2026-04-01"},"createdAt":"2025-11-20T10:30:00Z","updatedAt":"2025-11-20T10:30:00Z","jobId":"987e6543-e21b-12d3-a456-426614174000","jobIds":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"email":"john.doe@example.com","phoneNumber":"+421915123456","gdprExpiryDate":"2026-11-16","overallRating":85,"metadata":{"source":"LinkedIn","externalId":"CAND-12345"},"analysisCount":2,"interviewCount":3,"links":{"analyses":"/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/analyses","interviews":"/v1/public/contacts/123e4567-e89b-12d3-a456-426614174000/conversations"},"gender":"female","anonymizedCvText":"[NAME]\nSoftware Engineer\nExperience: ...","workHistory":[{"companyName":"Google","candidatePosition":"Software Engineer","referencePhone":"+1987654321","id":"123e4567-e89b-12d3-a456-426614174000","referenceName":"Jane Smith","startDate":"2020-01-01","endDate":"2022-12-31"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"028bec7d-a16f-42dc-a3b9-2a528ff501d2":{"bearer":{"type":"http","scheme":"bearer","description":"API key for authentication using Bearer scheme","scopes":[],"schemeName":"bearer"}}},"servers":{"fefe9da2-a252-4644-8424-0eaff357a7a8":{"url":"https://api.instaview.sk","description":"Production API Gateway"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key for authentication using Bearer scheme","scopes":[],"schemeName":"bearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key for authentication using Bearer scheme","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer","name":"Authorization"}],"title":"bearer"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"instaview","siteName":"InstaView API","title":"Update Contact - InstaView API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-06T20:17:57.344Z","originalFileLocation":"api-reference/contacts/update-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=\"Updates a contact that belongs to the API key\u0026#x27;s company. Only basic profile, reachability and status fields are supported.\">\u003cmeta data-mint-head name=\"application-name\" content=\"InstaView API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_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/instaview/FzS1-dDCztzdlzmX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update Contact - InstaView API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Updates a contact that belongs to the API key\u0026#x27;s company. Only basic profile, reachability and status fields are supported.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InstaView API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.instaview.sk/api-reference/contacts/update-contact\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://instaview.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Update+Contact\u0026amp;description=Updates+a+contact+that+belongs+to+the+API+key%27s+company.+Only+basic+profile%2C+reachability+and+status+fields+are+supported.\u0026amp;theme=1444b1b95306a409923bc3c0\u0026amp;signature=60790771dec9604bfc6c0429484cf0b50a1a75430dd3d122eddfda8040403d85\">\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=\"Update Contact - InstaView API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Updates a contact that belongs to the API key\u0026#x27;s company. Only basic profile, reachability and status fields are supported.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://instaview.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Update+Contact\u0026amp;description=Updates+a+contact+that+belongs+to+the+API+key%27s+company.+Only+basic+profile%2C+reachability+and+status+fields+are+supported.\u0026amp;theme=1444b1b95306a409923bc3c0\u0026amp;signature=60790771dec9604bfc6c0429484cf0b50a1a75430dd3d122eddfda8040403d85\">\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/instaview/FzS1-dDCztzdlzmX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"InstaView API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2741F9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.instaview.sk/api-reference/contacts/update-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/update-contact.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.instaview.sk/#organization\",\"name\":\"InstaView API\",\"url\":\"https://docs.instaview.sk\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/instaview/srYC_WLR3UAwt0PY/logo/light.svg?fit=max\u0026auto=format\u0026n=srYC_WLR3UAwt0PY\u0026q=85\u0026s=a941bc948e20b3503a55e49b4438bfd8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.instaview.sk#website\",\"name\":\"InstaView API\",\"url\":\"https://docs.instaview.sk\",\"publisher\":{\"@id\":\"https://docs.instaview.sk/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.instaview.sk/api-reference/contacts/update-contact#webpage\",\"url\":\"https://docs.instaview.sk/api-reference/contacts/update-contact\",\"name\":\"Update Contact\",\"description\":\"Updates a contact that belongs to the API key's company. Only basic profile, reachability and status fields are supported.\",\"dateModified\":\"2026-09-06T20:17:57.344Z\",\"isPartOf\":{\"@id\":\"https://docs.instaview.sk#website\"},\"breadcrumb\":{\"@id\":\"https://docs.instaview.sk/api-reference/contacts/update-contact#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.instaview.sk/api-reference/contacts/update-contact#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Contacts\",\"item\":\"https://docs.instaview.sk/api-reference/contacts/list-contacts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update Contact\",\"item\":\"https://docs.instaview.sk/api-reference/contacts/update-contact\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.instaview.sk/api-reference/contacts/update-contact#apireference\",\"headline\":\"Update Contact\",\"name\":\"Update Contact\",\"description\":\"Updates a contact that belongs to the API key's company. Only basic profile, reachability and status fields are supported.\",\"url\":\"https://docs.instaview.sk/api-reference/contacts/update-contact\",\"mainEntityOfPage\":{\"@id\":\"https://docs.instaview.sk/api-reference/contacts/update-contact#webpage\"},\"dateModified\":\"2026-09-06T20:17:57.344Z\",\"publisher\":{\"@id\":\"https://docs.instaview.sk/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.instaview.sk#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"InstaView API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"InstaView API","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Overview","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"group":"Agents","pages":[{"title":"List Agents","openapi":"GET /agents","href":"/api-reference/agents/list-agents"},{"title":"Design an Agent","openapi":"POST /agents/composer","href":"/api-reference/agents/compose-agent"},{"title":"Refine a Composed Agent","openapi":"POST /agents/composer/{sessionId}/messages","href":"/api-reference/agents/refine-agent"},{"title":"Poll a Composer Session","openapi":"GET /agents/composer/{sessionId}","href":"/api-reference/agents/get-composer-session"},{"title":"Create Agent","openapi":"POST /agents","href":"/api-reference/agents/create-agent"},{"title":"Get Agent","openapi":"GET /agents/{id}","href":"/api-reference/agents/get-agent"},{"title":"Update Agent","openapi":"PATCH /agents/{id}","href":"/api-reference/agents/update-agent"},{"title":"Delete Agent","openapi":"DELETE /agents/{id}","href":"/api-reference/agents/delete-agent"}]},{"group":"Agent Knowledge Base","pages":[{"title":"List Knowledge Documents","openapi":"GET /agents/{id}/knowledge","href":"/api-reference/agents/knowledge/list-knowledge"},{"title":"Start Knowledge Upload","openapi":"POST /agents/{id}/knowledge","href":"/api-reference/agents/knowledge/start-upload"},{"title":"Complete Knowledge Upload","openapi":"POST /agents/{id}/knowledge/{documentId}/complete","href":"/api-reference/agents/knowledge/complete-upload"},{"title":"Update Knowledge Document","openapi":"PATCH /agents/{id}/knowledge/{documentId}","href":"/api-reference/agents/knowledge/update-knowledge"},{"title":"Delete Knowledge Document","openapi":"DELETE /agents/{id}/knowledge/{documentId}","href":"/api-reference/agents/knowledge/delete-knowledge"}]},{"group":"Jobs","pages":[{"title":"List Jobs","openapi":"GET /jobs","href":"/api-reference/jobs/list-jobs"},{"title":"Create Job","openapi":"POST /jobs","href":"/api-reference/jobs/create-job"},{"title":"Create Job from URL","openapi":"POST /jobs/url","href":"/api-reference/jobs/create-job-from-url"},{"title":"Get Job","openapi":"GET /jobs/{id}","href":"/api-reference/jobs/get-job"},{"title":"Update Job","openapi":"PATCH /jobs/{id}","href":"/api-reference/jobs/update-job"},{"title":"Delete Job","openapi":"DELETE /jobs/{id}","href":"/api-reference/jobs/delete-job"}]},{"group":"Contacts","pages":[{"title":"List Contacts","openapi":"GET /contacts","href":"/api-reference/contacts/list-contacts"},{"title":"Create Contact","openapi":"POST /contacts","href":"/api-reference/contacts/create-contact"},{"title":"Get Contact","openapi":"GET /contacts/{id}","description":"Returns a single contact, ensuring the contact (and any job associations) belong to the API key's company.","href":"/api-reference/contacts/get-contact"},{"title":"Update Contact","openapi":"PATCH /contacts/{id}","href":"/api-reference/contacts/update-contact"},{"title":"Delete Contact","openapi":"DELETE /contacts/{id}","description":"Permanently deletes a contact that belongs to the API key's company, whether or not it holds job assignments. The delete cascades: every conversation the contact had, with its transcripts, recordings and analyses, is deleted too. This cannot be undone.","href":"/api-reference/contacts/delete-contact"}]},{"group":"Contact Documents","pages":[{"title":"List Contact Documents","openapi":"GET /contacts/{id}/documents","href":"/api-reference/contacts/documents/list-documents"},{"title":"Start Contact Document Upload","openapi":"POST /contacts/{id}/documents/uploads","href":"/api-reference/contacts/documents/start-upload"},{"title":"Complete Contact Document Upload","openapi":"POST /contacts/{id}/documents/{documentId}/complete","href":"/api-reference/contacts/documents/complete-upload"},{"title":"Update Contact Document","openapi":"PATCH /contacts/{id}/documents/{documentId}","href":"/api-reference/contacts/documents/update-document"},{"title":"Delete Contact Document","openapi":"DELETE /contacts/{id}/documents/{documentId}","href":"/api-reference/contacts/documents/delete-document"}]},{"group":"Contact Fields","pages":[{"title":"List Contact Fields","openapi":"GET /contact-fields","href":"/api-reference/contact-fields/list-contact-fields"},{"title":"Create Contact Field","openapi":"POST /contact-fields","href":"/api-reference/contact-fields/create-contact-field"},{"title":"Update Contact Field","openapi":"PATCH /contact-fields/{id}","href":"/api-reference/contact-fields/update-contact-field"},{"title":"Delete Contact Field","openapi":"DELETE /contact-fields/{id}","href":"/api-reference/contact-fields/delete-contact-field"}]},{"group":"Companies","pages":[{"title":"List Companies","openapi":"GET /company","href":"/api-reference/companies/list-companies"},{"title":"Create Company","openapi":"POST /company","href":"/api-reference/companies/create-company"},{"title":"Get Company","openapi":"GET /company/{id}","href":"/api-reference/companies/get-company"},{"title":"Update Company","openapi":"PATCH /company/{id}","href":"/api-reference/companies/update-company"},{"title":"Delete Company","openapi":"DELETE /company/{id}","href":"/api-reference/companies/delete-company"}]},{"group":"Conversations","pages":[{"title":"List Conversations","openapi":"GET /conversations","href":"/api-reference/conversations/list-conversations"},{"title":"Create Conversation","openapi":"POST /conversations","href":"/api-reference/conversations/create-conversation"},{"title":"Get Conversation","openapi":"GET /conversations/{id}","href":"/api-reference/conversations/get-conversation"},{"title":"Get Conversation Analysis PDF","openapi":"GET /conversations/{id}/analysis-pdf","href":"/api-reference/conversations/get-conversation-analysis-pdf"},{"title":"Invoke New Call Attempt","openapi":"POST /conversations/{id}/call-attempts","href":"/api-reference/conversations/invoke-call-attempt"},{"title":"Reschedule Call Attempt","openapi":"PATCH /conversations/{id}/call-attempts/{attemptId}","href":"/api-reference/conversations/reschedule-call-attempt"},{"title":"Delete Call Attempt","openapi":"DELETE /conversations/{id}/call-attempts/{attemptId}","href":"/api-reference/conversations/delete-call-attempt"},{"title":"Delete Conversation","openapi":"DELETE /conversations/{id}","href":"/api-reference/conversations/delete-conversation"}]},{"group":"Runs","pages":[{"title":"Create Run","openapi":"POST /runs","href":"/api-reference/runs/create-run"},{"title":"Get Run","openapi":"GET /runs/{id}","href":"/api-reference/runs/get-run"},{"title":"List Run Conversations","openapi":"GET /runs/{id}/conversations","href":"/api-reference/runs/list-run-conversations"},{"title":"Attach Contacts","openapi":"POST /runs/{id}/contacts","href":"/api-reference/runs/attach-run-contacts"},{"title":"Detach Contact","openapi":"DELETE /runs/{id}/contacts/{contactId}","href":"/api-reference/runs/detach-run-contact"},{"title":"Launch Run","openapi":"POST /runs/{id}/launch","href":"/api-reference/runs/launch-run"},{"title":"Pause Run","openapi":"POST /runs/{id}/pause","href":"/api-reference/runs/pause-run"},{"title":"Resume Run","openapi":"POST /runs/{id}/resume","href":"/api-reference/runs/resume-run"},{"title":"Cancel Run","openapi":"POST /runs/{id}/cancel","href":"/api-reference/runs/cancel-run"},{"title":"Delete Run","openapi":"DELETE /runs/{id}","href":"/api-reference/runs/delete-run"}]},{"group":"Billing","pages":[{"title":"Get Usage Statistics","openapi":"GET /billing/usage","href":"/api-reference/billing/get-usage"}]},{"group":"Voice","pages":[{"title":"Generate Audio","openapi":"POST /voice","href":"/api-reference/voice/generate-audio"}]},{"group":"Webhooks","pages":[{"title":"List Webhooks","api":"GET /webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Create Webhook","api":"POST /webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"Get Webhook","api":"GET /webhooks/{id}","href":"/api-reference/webhooks/get-webhook"},{"title":"Update Webhook","api":"PATCH /webhooks/{id}","href":"/api-reference/webhooks/update-webhook"},{"title":"Delete Webhook","api":"DELETE /webhooks/{id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"Test Webhook","api":"POST /webhooks/{id}/test","href":"/api-reference/webhooks/test-webhook"},{"title":"Reset Circuit Breaker","api":"POST /webhooks/{id}/reset-circuit","href":"/api-reference/webhooks/reset-circuit"}]},{"group":"Sourcing","pages":[{"title":"Initiate Sourcing Run","openapi":"POST /sourcing","href":"/api-reference/sourcing/initiate-sourcing"},{"title":"Initiate Sourcing Preview Run","openapi":"POST /sourcing/preview","href":"/api-reference/sourcing/initiate-sourcing-preview"},{"title":"Get Sourcing Preview Results","openapi":"GET /sourcing/preview/{id}/results","href":"/api-reference/sourcing/get-sourcing-preview-results"},{"title":"Patch Sourcing Run","openapi":"PATCH /sourcing/{id}","href":"/api-reference/sourcing/patch-sourcing"},{"title":"Get Sourcing Results","openapi":"GET /sourcing/{id}/results","href":"/api-reference/sourcing/get-sourcing-results"},{"title":"Initiate Enrichment Run","openapi":"POST /sourcing/enrich","href":"/api-reference/sourcing/initiate-enrichment"},{"title":"Get Enrichment Results","openapi":"GET /sourcing/enrich/{id}/results","href":"/api-reference/sourcing/get-enrich-results"},{"title":"Render HTML Candidate Cards","openapi":"POST /sourcing/render-html","href":"/api-reference/sourcing/render-html"}]},{"group":"Phone Numbers","pages":[{"title":"List Phone Numbers","openapi":"GET /phone-numbers","href":"/api-reference/phone-numbers/list-phone-numbers"}]}]},{"tab":"Changelog","icon":"clock","pages":[{"title":"Changelog","href":"/changelog/introduction"}]}]},"title":"Update Contact - InstaView API","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}