Upsert contacts by email, look them up, and manage list membership from your own systems.
A contact belongs to one workspace and is unique by email. Emails are trimmed and lower-cased before use. Lists are subscription lists, and a contact can be on many of them.
Endpoint
Scope
What it does
GET /v1/contacts
contacts:read
Page through contacts, newest first. Filter by status or listId.
POST /v1/contacts
contacts:write
Create or update a contact (upsert on email)
GET /v1/contacts/search?email=
contacts:read
One contact with custom field values and lists, or null
GET /v1/lists
contacts:read
Every list with its membership count
POST /v1/lists/{id}/subscribe
contacts:write
Add a contact to a list, creating the contact if needed
The response is 201 with created: true for a new contact and 200 with created: false for an update. Any field you leave out is left as it is.
Subscription status is never changed by an upsert. Use the list endpoints for membership.
customFields are written only for keys defined under Settings → Custom Fields. Unknown keys are ignored without an error. Each value is checked against its field’s type; a value the field can’t hold (a word in a number field, an option a dropdown doesn’t declare) is refused with 400 and nothing is written.
A multi-select field takes an array of its declared options ("interests": ["running", "yoga"]; "running; yoga" works too) and is returned as an array. Sending it replaces the contact’s set.
source and metadata are written only when the contact is created.
When the plan’s contact limit is reached, creating a new contact answers 403 with code: "contact_limit_reached". Updating an existing contact still works.
List membership
POST /v1/lists/{id}/subscribe creates the contact if it does not exist, with status ACTIVE and source api. It then makes the membership ACTIVE, and a membership that was unsubscribed becomes active again. The call also fires the CONTACT_ADDED_TO_LIST webhook and starts journeys that trigger on joining the list.
This endpoint sends no double opt-in confirmation, whatever the list’s double opt-in setting. Subscribing someone here is a statement that you already have their consent.
POST /v1/lists/{id}/unsubscribe marks the membership UNSUBSCRIBED (it isn’t deleted, so the opt-out is remembered). The contact and its other lists are untouched. removed: false means there was nothing to unsubscribe.contactCount on GET /v1/lists counts every membership on the list, including pending and unsubscribed ones.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"InstantCampaign","colors":{"primary":"#C21858","light":"#E25E92","dark":"#A81049"},"logo":{"light":"https://mintcdn.com/cloudfirst/1fZVgGXmDmFaSTGB/logo/light.svg?fit=max\u0026auto=format\u0026n=1fZVgGXmDmFaSTGB\u0026q=85\u0026s=a2f64b237aae1e56f542e529f411a0e1","dark":"https://mintcdn.com/cloudfirst/1fZVgGXmDmFaSTGB/logo/dark.svg?fit=max\u0026auto=format\u0026n=1fZVgGXmDmFaSTGB\u0026q=85\u0026s=d313c782b72312ee9fa89292a4432e06","href":"https://instantcampaign.ai"},"favicon":"https://mintcdn.com/cloudfirst/kEODTZekPllgGvfl/favicon.svg?fit=max\u0026auto=format\u0026n=kEODTZekPllgGvfl\u0026q=85\u0026s=91dc81e427c4033bc51b03eae2b7fe24","styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudfirst","hasAudioNarration":false,"actualSubdomain":"cloudfirst","customDomains":["docs.instantcampaign.ai"],"gitSource":{"type":"github","owner":"tanmaykarkare","repo":"instantcampaign","deployBranch":"main","contentDirectory":"mintlify-docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af1cf192126ef8f8130b02b","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"Documentation","count":94},{"language":"default","tag":"Email builder \u0026 templates","count":26},{"language":"default","tag":"Integrations","count":22},{"language":"default","tag":"Campaigns","count":13},{"language":"default","tag":"Workspace \u0026 account","count":12},{"language":"default","tag":"Ad Studio","count":9},{"language":"default","tag":"Automations, forms \u0026 pages","count":9},{"language":"default","tag":"API Reference","count":8},{"language":"default","tag":"Developers","count":8},{"language":"default","tag":"Developer guides","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".callout[data-callout-type=\"tip\"]{border-color:#F8C9DB!important;background-color:#FDF2F6!important}.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:#870D3B!important}.dark .callout[data-callout-type=\"tip\"]{border-color:#5F0A2A!important;background-color:rgba(194, 24, 88, 0.18)!important}.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg,.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:#F09CBC!important}.callout[data-callout-type=\"note\"]{border-color:#E6E3E9!important;background-color:#F8F7F9!important}.callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:#322F37!important}.callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg{color:#C21858!important}.dark .callout[data-callout-type=\"note\"]{border-color:#322F37!important;background-color:rgba(255, 255, 255, 0.06)!important}.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:#E6E3E9!important}.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg{color:#E25E92!important}"}],"page":{"pagePath":"api-reference/contacts-and-lists","slug":"/api-reference/contacts-and-lists","pageMetadata":{"title":"Contacts \u0026 lists","description":"Upsert contacts by email, look them up, and manage list membership from your own systems.","href":"/api-reference/contacts-and-lists"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Upsert contacts by email, look them up, and manage list membership from your own systems.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`A contact belongs to one workspace and is unique by email. Emails are trimmed and lower-cased before use. Lists are subscription lists, and a contact can be on many of them.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Endpoint`}),_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /v1/contacts`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`contacts:read`})}),_jsxs(_components.td,{children:[`Page through contacts, newest first. Filter by `,_jsx(_components.code,{children:`status`}),` or `,_jsx(_components.code,{children:`listId`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/contacts`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`contacts:write`})}),_jsx(_components.td,{children:`Create or update a contact (upsert on email)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /v1/contacts/search?email=`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`contacts:read`})}),_jsxs(_components.td,{children:[`One contact with custom field values and lists, or `,_jsx(_components.code,{children:`null`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /v1/lists`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`contacts:read`})}),_jsx(_components.td,{children:`Every list with its membership count`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/lists/{id}/subscribe`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`contacts:write`})}),_jsx(_components.td,{children:`Add a contact to a list, creating the contact if needed`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/lists/{id}/unsubscribe`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`contacts:write`})}),_jsx(_components.td,{children:`Remove a contact from a list`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`upserting-a-contact`,children:`Upserting a contact`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://instantcampaign.ai/api/v1/contacts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer ic_YOUR_KEY\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"email\": \"jane@example.com\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"firstName\": \"Jane\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"country\": \"GB\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"language\": \"en\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"customFields\": { \"plan\": \"pro\", \"interests\": [\"running\", \"yoga\"] }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The response is `,_jsx(_components.code,{children:`201`}),` with `,_jsx(_components.code,{children:`created: true`}),` for a new contact and `,_jsx(_components.code,{children:`200`}),` with `,_jsx(_components.code,{children:`created: false`}),` for an update. Any field you leave out is left as it is.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Subscription status is never changed by an upsert.`}),` Use the list endpoints for membership.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`customFields`}),` are written only for keys defined under `,_jsx(_components.strong,{children:`Settings → Custom Fields`}),`. Unknown keys are ignored without an error. Each value is checked against its field’s type; a value the field can’t hold (a word in a number field, an option a dropdown doesn’t declare) is refused with `,_jsx(_components.code,{children:`400`}),` and nothing is written.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`multi-select`}),` field takes an array of its declared options (`,_jsx(_components.code,{children:`\"interests\": [\"running\", \"yoga\"]`}),`; `,_jsx(_components.code,{children:`\"running; yoga\"`}),` works too) and is returned as an array. Sending it replaces the contact’s set.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`source`}),` and `,_jsx(_components.code,{children:`metadata`}),` are written only when the contact is created.`]}),`\n`,_jsxs(_components.li,{children:[`When the plan’s contact limit is reached, creating a `,_jsx(_components.em,{children:`new`}),` contact answers `,_jsx(_components.code,{children:`403`}),` with `,_jsx(_components.code,{children:`code: \"contact_limit_reached\"`}),`. Updating an existing contact still works.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`list-membership`,children:`List membership`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /v1/lists/{id}/subscribe`}),` creates the contact if it does not exist, with status `,_jsx(_components.code,{children:`ACTIVE`}),` and source `,_jsx(_components.code,{children:`api`}),`. It then makes the membership `,_jsx(_components.code,{children:`ACTIVE`}),`, and a membership that was unsubscribed becomes active again. The call also fires the `,_jsx(_components.code,{children:`CONTACT_ADDED_TO_LIST`}),` webhook and starts journeys that trigger on joining the list.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`This endpoint sends no double opt-in confirmation, whatever the list’s double opt-in setting. Subscribing someone here is a statement that you already have their consent.`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /v1/lists/{id}/unsubscribe`}),` marks the membership `,_jsx(_components.code,{children:`UNSUBSCRIBED`}),` (it isn’t deleted, so the opt-out is remembered). The contact and its other lists are untouched. `,_jsx(_components.code,{children:`removed: false`}),` means there was nothing to unsubscribe.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contactCount`}),` on `,_jsx(_components.code,{children:`GET /v1/lists`}),` counts every membership on the list, including pending and unsubscribed ones.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Contacts \u0026 lists","description":"Upsert contacts by email, look them up, and manage list membership from your own systems.","href":"/api-reference/contacts-and-lists"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Upserting a contact","slug":"upserting-a-contact","depth":2,"children":[]},{"title":"List membership","slug":"list-membership","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cloudfirst","siteName":"InstantCampaign","title":"Contacts \u0026 lists - InstantCampaign","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T14:49:33.004Z","originalFileLocation":"api-reference/contacts-and-lists.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=\"Upsert contacts by email, look them up, and manage list membership from your own systems.\">\u003cmeta data-mint-head name=\"application-name\" content=\"InstantCampaign\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_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/cloudfirst/5Wsgmf95oRjSES1_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Contacts \u0026amp; lists - InstantCampaign\">\u003cmeta data-mint-head property=\"og:description\" content=\"Upsert contacts by email, look them up, and manage list membership from your own systems.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InstantCampaign\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudfirst.mintlify.site/_mintlify/api/og/v2?division=Endpoints\u0026amp;title=Contacts+%26+lists\u0026amp;description=Upsert+contacts+by+email%2C+look+them+up%2C+and+manage+list+membership+from+your+own+systems.\u0026amp;theme=b0507e1223d7bfaaeb14c445\u0026amp;signature=72c8598acda3dd83e3b4643e1ca5b2f89195ba666a9d2188df6a359bf91b1aed\">\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=\"Contacts \u0026amp; lists - InstantCampaign\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Upsert contacts by email, look them up, and manage list membership from your own systems.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudfirst.mintlify.site/_mintlify/api/og/v2?division=Endpoints\u0026amp;title=Contacts+%26+lists\u0026amp;description=Upsert+contacts+by+email%2C+look+them+up%2C+and+manage+list+membership+from+your+own+systems.\u0026amp;theme=b0507e1223d7bfaaeb14c445\u0026amp;signature=72c8598acda3dd83e3b4643e1ca5b2f89195ba666a9d2188df6a359bf91b1aed\">\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/cloudfirst/5Wsgmf95oRjSES1_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"InstantCampaign\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C21858\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists\">\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-and-lists.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.instantcampaign.ai/#organization\",\"name\":\"InstantCampaign\",\"url\":\"https://docs.instantcampaign.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudfirst/1fZVgGXmDmFaSTGB/logo/light.svg?fit=max\u0026auto=format\u0026n=1fZVgGXmDmFaSTGB\u0026q=85\u0026s=a2f64b237aae1e56f542e529f411a0e1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.instantcampaign.ai#website\",\"name\":\"InstantCampaign\",\"url\":\"https://docs.instantcampaign.ai\",\"publisher\":{\"@id\":\"https://docs.instantcampaign.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists#webpage\",\"url\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists\",\"name\":\"Contacts \u0026 lists\",\"description\":\"Upsert contacts by email, look them up, and manage list membership from your own systems.\",\"dateModified\":\"2026-10-24T14:49:33.004Z\",\"isPartOf\":{\"@id\":\"https://docs.instantcampaign.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"InstantCampaign\",\"item\":\"https://docs.instantcampaign.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contacts \u0026 lists\",\"item\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists#article\",\"headline\":\"Contacts \u0026 lists\",\"name\":\"Contacts \u0026 lists\",\"description\":\"Upsert contacts by email, look them up, and manage list membership from your own systems.\",\"url\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists\",\"mainEntityOfPage\":{\"@id\":\"https://docs.instantcampaign.ai/api-reference/contacts-and-lists#webpage\"},\"dateModified\":\"2026-10-24T14:49:33.004Z\",\"publisher\":{\"@id\":\"https://docs.instantcampaign.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.instantcampaign.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"InstantCampaign\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"InstantCampaign\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/contacts-and-lists.md","siteName":"InstantCampaign","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/guides/developers/overview"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API introduction","description":"Base URL, API keys and scopes, rate limits, errors, pagination, idempotency and the request log for the InstantCampaign public API.","href":"/api-reference/introduction"}]},{"group":"Endpoints","pages":[{"title":"Contacts \u0026 lists","href":"/api-reference/contacts-and-lists"},{"title":"Events \u0026 goals","description":"Record what contacts did, including conversions with a value, and start journeys that listen for an event name.","href":"/api-reference/events"},{"title":"Transactional email API","href":"/api-reference/transactional"},{"title":"Webhooks API","href":"/api-reference/webhooks"},{"title":"Website tracking","href":"/api-reference/website-tracking"},{"title":"Journeys","href":"/api-reference/journeys"},{"title":"MCP server","href":"/api-reference/mcp"}]}]}]},"basePath":"","title":"Contacts \u0026 lists - InstantCampaign","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}