Create or update up to 100 contacts in one request (note: this endpoint’s batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized email when the item has a non-empty email, otherwise the normalized phone. A matched contact is updated with the item’s remaining fields (status: updated); an unmatched item creates a new contact (status: created, with original_source defaulting to Public API and original_source_detail to client_item_id unless supplied).
Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is not treated as an update — the creation collides on the phone and the item is rejected with error_code: conflict and the conflicting contact in existing_contact. (A create collision on the item’s own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with conflict, and updates that would leave a contact with neither a valid email nor phone are rejected with bad_request.
Partial success is normal — inspect each item result; successful items include the full contact with custom_fields. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with 400 before any item is processed.
Per-item results, in request order. Created and updated items include the full contact (with custom_fields).
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tented Help Center","colors":{"primary":"#5A855B","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/logo/tented-logo-dark-text.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=524f92cf5a25aeddb0118ecf3d7d8175","dark":"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/logo/tented-logo-white-text.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=73fbcea2001239f6ad22a00acbaaa41e"},"favicon":"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/favicon.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=fcdbfd50c6458d9fe901a1b92e3a0ac1","navbar":{"links":[{"href":"mailto:support@tented.ai","label":"Support"}],"primary":{"type":"button","label":"Go to Tented","href":"https://app.tented.ai"}},"footer":{"socials":{"x":"https://x.com/tentedhq","linkedin":"https://www.linkedin.com/company/tented-ai"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tented","hasAudioNarration":false,"actualSubdomain":"tented","customDomains":["docs.tented.ai"],"gitSource":{"type":"github","owner":"tentedapp","repo":"tented-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6aebb61fbb7351feda32271b","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":141},{"language":"default","tag":"Guides","count":54},{"language":"default","tag":"API Docs","count":25},{"language":"default","tag":"Tents","count":23},{"language":"default","tag":"Email Templates","count":21},{"language":"default","tag":"Emails","count":21},{"language":"default","tag":"Triggered Flows","count":21},{"language":"default","tag":"Tent Templates","count":17},{"language":"default","tag":"Working with Tents","count":16},{"language":"default","tag":"Email Blasts","count":14}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/contacts/upsert-contacts","slug":"/api-reference/contacts/upsert-contacts","pageMetadata":{"title":"Upsert contacts","description":"Create or update up to 100 contacts in one request (note: this endpoint's batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized `email` when the item has a non-empty email, otherwise the normalized `phone`. A matched contact is updated with the item's remaining fields (`status: updated`); an unmatched item creates a new contact (`status: created`, with `original_source` defaulting to `Public API` and `original_source_detail` to `client_item_id` unless supplied).\n\nBecause matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is **not** treated as an update — the creation collides on the phone and the item is rejected with `error_code: conflict` and the conflicting contact in `existing_contact`. (A create collision on the item's own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with `conflict`, and updates that would leave a contact with neither a valid email nor phone are rejected with `bad_request`.\n\nPartial success is normal — inspect each item result; successful items include the full `contact` with `custom_fields`. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with `400` before any item is processed.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/upsert","href":"/api-reference/contacts/upsert-contacts","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create or update up to 100 contacts in one request (note: this endpoint’s batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized \", _jsx(_components.code, {\n children: \"email\"\n }), \" when the item has a non-empty email, otherwise the normalized \", _jsx(_components.code, {\n children: \"phone\"\n }), \". A matched contact is updated with the item’s remaining fields (\", _jsx(_components.code, {\n children: \"status: updated\"\n }), \"); an unmatched item creates a new contact (\", _jsx(_components.code, {\n children: \"status: created\"\n }), \", with \", _jsx(_components.code, {\n children: \"original_source\"\n }), \" defaulting to \", _jsx(_components.code, {\n children: \"Public API\"\n }), \" and \", _jsx(_components.code, {\n children: \"original_source_detail\"\n }), \" to \", _jsx(_components.code, {\n children: \"client_item_id\"\n }), \" unless supplied).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is \", _jsx(_components.strong, {\n children: \"not\"\n }), \" treated as an update — the creation collides on the phone and the item is rejected with \", _jsx(_components.code, {\n children: \"error_code: conflict\"\n }), \" and the conflicting contact in \", _jsx(_components.code, {\n children: \"existing_contact\"\n }), \". (A create collision on the item’s own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with \", _jsx(_components.code, {\n children: \"conflict\"\n }), \", and updates that would leave a contact with neither a valid email nor phone are rejected with \", _jsx(_components.code, {\n children: \"bad_request\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Partial success is normal — inspect each item result; successful items include the full \", _jsx(_components.code, {\n children: \"contact\"\n }), \" with \", _jsx(_components.code, {\n children: \"custom_fields\"\n }), \". Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with \", _jsx(_components.code, {\n children: \"400\"\n }), \" before any item is processed.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Upsert contacts","description":"Create or update up to 100 contacts in one request (note: this endpoint's batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized `email` when the item has a non-empty email, otherwise the normalized `phone`. A matched contact is updated with the item's remaining fields (`status: updated`); an unmatched item creates a new contact (`status: created`, with `original_source` defaulting to `Public API` and `original_source_detail` to `client_item_id` unless supplied).\n\nBecause matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is **not** treated as an update — the creation collides on the phone and the item is rejected with `error_code: conflict` and the conflicting contact in `existing_contact`. (A create collision on the item's own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with `conflict`, and updates that would leave a contact with neither a valid email nor phone are rejected with `bad_request`.\n\nPartial success is normal — inspect each item result; successful items include the full `contact` with `custom_fields`. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with `400` before any item is processed.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/upsert","href":"/api-reference/contacts/upsert-contacts","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Contacts"],"operationId":"upsert-contacts","summary":"Upsert contacts","description":"Create or update up to 100 contacts in one request (note: this endpoint's batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized `email` when the item has a non-empty email, otherwise the normalized `phone`. A matched contact is updated with the item's remaining fields (`status: updated`); an unmatched item creates a new contact (`status: created`, with `original_source` defaulting to `Public API` and `original_source_detail` to `client_item_id` unless supplied).\n\nBecause matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is **not** treated as an update — the creation collides on the phone and the item is rejected with `error_code: conflict` and the conflicting contact in `existing_contact`. (A create collision on the item's own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with `conflict`, and updates that would leave a contact with neither a valid email nor phone are rejected with `bad_request`.\n\nPartial success is normal — inspect each item result; successful items include the full `contact` with `custom_fields`. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with `400` before any item is processed.","requestBody":"a8d3af18-8663-4d6c-bed7-acf668ec73b5","responses":{"200":"4a897be7-09c2-477b-92e0-fd7bc110fe6c","400":"19a18169-e7e4-4e5b-9bf3-43565aa2371d","401":"e29b23b3-6cab-478e-b3f5-d2094f98969a"},"method":"post","type":"path","servers":["46d863a6-e43f-44d9-961b-cd303cc6f7c0"],"security":["a69c8ab2-91e8-4370-bf83-42244b8a98bb"],"path":"/v1/contacts/upsert","baseUrlOptions":["https://api.tented.ai"],"title":"Upsert contacts","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"client_item_id":{"type":"string","description":"Optional ID echoed back in the result for reconciliation. Also used as `original_source_detail` for created contacts when `original_source_detail` is not supplied.","uniqueKey":"\\items.items.[INDEX].client_item_id","typeLabel":"string"},"email":{"oneOf":[{"type":"string","description":"Email address. When non-empty, this is the item's match key: the contact whose normalized email matches is updated. Pass `null` to clear the email of a phone-matched contact (only allowed if a valid phone remains).","uniqueKey":"\\items.items.[INDEX].email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Email address. When non-empty, this is the item's match key: the contact whose normalized email matches is updated. Pass `null` to clear the email of a phone-matched contact (only allowed if a valid phone remains).","uniqueKey":"\\items.items.[INDEX].email.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"Phone number. Used as the match key only when `email` is absent or empty; otherwise it is stored as a regular field update. Pass `null` to clear (only allowed if a valid email remains).","uniqueKey":"\\items.items.[INDEX].phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Phone number. Used as the match key only when `email` is absent or empty; otherwise it is stored as a regular field update. Pass `null` to clear (only allowed if a valid email remains).","uniqueKey":"\\items.items.[INDEX].phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].phone","typeLabel":"string | null"},"display_name":{"oneOf":[{"type":"string","maxLength":255,"description":"Display name. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].display_name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Display name. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].display_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].display_name","typeLabel":"string | null"},"first_name":{"oneOf":[{"type":"string","maxLength":255,"description":"First name. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].first_name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"First name. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","maxLength":255,"description":"Last name. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].last_name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Last name. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].last_name","typeLabel":"string | null"},"email_domain":{"oneOf":[{"type":"string","description":"Usually auto-derived from `email`.","maxLength":255,"uniqueKey":"\\items.items.[INDEX].email_domain.oneOf.0","typeLabel":"string"},{"type":"null","description":"Usually auto-derived from `email`.","maxLength":255,"uniqueKey":"\\items.items.[INDEX].email_domain.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].email_domain","typeLabel":"string | null"},"company":{"oneOf":[{"type":"string","maxLength":255,"description":"Company. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].company.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Company. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].company.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].company","typeLabel":"string | null"},"job_title":{"oneOf":[{"type":"string","maxLength":255,"description":"Job title. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].job_title.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Job title. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].job_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].job_title","typeLabel":"string | null"},"address":{"oneOf":[{"type":"string","maxLength":500,"description":"Street address. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].address.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":500,"description":"Street address. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].address.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].address","typeLabel":"string | null"},"address2":{"oneOf":[{"type":"string","maxLength":255,"description":"Address line 2. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].address2.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Address line 2. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].address2.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].address2","typeLabel":"string | null"},"city":{"oneOf":[{"type":"string","maxLength":255,"description":"City. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].city.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"City. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].city.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].city","typeLabel":"string | null"},"state":{"oneOf":[{"type":"string","maxLength":255,"description":"State or region. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].state.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"State or region. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].state.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].state","typeLabel":"string | null"},"country":{"oneOf":[{"type":"string","maxLength":255,"description":"Country. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].country.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Country. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].country.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].country","typeLabel":"string | null"},"zip_code":{"oneOf":[{"type":"string","maxLength":50,"description":"Postal code. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].zip_code.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":50,"description":"Postal code. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].zip_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].zip_code","typeLabel":"string | null"},"original_source":{"oneOf":[{"type":"string","maxLength":255,"description":"Original source. For created contacts, defaults to `Public API` when omitted or empty.","uniqueKey":"\\items.items.[INDEX].original_source.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Original source. For created contacts, defaults to `Public API` when omitted or empty.","uniqueKey":"\\items.items.[INDEX].original_source.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].original_source","typeLabel":"string | null"},"original_source_detail":{"oneOf":[{"type":"string","maxLength":255,"description":"Original source detail. For created contacts, defaults to `client_item_id` when omitted or empty.","uniqueKey":"\\items.items.[INDEX].original_source_detail.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"description":"Original source detail. For created contacts, defaults to `client_item_id` when omitted or empty.","uniqueKey":"\\items.items.[INDEX].original_source_detail.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].original_source_detail","typeLabel":"string | null"},"lead_status":{"oneOf":[{"type":"string","maxLength":100,"description":"Lead status. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].lead_status.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":100,"description":"Lead status. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].lead_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].lead_status","typeLabel":"string | null"},"lifecycle_stage":{"oneOf":[{"type":"string","maxLength":100,"description":"Lifecycle stage. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].lifecycle_stage.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":100,"description":"Lifecycle stage. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].lifecycle_stage.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].lifecycle_stage","typeLabel":"string | null"},"tented_score":{"oneOf":[{"type":"number","description":"Contact score. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].tented_score.oneOf.0","typeLabel":"number"},{"type":"null","description":"Contact score. Pass `null` to clear.","uniqueKey":"\\items.items.[INDEX].tented_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].tented_score","typeLabel":"number | null"},"unsubscribed":{"type":"boolean","description":"Global unsubscribe flag.","uniqueKey":"\\items.items.[INDEX].unsubscribed","typeLabel":"boolean"},"marketing_email_subscribed":{"oneOf":[{"type":"boolean","description":"Email marketing subscription state.","uniqueKey":"\\items.items.[INDEX].marketing_email_subscribed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Email marketing subscription state.","uniqueKey":"\\items.items.[INDEX].marketing_email_subscribed.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].marketing_email_subscribed","typeLabel":"boolean | null"},"marketing_sms_subscribed":{"oneOf":[{"type":"boolean","description":"SMS marketing subscription state.","uniqueKey":"\\items.items.[INDEX].marketing_sms_subscribed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"SMS marketing subscription state.","uniqueKey":"\\items.items.[INDEX].marketing_sms_subscribed.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].marketing_sms_subscribed","typeLabel":"boolean | null"},"marketing_sms_invalid":{"type":"boolean","description":"Mark the phone number invalid.","uniqueKey":"\\items.items.[INDEX].marketing_sms_invalid","typeLabel":"boolean"},"custom_fields":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"\\items.items.[INDEX].custom_fields.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"\\items.items.[INDEX].custom_fields.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"\\items.items.[INDEX].custom_fields.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"\\items.items.[INDEX].custom_fields.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].custom_fields.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Editable custom fields keyed by API name. Pass `null` to clear a value.","uniqueKey":"\\items.items.[INDEX].custom_fields","typeLabel":"object"}},"description":"A contact to create or update. Must include a non-empty `email` or `phone` to identify the contact; unknown fields are rejected.","uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":100,"description":"Contacts to create or update (1–100).","isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"}},"required":["items"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"items":[{"client_item_id":"\u003cstring>","email":"\u003cstring>","phone":"\u003cstring>","display_name":"\u003cstring>","first_name":"\u003cstring>","last_name":"\u003cstring>","email_domain":"\u003cstring>","company":"\u003cstring>","job_title":"\u003cstring>","address":"\u003cstring>","address2":"\u003cstring>","city":"\u003cstring>","state":"\u003cstring>","country":"\u003cstring>","zip_code":"\u003cstring>","original_source":"\u003cstring>","original_source_detail":"\u003cstring>","lead_status":"\u003cstring>","lifecycle_stage":"\u003cstring>","tented_score":123,"unsubscribed":true,"marketing_email_subscribed":true,"marketing_sms_subscribed":true,"marketing_sms_invalid":true,"custom_fields":{}}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"4a897be7-09c2-477b-92e0-fd7bc110fe6c":{"description":"Batch processed (individual items may still be rejected).","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"Always `completed` once the batch has been processed.","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"created_count":{"type":"integer","description":"Contacts created.","isRequired":true,"uniqueKey":"created_count","typeLabel":"integer"},"updated_count":{"type":"integer","description":"Contacts updated.","isRequired":true,"uniqueKey":"updated_count","typeLabel":"integer"},"rejected_count":{"type":"integer","description":"Number of rejected items.","isRequired":true,"uniqueKey":"rejected_count","typeLabel":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","description":"Zero-based position in the request `items` array.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].index","typeLabel":"integer"},"status":{"type":"string","enum":["created","updated","deleted","rejected"],"description":"Outcome for this item.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"client_item_id":{"type":"string","description":"Your reconciliation ID, echoed back when supplied.","uniqueKey":"\\items.items.[INDEX].client_item_id","typeLabel":"string"},"contact_id":{"type":"string","format":"uuid","description":"Contact ID (when known).","uniqueKey":"\\items.items.[INDEX].contact_id","typeLabel":"string\u003cuuid>"},"contact":{"type":"object","properties":{"contact_id":{"type":"string","format":"uuid","description":"Contact ID.","uniqueKey":"\\items.items.[INDEX].contact.contact_id","typeLabel":"string\u003cuuid>"},"display_name":{"oneOf":[{"type":"string","description":"Display name.","uniqueKey":"\\items.items.[INDEX].contact.display_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name.","uniqueKey":"\\items.items.[INDEX].contact.display_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.display_name","typeLabel":"string | null"},"first_name":{"oneOf":[{"type":"string","description":"First name.","uniqueKey":"\\items.items.[INDEX].contact.first_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"First name.","uniqueKey":"\\items.items.[INDEX].contact.first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","description":"Last name.","uniqueKey":"\\items.items.[INDEX].contact.last_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Last name.","uniqueKey":"\\items.items.[INDEX].contact.last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.last_name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"Email address.","uniqueKey":"\\items.items.[INDEX].contact.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Email address.","uniqueKey":"\\items.items.[INDEX].contact.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"Phone number.","uniqueKey":"\\items.items.[INDEX].contact.phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Phone number.","uniqueKey":"\\items.items.[INDEX].contact.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.phone","typeLabel":"string | null"},"email_domain":{"oneOf":[{"type":"string","description":"Domain derived from the email address.","uniqueKey":"\\items.items.[INDEX].contact.email_domain.oneOf.0","typeLabel":"string"},{"type":"null","description":"Domain derived from the email address.","uniqueKey":"\\items.items.[INDEX].contact.email_domain.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.email_domain","typeLabel":"string | null"},"company":{"oneOf":[{"type":"string","description":"Company.","uniqueKey":"\\items.items.[INDEX].contact.company.oneOf.0","typeLabel":"string"},{"type":"null","description":"Company.","uniqueKey":"\\items.items.[INDEX].contact.company.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.company","typeLabel":"string | null"},"job_title":{"oneOf":[{"type":"string","description":"Job title.","uniqueKey":"\\items.items.[INDEX].contact.job_title.oneOf.0","typeLabel":"string"},{"type":"null","description":"Job title.","uniqueKey":"\\items.items.[INDEX].contact.job_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.job_title","typeLabel":"string | null"},"address":{"oneOf":[{"type":"string","description":"Street address.","uniqueKey":"\\items.items.[INDEX].contact.address.oneOf.0","typeLabel":"string"},{"type":"null","description":"Street address.","uniqueKey":"\\items.items.[INDEX].contact.address.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.address","typeLabel":"string | null"},"address2":{"oneOf":[{"type":"string","description":"Address line 2.","uniqueKey":"\\items.items.[INDEX].contact.address2.oneOf.0","typeLabel":"string"},{"type":"null","description":"Address line 2.","uniqueKey":"\\items.items.[INDEX].contact.address2.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.address2","typeLabel":"string | null"},"city":{"oneOf":[{"type":"string","description":"City.","uniqueKey":"\\items.items.[INDEX].contact.city.oneOf.0","typeLabel":"string"},{"type":"null","description":"City.","uniqueKey":"\\items.items.[INDEX].contact.city.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.city","typeLabel":"string | null"},"state":{"oneOf":[{"type":"string","description":"State or region.","uniqueKey":"\\items.items.[INDEX].contact.state.oneOf.0","typeLabel":"string"},{"type":"null","description":"State or region.","uniqueKey":"\\items.items.[INDEX].contact.state.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.state","typeLabel":"string | null"},"country":{"oneOf":[{"type":"string","description":"Country.","uniqueKey":"\\items.items.[INDEX].contact.country.oneOf.0","typeLabel":"string"},{"type":"null","description":"Country.","uniqueKey":"\\items.items.[INDEX].contact.country.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.country","typeLabel":"string | null"},"zip_code":{"oneOf":[{"type":"string","description":"Postal code.","uniqueKey":"\\items.items.[INDEX].contact.zip_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Postal code.","uniqueKey":"\\items.items.[INDEX].contact.zip_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.zip_code","typeLabel":"string | null"},"original_source":{"oneOf":[{"type":"string","description":"How the contact was first created, e.g. `Public API`.","uniqueKey":"\\items.items.[INDEX].contact.original_source.oneOf.0","typeLabel":"string"},{"type":"null","description":"How the contact was first created, e.g. `Public API`.","uniqueKey":"\\items.items.[INDEX].contact.original_source.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.original_source","typeLabel":"string | null"},"original_source_detail":{"oneOf":[{"type":"string","description":"Additional source detail.","uniqueKey":"\\items.items.[INDEX].contact.original_source_detail.oneOf.0","typeLabel":"string"},{"type":"null","description":"Additional source detail.","uniqueKey":"\\items.items.[INDEX].contact.original_source_detail.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.original_source_detail","typeLabel":"string | null"},"lead_status":{"oneOf":[{"type":"string","description":"Lead status.","uniqueKey":"\\items.items.[INDEX].contact.lead_status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Lead status.","uniqueKey":"\\items.items.[INDEX].contact.lead_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.lead_status","typeLabel":"string | null"},"lifecycle_stage":{"oneOf":[{"type":"string","description":"Lifecycle stage.","uniqueKey":"\\items.items.[INDEX].contact.lifecycle_stage.oneOf.0","typeLabel":"string"},{"type":"null","description":"Lifecycle stage.","uniqueKey":"\\items.items.[INDEX].contact.lifecycle_stage.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.lifecycle_stage","typeLabel":"string | null"},"tented_score":{"oneOf":[{"type":"number","description":"Contact score.","uniqueKey":"\\items.items.[INDEX].contact.tented_score.oneOf.0","typeLabel":"number"},{"type":"null","description":"Contact score.","uniqueKey":"\\items.items.[INDEX].contact.tented_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.tented_score","typeLabel":"number | null"},"unsubscribed":{"type":"boolean","description":"Global unsubscribe flag.","uniqueKey":"\\items.items.[INDEX].contact.unsubscribed","typeLabel":"boolean"},"marketing_email_subscribed":{"oneOf":[{"type":"boolean","description":"Email marketing subscription state.","uniqueKey":"\\items.items.[INDEX].contact.marketing_email_subscribed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Email marketing subscription state.","uniqueKey":"\\items.items.[INDEX].contact.marketing_email_subscribed.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.marketing_email_subscribed","typeLabel":"boolean | null"},"marketing_sms_subscribed":{"oneOf":[{"type":"boolean","description":"SMS marketing subscription state.","uniqueKey":"\\items.items.[INDEX].contact.marketing_sms_subscribed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"SMS marketing subscription state.","uniqueKey":"\\items.items.[INDEX].contact.marketing_sms_subscribed.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.marketing_sms_subscribed","typeLabel":"boolean | null"},"marketing_email_invalid":{"type":"boolean","description":"Whether the email address is known to be invalid.","uniqueKey":"\\items.items.[INDEX].contact.marketing_email_invalid","typeLabel":"boolean"},"marketing_sms_invalid":{"type":"boolean","description":"Whether the phone number is known to be invalid.","uniqueKey":"\\items.items.[INDEX].contact.marketing_sms_invalid","typeLabel":"boolean"},"last_activity_at":{"oneOf":[{"type":"string","format":"date-time","description":"Most recent tracked activity.","uniqueKey":"\\items.items.[INDEX].contact.last_activity_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Most recent tracked activity.","uniqueKey":"\\items.items.[INDEX].contact.last_activity_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].contact.last_activity_at","typeLabel":"string\u003cdate-time> | null"},"created_at":{"type":"string","format":"date-time","description":"Creation time.","uniqueKey":"\\items.items.[INDEX].contact.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"Last update.","uniqueKey":"\\items.items.[INDEX].contact.updated_at","typeLabel":"string\u003cdate-time>"}},"description":"A contact record. Fields that were never set are omitted.","uniqueKey":"\\items.items.[INDEX].contact","typeLabel":"object"},"error_code":{"type":"string","enum":["bad_request","not_found","conflict","error"],"description":"Rejection code.","uniqueKey":"\\items.items.[INDEX].error_code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable rejection reason.","uniqueKey":"\\items.items.[INDEX].message","typeLabel":"string"},"existing_contact":{"type":"object","properties":{"contact_id":{"type":"string","format":"uuid","description":"ID of the conflicting contact.","uniqueKey":"\\items.items.[INDEX].existing_contact.contact_id","typeLabel":"string\u003cuuid>"},"display_name":{"oneOf":[{"type":"string","description":"Display name.","uniqueKey":"\\items.items.[INDEX].existing_contact.display_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name.","uniqueKey":"\\items.items.[INDEX].existing_contact.display_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].existing_contact.display_name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"Email address.","uniqueKey":"\\items.items.[INDEX].existing_contact.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Email address.","uniqueKey":"\\items.items.[INDEX].existing_contact.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].existing_contact.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"Phone number.","uniqueKey":"\\items.items.[INDEX].existing_contact.phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Phone number.","uniqueKey":"\\items.items.[INDEX].existing_contact.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].existing_contact.phone","typeLabel":"string | null"}},"description":"The already-existing contact, included on `conflict` rejections.","uniqueKey":"\\items.items.[INDEX].existing_contact","typeLabel":"object"}},"required":["index","status"],"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"description":"Per-item results, in request order. Created and updated items include the full `contact` (with `custom_fields`).","isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"}},"required":["status","created_count","updated_count","rejected_count","items"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"\u003cstring>","created_count":123,"updated_count":123,"rejected_count":123,"items":[{"index":123,"status":"created","client_item_id":"\u003cstring>","contact_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","contact":{"contact_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","display_name":"\u003cstring>","first_name":"\u003cstring>","last_name":"\u003cstring>","email":"\u003cstring>","phone":"\u003cstring>","email_domain":"\u003cstring>","company":"\u003cstring>","job_title":"\u003cstring>","address":"\u003cstring>","address2":"\u003cstring>","city":"\u003cstring>","state":"\u003cstring>","country":"\u003cstring>","zip_code":"\u003cstring>","original_source":"\u003cstring>","original_source_detail":"\u003cstring>","lead_status":"\u003cstring>","lifecycle_stage":"\u003cstring>","tented_score":123,"unsubscribed":true,"marketing_email_subscribed":true,"marketing_sms_subscribed":true,"marketing_email_invalid":true,"marketing_sms_invalid":true,"last_activity_at":"2023-11-07T05:31:56Z","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"},"error_code":"bad_request","message":"\u003cstring>","existing_contact":{"contact_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","display_name":"\u003cstring>","email":"\u003cstring>","phone":"\u003cstring>"}}]}}},"exampleType":"generated"}},"exampleType":"generated"},"19a18169-e7e4-4e5b-9bf3-43565aa2371d":{"description":"Bad request — invalid parameters or request body. Validation failures include `details.issues` with per-field messages and reject the entire batch.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Stable machine-readable error code (present on email, blast, flow, and related endpoints, e.g. `campaign_not_ready`, `generation_in_progress`).","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Additional human-readable context (present on some tent endpoints).","uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable code used by tent creation errors (e.g. `INVALID_PROMPT_INTENT`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Additional error context. Validation errors include `issues`: an array of `{ path, message }` objects.","uniqueKey":"details","typeLabel":"object"},"limit":{"type":"integer","description":"Plan limit that was hit (present on `429` publish-limit errors).","uniqueKey":"limit","typeLabel":"integer"},"current":{"type":"integer","description":"Current usage against the limit (present on `429` publish-limit errors).","uniqueKey":"current","typeLabel":"integer"}},"required":["error"],"description":"Error response. All errors include `error`; the other fields vary by endpoint group.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","error_code":"\u003cstring>","message":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"current":123}}},"exampleType":"generated"}},"exampleType":"generated"},"e29b23b3-6cab-478e-b3f5-d2094f98969a":{"description":"Unauthorized — missing, malformed, revoked, or expired API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"error_code":{"type":"string","description":"Stable machine-readable error code (present on email, blast, flow, and related endpoints, e.g. `campaign_not_ready`, `generation_in_progress`).","uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","description":"Additional human-readable context (present on some tent endpoints).","uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable code used by tent creation errors (e.g. `INVALID_PROMPT_INTENT`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Additional error context. Validation errors include `issues`: an array of `{ path, message }` objects.","uniqueKey":"details","typeLabel":"object"},"limit":{"type":"integer","description":"Plan limit that was hit (present on `429` publish-limit errors).","uniqueKey":"limit","typeLabel":"integer"},"current":{"type":"integer","description":"Current usage against the limit (present on `429` publish-limit errors).","uniqueKey":"current","typeLabel":"integer"}},"required":["error"],"description":"Error response. All errors include `error`; the other fields vary by endpoint group.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","error_code":"\u003cstring>","message":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"current":123}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"a69c8ab2-91e8-4370-bf83-42244b8a98bb":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Workspace API key, e.g. `Authorization: Bearer tented_...`. Create keys in Workspace Settings → API Keys.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"46d863a6-e43f-44d9-961b-cd303cc6f7c0":{"url":"https://api.tented.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Workspace API key, e.g. `Authorization: Bearer tented_...`. Create keys in Workspace Settings → API Keys.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Workspace API key, e.g. `Authorization: Bearer tented_...`. Create keys in Workspace Settings → API Keys.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"tented","siteName":"Tented Help Center","title":"Upsert contacts - Tented Help Center","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T16:49:08.223Z","originalFileLocation":"api-reference/contacts/upsert-contacts.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create or update up to 100 contacts in one request (note: this endpoint\u0026#x27;s batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized email when the item has a non-empty email, otherwise the normalized phone. A matched contact is updated with the item\u0026#x27;s remaining fields (status: updated); an unmatched item creates a new contact (status: created, with original_source defaulting to Public API and original_source_detail to client_item_id unless supplied). Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is not treated as an update — the creation collides on the phone and the item is rejected with error_code: conflict and the conflicting contact in existing_contact. (A create collision on the item\u0026#x27;s own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with conflict, and updates that would leave a contact with neither a valid email nor phone are rejected with bad_request. Partial success is normal — inspect each item result; successful items include the full contact with custom_fields. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with 400 before any item is processed.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tented Help Center\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Upsert contacts - Tented Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create or update up to 100 contacts in one request (note: this endpoint\u0026#x27;s batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized email when the item has a non-empty email, otherwise the normalized phone. A matched contact is updated with the item\u0026#x27;s remaining fields (status: updated); an unmatched item creates a new contact (status: created, with original_source defaulting to Public API and original_source_detail to client_item_id unless supplied). Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is not treated as an update — the creation collides on the phone and the item is rejected with error_code: conflict and the conflicting contact in existing_contact. (A create collision on the item\u0026#x27;s own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with conflict, and updates that would leave a contact with neither a valid email nor phone are rejected with bad_request. Partial success is normal — inspect each item result; successful items include the full contact with custom_fields. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with 400 before any item is processed.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tented Help Center\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tented.ai/api-reference/contacts/upsert-contacts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tented.mintlify.site/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Upsert+contacts\u0026amp;description=Create+or+update+up+to+100+contacts+in+one+request+%28note%3A+this+endpoint%27s+batch+limit+is+100+items%29.+Each+item+is+matched+against+existing+contacts+by+a+single+\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=50cc69bb6cce1053985449bcfc790342a9dcab2a70f72669f2890a4a4a6f16aa\">\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=\"Upsert contacts - Tented Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create or update up to 100 contacts in one request (note: this endpoint\u0026#x27;s batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized email when the item has a non-empty email, otherwise the normalized phone. A matched contact is updated with the item\u0026#x27;s remaining fields (status: updated); an unmatched item creates a new contact (status: created, with original_source defaulting to Public API and original_source_detail to client_item_id unless supplied). Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is not treated as an update — the creation collides on the phone and the item is rejected with error_code: conflict and the conflicting contact in existing_contact. (A create collision on the item\u0026#x27;s own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with conflict, and updates that would leave a contact with neither a valid email nor phone are rejected with bad_request. Partial success is normal — inspect each item result; successful items include the full contact with custom_fields. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with 400 before any item is processed.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tented.mintlify.site/_mintlify/api/og/v2?division=Contacts\u0026amp;title=Upsert+contacts\u0026amp;description=Create+or+update+up+to+100+contacts+in+one+request+%28note%3A+this+endpoint%27s+batch+limit+is+100+items%29.+Each+item+is+matched+against+existing+contacts+by+a+single+\u0026amp;theme=6f3de5c97857f534565ce1c7\u0026amp;signature=50cc69bb6cce1053985449bcfc790342a9dcab2a70f72669f2890a4a4a6f16aa\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tented/Ot1teMsSMR0FZrqh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tented Help Center\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5A855B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tented.ai/api-reference/contacts/upsert-contacts\">\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/upsert-contacts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tented.ai/#organization\",\"name\":\"Tented Help Center\",\"url\":\"https://docs.tented.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tented/ROcYOxFUIgiTHi6y/logo/tented-logo-dark-text.svg?fit=max\u0026auto=format\u0026n=ROcYOxFUIgiTHi6y\u0026q=85\u0026s=524f92cf5a25aeddb0118ecf3d7d8175\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tented.ai#website\",\"name\":\"Tented Help Center\",\"url\":\"https://docs.tented.ai\",\"publisher\":{\"@id\":\"https://docs.tented.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts#webpage\",\"url\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts\",\"name\":\"Upsert contacts\",\"description\":\"Create or update up to 100 contacts in one request (note: this endpoint's batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized email when the item has a non-empty email, otherwise the normalized phone. A matched contact is updated with the item's remaining fields (status: updated); an unmatched item creates a new contact (status: created, with original_source defaulting to Public API and original_source_detail to client_item_id unless supplied). Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is not treated as an update — the creation collides on the phone and the item is rejected with error_code: conflict and the conflicting contact in existing_contact. (A create collision on the item's own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with conflict, and updates that would leave a contact with neither a valid email nor phone are rejected with bad_request. Partial success is normal — inspect each item result; successful items include the full contact with custom_fields. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with 400 before any item is processed.\",\"dateModified\":\"2026-10-23T16:49:08.223Z\",\"isPartOf\":{\"@id\":\"https://docs.tented.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Contacts\",\"item\":\"https://docs.tented.ai/api-reference/contacts/list-or-look-up-contacts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upsert contacts\",\"item\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts#apireference\",\"headline\":\"Upsert contacts\",\"name\":\"Upsert contacts\",\"description\":\"Create or update up to 100 contacts in one request (note: this endpoint's batch limit is 100 items). Each item is matched against existing contacts by a single key: the normalized email when the item has a non-empty email, otherwise the normalized phone. A matched contact is updated with the item's remaining fields (status: updated); an unmatched item creates a new contact (status: created, with original_source defaulting to Public API and original_source_detail to client_item_id unless supplied). Because matching uses only that single key, an item whose email is new but whose phone already belongs to a different contact is not treated as an update — the creation collides on the phone and the item is rejected with error_code: conflict and the conflicting contact in existing_contact. (A create collision on the item's own match key — e.g. from a concurrent insert — is resolved as an update of that contact instead.) Updates that would change an email or phone to collide with another contact are likewise rejected with conflict, and updates that would leave a contact with neither a valid email nor phone are rejected with bad_request. Partial success is normal — inspect each item result; successful items include the full contact with custom_fields. Body-level validation failures (an invalid email or phone format, more than 100 items, unknown fields) reject the entire request with 400 before any item is processed.\",\"url\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tented.ai/api-reference/contacts/upsert-contacts#webpage\"},\"dateModified\":\"2026-10-23T16:49:08.223Z\",\"publisher\":{\"@id\":\"https://docs.tented.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tented.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tented Help Center\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Tented Help Center\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/contacts/upsert-contacts.md","siteName":"Tented Help Center","nav":{"global":{},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Docs","pages":[{"title":"API Docs","href":"/api-reference/introduction"}]},{"tab":"API Reference","groups":[{"group":"Tents","pages":[{"title":"Create a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents","href":"/api-reference/tents/create-a-tent"},{"title":"Get tent status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tents/{tentId}","href":"/api-reference/tents/get-tent-status"},{"title":"Edit a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/edit","href":"/api-reference/tents/edit-a-tent"},{"title":"List tent assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tents/{tentId}/assets","href":"/api-reference/tents/list-tent-assets"},{"title":"Upload an asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/assets","href":"/api-reference/tents/upload-an-asset"},{"title":"Publish a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/publish","href":"/api-reference/tents/publish-a-tent"},{"title":"Unpublish a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/unpublish","href":"/api-reference/tents/unpublish-a-tent"},{"title":"Delete a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tents/{identifier}","href":"/api-reference/tents/delete-a-tent"},{"title":"Create tents in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/bulk","href":"/api-reference/tents/create-tents-in-bulk"},{"title":"Get bulk job status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/bulk-jobs/{bulkJobId}","href":"/api-reference/tents/get-bulk-job-status"},{"title":"Get a tent asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tents/{tentId}/assets/{assetId}","href":"/api-reference/tents/get-a-tent-asset"},{"title":"Delete a tent asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tents/{tentId}/assets/{assetId}","href":"/api-reference/tents/delete-a-tent-asset"},{"title":"Clone a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tents/{tentId}/clone","href":"/api-reference/tents/clone-a-tent"}]},{"group":"Analytics","pages":[{"title":"Get tent analytics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/analytics/tent","href":"/api-reference/analytics/get-tent-analytics"},{"title":"Get workspace analytics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/analytics/org","href":"/api-reference/analytics/get-workspace-analytics"}]},{"group":"Contacts","pages":[{"title":"List or look up contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts","href":"/api-reference/contacts/list-or-look-up-contacts"},{"title":"Create contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts","href":"/api-reference/contacts/create-contacts"},{"title":"Delete contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contacts","href":"/api-reference/contacts/delete-contacts"},{"title":"Update contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/update","href":"/api-reference/contacts/update-contacts"},{"title":"Delete contacts (POST)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/delete","href":"/api-reference/contacts/delete-contacts-post"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/{contactId}","href":"/api-reference/contacts/get-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contacts/{contactId}","href":"/api-reference/contacts/delete-a-contact"},{"title":"Update a contact","description":"Update a single contact by ID — the single-record equivalent of one `POST /v1/contacts/update` item, without the batch envelope. Only the fields present in the body are changed; nullable fields accept `null` to clear the stored value; unknown fields are rejected. A body with no updatable fields returns `400` (`No fields to update`). Changing `email` or `phone` to a value already used by another contact returns `409` with the conflicting contact in `details.existing_contact`, and clearing both identifiers is rejected — a contact must always keep at least one valid email or phone. Returns the full updated contact, including `custom_fields`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contacts/{contactId}","href":"/api-reference/contacts/update-a-contact"},{"title":"Upsert contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/upsert","href":"/api-reference/contacts/upsert-contacts"},{"title":"Search contacts by rules","description":"Return the contacts matching a segment rule tree — the same rule DSL used for dynamic lists, blast audiences, and flow rules. Rule trees use camelCase keys (`fieldDefinitionId`, `listId`, `timeWindow`), unlike the rest of the API. Trees may nest at most 5 levels deep and contain at most 100 nodes; `email_step` conditions are rejected here (they are only legal inside flow condition steps). Results can be additionally narrowed with `search` and are paginated. Items do not include `custom_fields` — fetch a single contact for those.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/search","href":"/api-reference/contacts/search-contacts-by-rules"},{"title":"List contact activities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/{contactId}/activities","href":"/api-reference/contacts/list-contact-activities"}]},{"group":"Emails","pages":[{"title":"List emails","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails","href":"/api-reference/emails/list-emails"},{"title":"Create an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails","href":"/api-reference/emails/create-an-email"},{"title":"Get an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}","href":"/api-reference/emails/get-an-email"},{"title":"Delete an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/emails/{emailId}","href":"/api-reference/emails/delete-an-email"},{"title":"Update email metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/emails/{emailId}","href":"/api-reference/emails/update-email-metadata"},{"title":"Get email HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/content","href":"/api-reference/emails/get-email-html"},{"title":"Get plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/plain-text","href":"/api-reference/emails/get-plain-text"},{"title":"Override plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/emails/{emailId}/plain-text","href":"/api-reference/emails/override-plain-text"},{"title":"Reset plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/emails/{emailId}/plain-text","href":"/api-reference/emails/reset-plain-text"},{"title":"Iterate with AI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/messages","href":"/api-reference/emails/iterate-with-ai"},{"title":"Save HTML directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/save-code","href":"/api-reference/emails/save-html-directly"},{"title":"Approve an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/approve","href":"/api-reference/emails/approve-an-email"},{"title":"Unapprove an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/unapprove","href":"/api-reference/emails/unapprove-an-email"},{"title":"Get generation status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/generations/{generationId}","href":"/api-reference/emails/get-generation-status"},{"title":"Get generation HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/generations/{generationId}/content","href":"/api-reference/emails/get-generation-html"},{"title":"Get generation plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/generations/{generationId}/plain-text","href":"/api-reference/emails/get-generation-plain-text"},{"title":"List email assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/assets","href":"/api-reference/emails/list-email-assets"},{"title":"Upload an email asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/assets","href":"/api-reference/emails/upload-an-email-asset"},{"title":"Get an email asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/emails/{emailId}/assets/{assetId}","href":"/api-reference/emails/get-an-email-asset"},{"title":"Delete an email asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/emails/{emailId}/assets/{assetId}","href":"/api-reference/emails/delete-an-email-asset"},{"title":"Clone an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/emails/{emailId}/clone","href":"/api-reference/emails/clone-an-email"}]},{"group":"Email Blasts","pages":[{"title":"List blasts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts","href":"/api-reference/email-blasts/list-blasts"},{"title":"Create a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts","href":"/api-reference/email-blasts/create-a-blast"},{"title":"Get a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts/{blastId}","href":"/api-reference/email-blasts/get-a-blast"},{"title":"Delete a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-blasts/{blastId}","href":"/api-reference/email-blasts/delete-a-blast"},{"title":"Rename a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-blasts/{blastId}","href":"/api-reference/email-blasts/rename-a-blast"},{"title":"Set the audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-blasts/{blastId}/audience","href":"/api-reference/email-blasts/set-the-audience"},{"title":"Set the email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-blasts/{blastId}/email","href":"/api-reference/email-blasts/set-the-email"},{"title":"Schedule a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/schedule","href":"/api-reference/email-blasts/schedule-a-blast"},{"title":"Send a blast now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/send-now","href":"/api-reference/email-blasts/send-a-blast-now"},{"title":"Unschedule a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/unschedule","href":"/api-reference/email-blasts/unschedule-a-blast"},{"title":"Archive a blast","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/archive","href":"/api-reference/email-blasts/archive-a-blast"},{"title":"List recipients \u0026 engagement","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts/{blastId}/contacts","href":"/api-reference/email-blasts/list-recipients-\u0026-engagement"},{"title":"Start a CSV export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-blasts/{blastId}/contacts/export","href":"/api-reference/email-blasts/start-a-csv-export"},{"title":"Get export status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-blasts/{blastId}/contacts/export/{exportId}","href":"/api-reference/email-blasts/get-export-status"}]},{"group":"Triggered Flows","pages":[{"title":"List flows","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows","href":"/api-reference/triggered-flows/list-flows"},{"title":"Create a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows","href":"/api-reference/triggered-flows/create-a-flow"},{"title":"Get a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows/{flowId}","href":"/api-reference/triggered-flows/get-a-flow"},{"title":"Delete a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-flows/{flowId}","href":"/api-reference/triggered-flows/delete-a-flow"},{"title":"Update a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-flows/{flowId}","href":"/api-reference/triggered-flows/update-a-flow"},{"title":"Replace triggers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-flows/{flowId}/triggers","href":"/api-reference/triggered-flows/replace-triggers"},{"title":"Replace steps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-flows/{flowId}/steps","href":"/api-reference/triggered-flows/replace-steps"},{"title":"Add a step","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/steps","href":"/api-reference/triggered-flows/add-a-step"},{"title":"Delete a step","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-flows/{flowId}/steps/{stepId}","href":"/api-reference/triggered-flows/delete-a-step"},{"title":"Update a step","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-flows/{flowId}/steps/{stepId}","href":"/api-reference/triggered-flows/update-a-step"},{"title":"Set a step’s email","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-flows/{flowId}/steps/{stepId}/email","href":"/api-reference/triggered-flows/set-a-step’s-email"},{"title":"Activate a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/activate","href":"/api-reference/triggered-flows/activate-a-flow"},{"title":"Pause a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/pause","href":"/api-reference/triggered-flows/pause-a-flow"},{"title":"Archive a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/archive","href":"/api-reference/triggered-flows/archive-a-flow"},{"title":"Add a contact to a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/contacts/{contactId}","href":"/api-reference/triggered-flows/add-a-contact-to-a-flow"},{"title":"Remove a contact from a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-flows/{flowId}/contacts/{contactId}","href":"/api-reference/triggered-flows/remove-a-contact-from-a-flow"},{"title":"List flow members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows/{flowId}/members","href":"/api-reference/triggered-flows/list-flow-members"},{"title":"Get a member run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-flows/{flowId}/members/{membershipId}","href":"/api-reference/triggered-flows/get-a-member-run"},{"title":"Trigger a flow for a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-flows/{flowId}/trigger","href":"/api-reference/triggered-flows/trigger-a-flow-for-a-contact"},{"title":"Add a contact to a flow (campaign alias)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-campaigns/{campaignId}/contacts/{contactId}","href":"/api-reference/triggered-flows/add-a-contact-to-a-flow-campaign-alias"},{"title":"Remove a contact from a flow (campaign alias)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-campaigns/{campaignId}/contacts/{contactId}","href":"/api-reference/triggered-flows/remove-a-contact-from-a-flow-campaign-alias"}]},{"group":"Contact Imports","pages":[{"title":"Start a contact import","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports","href":"/api-reference/contact-imports/start-a-contact-import"},{"title":"Preview an import","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports/{sessionId}/preview","href":"/api-reference/contact-imports/preview-an-import"},{"title":"Execute an import","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts/imports/{sessionId}/execute","href":"/api-reference/contact-imports/execute-an-import"},{"title":"Get an import run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/imports/{importRunId}","href":"/api-reference/contact-imports/get-an-import-run"},{"title":"List per-row results","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/imports/{importRunId}/results","href":"/api-reference/contact-imports/list-per-row-results"},{"title":"Export results as CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/imports/{importRunId}/export","href":"/api-reference/contact-imports/export-results-as-csv"}]},{"group":"Contact Fields","pages":[{"title":"List contact fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-fields","href":"/api-reference/contact-fields/list-contact-fields"},{"title":"Create custom fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-fields","href":"/api-reference/contact-fields/create-custom-fields"},{"title":"Update a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contact-fields/{fieldDefinitionId}","href":"/api-reference/contact-fields/update-a-custom-field"},{"title":"Get rule metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-fields/rule-metadata","href":"/api-reference/contact-fields/get-rule-metadata"}]},{"group":"Contact Lists","pages":[{"title":"List contact lists","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists","href":"/api-reference/contact-lists/list-contact-lists"},{"title":"Create a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-lists","href":"/api-reference/contact-lists/create-a-contact-list"},{"title":"Get a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}","href":"/api-reference/contact-lists/get-a-contact-list"},{"title":"Delete a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contact-lists/{listId}","href":"/api-reference/contact-lists/delete-a-contact-list"},{"title":"Update a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contact-lists/{listId}","href":"/api-reference/contact-lists/update-a-contact-list"},{"title":"List members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}/contacts","href":"/api-reference/contact-lists/list-members"},{"title":"Add members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-lists/{listId}/contacts","href":"/api-reference/contact-lists/add-members"},{"title":"Remove members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contact-lists/{listId}/contacts","href":"/api-reference/contact-lists/remove-members"},{"title":"Get live member counts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}/member-count","href":"/api-reference/contact-lists/get-live-member-counts"},{"title":"Start a CSV export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contact-lists/{listId}/export","href":"/api-reference/contact-lists/start-a-csv-export"},{"title":"Get export status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contact-lists/{listId}/export/{exportId}","href":"/api-reference/contact-lists/get-export-status"}]},{"group":"Email Templates","pages":[{"title":"List email templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates","href":"/api-reference/email-templates/list-email-templates"},{"title":"Create an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates","href":"/api-reference/email-templates/create-an-email-template"},{"title":"Get an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}","href":"/api-reference/email-templates/get-an-email-template"},{"title":"Delete an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-templates/{templateId}","href":"/api-reference/email-templates/delete-an-email-template"},{"title":"Update template metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/email-templates/{templateId}","href":"/api-reference/email-templates/update-template-metadata"},{"title":"Get template HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/content","href":"/api-reference/email-templates/get-template-html"},{"title":"Get plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/plain-text","href":"/api-reference/email-templates/get-plain-text"},{"title":"Override plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/email-templates/{templateId}/plain-text","href":"/api-reference/email-templates/override-plain-text"},{"title":"Reset plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-templates/{templateId}/plain-text","href":"/api-reference/email-templates/reset-plain-text"},{"title":"Iterate with AI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/messages","href":"/api-reference/email-templates/iterate-with-ai"},{"title":"Save HTML directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/save-code","href":"/api-reference/email-templates/save-html-directly"},{"title":"Approve an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/approve","href":"/api-reference/email-templates/approve-an-email-template"},{"title":"Unapprove an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/unapprove","href":"/api-reference/email-templates/unapprove-an-email-template"},{"title":"Get generation status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/generations/{generationId}","href":"/api-reference/email-templates/get-generation-status"},{"title":"Get generation HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/generations/{generationId}/content","href":"/api-reference/email-templates/get-generation-html"},{"title":"Get generation plain text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/generations/{generationId}/plain-text","href":"/api-reference/email-templates/get-generation-plain-text"},{"title":"List template assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/assets","href":"/api-reference/email-templates/list-template-assets"},{"title":"Upload a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/assets","href":"/api-reference/email-templates/upload-a-template-asset"},{"title":"Get a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/email-templates/{templateId}/assets/{assetId}","href":"/api-reference/email-templates/get-a-template-asset"},{"title":"Delete a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/email-templates/{templateId}/assets/{assetId}","href":"/api-reference/email-templates/delete-a-template-asset"},{"title":"Clone an email template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/email-templates/{templateId}/clone","href":"/api-reference/email-templates/clone-an-email-template"}]},{"group":"Tent Templates","pages":[{"title":"List tent templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates","href":"/api-reference/tent-templates/list-tent-templates"},{"title":"Create a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates","href":"/api-reference/tent-templates/create-a-tent-template"},{"title":"Create a tent template from a tent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/from-tent/{tentId}","href":"/api-reference/tent-templates/create-a-tent-template-from-a-tent"},{"title":"Get a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}","href":"/api-reference/tent-templates/get-a-tent-template"},{"title":"Delete a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tent-templates/{templateId}","href":"/api-reference/tent-templates/delete-a-tent-template"},{"title":"Get template HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/content","href":"/api-reference/tent-templates/get-template-html"},{"title":"Iterate with AI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/messages","href":"/api-reference/tent-templates/iterate-with-ai"},{"title":"Save HTML directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/save-code","href":"/api-reference/tent-templates/save-html-directly"},{"title":"Approve a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/approve","href":"/api-reference/tent-templates/approve-a-tent-template"},{"title":"Unapprove a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/unapprove","href":"/api-reference/tent-templates/unapprove-a-tent-template"},{"title":"Clone a tent template","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/clone","href":"/api-reference/tent-templates/clone-a-tent-template"},{"title":"Get generation status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/generations/{generationId}","href":"/api-reference/tent-templates/get-generation-status"},{"title":"Get generation HTML","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/generations/{generationId}/content","href":"/api-reference/tent-templates/get-generation-html"},{"title":"List template assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/assets","href":"/api-reference/tent-templates/list-template-assets"},{"title":"Upload a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tent-templates/{templateId}/assets","href":"/api-reference/tent-templates/upload-a-template-asset"},{"title":"Get a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tent-templates/{templateId}/assets/{assetId}","href":"/api-reference/tent-templates/get-a-template-asset"},{"title":"Delete a template asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tent-templates/{templateId}/assets/{assetId}","href":"/api-reference/tent-templates/delete-a-template-asset"}]}]}]},"basePath":"","title":"Upsert contacts - Tented Help Center","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}