Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool.
Billing
charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay.
The current cost is shown in the app under Settings → Billing and in the live GET /api/v1/openapi.json. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The charged and pointsCharged fields of the response state what this call actually consumed.
Workspace API key (loice_sk_ + 48 hex characters), created under Settings → API Keys. Sent as Authorization: Bearer loice_sk_…. Invalid, missing, or expired keys are rejected with 401 before any billable work happens.
Optional, 1–255 printable ASCII characters, scoped to your workspace. Send the same key when you retry the same request: the original outcome is replayed (replay: true, charged: false, pointsCharged: 0) instead of running and charging again. The same key with a different request is refused with 409 idempotency_conflict, as is a key reused after its replay record expired (kept 30 days); a key whose first request is still running answers 409 idempotency_in_progress. Without a key, every request is a new lookup, billed at most once on its own.
The email address to enrich. Trimmed and lower-cased before anything else; a non-blank value that is not a well-formed address is answered reason: "invalid-input", uncharged.
Response
Every outcome, including refusals — inspect found, reason, charged and replay. A refusal is a 200 with found: false and a reason, except an empty balance (402 insufficient_credits).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Loice","description":"Loice is the AI agent that finds verified leads: product guides, API reference and MCP set-up.","colors":{"primary":"#ff5a1f","light":"#ff7c46","dark":"#e14e15"},"logo":{"light":"https://mintcdn.com/loice-ai/BjcqR91eFdyMv2fQ/logo/loice-black.png?fit=max\u0026auto=format\u0026n=BjcqR91eFdyMv2fQ\u0026q=85\u0026s=bec1e804b7d2b4e6090aad41f5ec149e","dark":"https://mintcdn.com/loice-ai/BjcqR91eFdyMv2fQ/logo/loice-white.png?fit=max\u0026auto=format\u0026n=BjcqR91eFdyMv2fQ\u0026q=85\u0026s=047e3e67ec3049b5fd51a830b6d6ecf5","href":"https://app.loice.ai"},"favicon":"https://mintcdn.com/loice-ai/idv10iVf8OQiCSpv/favicon.svg?fit=max\u0026auto=format\u0026n=idv10iVf8OQiCSpv\u0026q=85\u0026s=a2b1dfa846aba2dd2708a97f2239882d","api":{"openapi":"openapi.json","playground":{"display":"interactive","proxy":false,"credentials":false},"examples":{"defaults":"required","languages":["curl","javascript","node","python"]}},"navbar":{"links":[{"href":"/connect-mcp","label":"Connect MCP"},{"href":"https://app.loice.ai/settings/account?tab=api","label":"API keys"}],"primary":{"type":"button","label":"Open Loice","href":"https://app.loice.ai"}},"footer":{"links":[{"header":"Loice","items":[{"label":"App","href":"https://app.loice.ai"},{"label":"Website","href":"https://loice.ai"},{"label":"Status","href":"https://status.loice.ai"}]}]},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"loice-ai","hasAudioNarration":false,"actualSubdomain":"loice-ai","customDomains":["docs.loice.ai"],"gitSource":{"type":"github","owner":"loice-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af3055c2e595ebec461a1ad","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Documentation","count":24},{"language":"default","tag":"API reference","count":12},{"language":"default","tag":"API Reference","count":12},{"language":"default","tag":"API basics","count":8},{"language":"default","tag":"Product","count":7},{"language":"default","tag":"Account","count":4},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Integrations","count":2}]},"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":"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/enrich-an-email-address","slug":"/api-reference/enrich-an-email-address","pageMetadata":{"title":"Enrich an email address","description":"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool.\n\n#### Billing\n\n- charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay.\n\nThe current cost is shown in the app under Settings → Billing and in the live `GET /api/v1/openapi.json`. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The `charged` and `pointsCharged` fields of the response state what this call actually consumed.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/enrich/email","href":"/api-reference/enrich-an-email-address","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 h4: \"h4\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool.\"\n }), \"\\n\", _jsx(_components.h4, {\n children: \"Billing\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay.\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The current cost is shown in the app under Settings → Billing and in the live \", _jsx(_components.code, {\n children: \"GET /api/v1/openapi.json\"\n }), \". Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The \", _jsx(_components.code, {\n children: \"charged\"\n }), \" and \", _jsx(_components.code, {\n children: \"pointsCharged\"\n }), \" fields of the response state what this call actually consumed.\"]\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":"Enrich an email address","description":"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool.\n\n#### Billing\n\n- charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay.\n\nThe current cost is shown in the app under Settings → Billing and in the live `GET /api/v1/openapi.json`. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The `charged` and `pointsCharged` fields of the response state what this call actually consumed.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/enrich/email","href":"/api-reference/enrich-an-email-address","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Enrich an email address","description":"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool.\n\n#### Billing\n\n- charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay.\n\nThe current cost is shown in the app under Settings → Billing and in the live `GET /api/v1/openapi.json`. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The `charged` and `pointsCharged` fields of the response state what this call actually consumed.","security":["0fbd33cf-afc8-4ee6-999b-c289a0830284"],"parameters":["59d72ba6-7ce3-45fe-9a16-bafe25e1d933"],"requestBody":"b7f01903-30a9-4044-ba3b-c0d1e4812508","responses":{"200":"b04b11bb-f702-413e-bcb1-95091b3972c6","400":"a05d1999-9668-4611-ab62-2a137c55c3f2","401":"d982d3b8-fa4d-4beb-9d50-cac755a3958a","402":"da7699f6-6251-4ff7-8889-dde35867161d","405":"3c092ae1-50f4-4580-b99d-89cb47ed82d9","409":"df6cf8bc-e101-45b8-bd17-7e1e9db6ae4e","429":"048e9d9c-1c91-415d-9b7c-58af1c746276","500":"518489e9-74ac-4ab3-a036-c72c0c5de75a"},"method":"post","type":"path","servers":["695260fa-a90d-430f-9fda-0588978e186c"],"path":"/api/v1/enrich/email","baseUrlOptions":["https://app.loice.ai"],"title":"Enrich an email address","codeSamples":[],"requestExampleLanguages":["bash","javascript","node","python"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","disableProxy":true},"dependencies":{"parameters":{"59d72ba6-7ce3-45fe-9a16-bafe25e1d933":{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Optional, 1–255 printable ASCII characters, scoped to your workspace. Send the same key when you retry the same request: the original outcome is replayed (`replay: true`, `charged: false`, `pointsCharged: 0`) instead of running and charging again. The same key with a different request is refused with 409 `idempotency_conflict`, as is a key reused after its replay record expired (kept 30 days); a key whose first request is still running answers 409 `idempotency_in_progress`. Without a key, every request is a new lookup, billed at most once on its own.","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Optional, 1–255 printable ASCII characters, scoped to your workspace. Send the same key when you retry the same request: the original outcome is replayed (`replay: true`, `charged: false`, `pointsCharged: 0`) instead of running and charging again. The same key with a different request is refused with 409 `idempotency_conflict`, as is a key reused after its replay record expired (kept 30 days); a key whose first request is still running answers 409 `idempotency_in_progress`. Without a key, every request is a new lookup, billed at most once on its own.","name":"Idempotency-Key","in":"header"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email address to enrich. Trimmed and lower-cased before anything else; a non-blank value that is not a well-formed address is answered `reason: \"invalid-input\"`, uncharged.","isRequired":true,"uniqueKey":"email","typeLabel":"string"}},"required":["email"],"uniqueKey":"","typeLabel":"object"},"example":{"email":"jane.doe@acme.com"},"examples":{"Example":{"title":"Example","value":{"email":"jane.doe@acme.com"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"b04b11bb-f702-413e-bcb1-95091b3972c6":{"description":"Every outcome, including refusals — inspect `found`, `reason`, `charged` and `replay`. A refusal is a 200 with `found: false` and a `reason`, except an empty balance (402 `insufficient_credits`).","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether any source stated a fact about the person behind the address.","isRequired":true,"uniqueKey":"data.found","typeLabel":"boolean"},"email":{"type":"string","description":"The normalised address (the trimmed input for `invalid-input`).","isRequired":true,"uniqueKey":"data.email","typeLabel":"string"},"person":{"oneOf":[{"type":"object","description":"THE canonical Person — every attribute present, `null` or `[]` when no source stated it. Nothing is inferred from the address. `null` when nothing was found or the request was refused.","required":["avatarUrl","fullName","firstName","lastName","linkedinUrl","xUrl","facebookUrl","instagramUrl","telegramUrl","title","about","company","companyName","companyLinkedinUrl","companyLogoUrl","domain","industry","location","department","seniority","yearsOfExperience","employment","education","historyStatus"],"properties":{"avatarUrl":{"oneOf":[{"type":"string","description":"Owned image address (`/api/images/\u003cid>`, authenticated). Null ⇒ render initials.","isRequired":true,"uniqueKey":"data.person.oneOf.0.avatarUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Owned image address (`/api/images/\u003cid>`, authenticated). Null ⇒ render initials.","isRequired":true,"uniqueKey":"data.person.oneOf.0.avatarUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.avatarUrl","typeLabel":"string | null"},"fullName":{"oneOf":[{"type":"string","description":"The source's own statement of the name.","isRequired":true,"uniqueKey":"data.person.oneOf.0.fullName.oneOf.0","typeLabel":"string"},{"type":"null","description":"The source's own statement of the name.","isRequired":true,"uniqueKey":"data.person.oneOf.0.fullName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.fullName","typeLabel":"string | null"},"firstName":{"oneOf":[{"type":"string","description":"The first name, as the source stated it when it stated two names; otherwise `fullName` split at read time (as written). Null when the name does not split.","isRequired":true,"uniqueKey":"data.person.oneOf.0.firstName.oneOf.0","typeLabel":"string"},{"type":"null","description":"The first name, as the source stated it when it stated two names; otherwise `fullName` split at read time (as written). Null when the name does not split.","isRequired":true,"uniqueKey":"data.person.oneOf.0.firstName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.firstName","typeLabel":"string | null"},"lastName":{"oneOf":[{"type":"string","description":"The last name (the whole surname, e.g. \"van Beethoven\"), on the same rule as `firstName`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.lastName.oneOf.0","typeLabel":"string"},{"type":"null","description":"The last name (the whole surname, e.g. \"van Beethoven\"), on the same rule as `firstName`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.lastName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.lastName","typeLabel":"string | null"},"linkedinUrl":{"type":"string","description":"Canonical profile URL — the identity. Never null. The public profile URL (`https://www.linkedin.com/in/\u003cpublic-name>`) when known, else the member-ID URL.","isRequired":true,"uniqueKey":"data.person.oneOf.0.linkedinUrl","typeLabel":"string"},"xUrl":{"oneOf":[{"type":"string","description":"The person's own X (Twitter) profile as a source stated it, as `https://x.com/\u003chandle>`. Null when no source stated one — never derived from a name, an address or another site's username.","isRequired":true,"uniqueKey":"data.person.oneOf.0.xUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"The person's own X (Twitter) profile as a source stated it, as `https://x.com/\u003chandle>`. Null when no source stated one — never derived from a name, an address or another site's username.","isRequired":true,"uniqueKey":"data.person.oneOf.0.xUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.xUrl","typeLabel":"string | null"},"facebookUrl":{"oneOf":[{"type":"string","description":"The person's own Facebook profile as a source stated it (`https://www.facebook.com/\u003cname>` or `…/profile.php?id=\u003cdigits>`). Null when unstated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.facebookUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"The person's own Facebook profile as a source stated it (`https://www.facebook.com/\u003cname>` or `…/profile.php?id=\u003cdigits>`). Null when unstated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.facebookUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.facebookUrl","typeLabel":"string | null"},"instagramUrl":{"oneOf":[{"type":"string","description":"The person's own Instagram profile as a source stated it, as `https://www.instagram.com/\u003cuser>`. Null when unstated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.instagramUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"The person's own Instagram profile as a source stated it, as `https://www.instagram.com/\u003cuser>`. Null when unstated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.instagramUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.instagramUrl","typeLabel":"string | null"},"telegramUrl":{"oneOf":[{"type":"string","description":"The person's own Telegram profile as a source stated it, as `https://t.me/\u003cusername>` (never an invite or a channel post). Null when unstated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.telegramUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"The person's own Telegram profile as a source stated it, as `https://t.me/\u003cusername>` (never an invite or a channel post). Null when unstated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.telegramUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.telegramUrl","typeLabel":"string | null"},"title":{"oneOf":[{"type":"string","description":"Title of the primary current position.","isRequired":true,"uniqueKey":"data.person.oneOf.0.title.oneOf.0","typeLabel":"string"},{"type":"null","description":"Title of the primary current position.","isRequired":true,"uniqueKey":"data.person.oneOf.0.title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.title","typeLabel":"string | null"},"about":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.about.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.about.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.about","typeLabel":"string | null"},"company":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.name.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.name","typeLabel":"string | null"},"linkedinUrl":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.linkedinUrl.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.linkedinUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.linkedinUrl","typeLabel":"string | null"},"tagline":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.tagline.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.tagline.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.tagline","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.description.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.description","typeLabel":"string | null"},"industry":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.industry.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.industry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.industry","typeLabel":"string | null"},"employeeBand":{"oneOf":[{"type":"string","description":"Size band as the source displays it.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.employeeBand.oneOf.0","typeLabel":"string"},{"type":"null","description":"Size band as the source displays it.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.employeeBand.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.employeeBand","typeLabel":"string | null"},"employeeCount":{"oneOf":[{"type":"integer","description":"Exact headcount, when stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.employeeCount.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Exact headcount, when stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.employeeCount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.employeeCount","typeLabel":"integer | null"},"followerCount":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.followerCount.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.followerCount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.followerCount","typeLabel":"integer | null"},"websiteUrl":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.websiteUrl.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.websiteUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.websiteUrl","typeLabel":"string | null"},"websiteDomain":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.websiteDomain.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.websiteDomain.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.websiteDomain","typeLabel":"string | null"},"headquarters":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.headquarters.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.headquarters.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.headquarters","typeLabel":"string | null"},"hqLocality":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqLocality.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqLocality.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqLocality","typeLabel":"string | null"},"hqRegion":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqRegion.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqRegion.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqRegion","typeLabel":"string | null"},"hqCountry":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqCountry.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqCountry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.hqCountry","typeLabel":"string | null"},"foundedYear":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.foundedYear.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.foundedYear.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.foundedYear","typeLabel":"integer | null"},"companyType":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.companyType.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.companyType.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.companyType","typeLabel":"string | null"},"specialties":{"type":"array","items":{"type":"string","uniqueKey":"data.person.oneOf.0.company.specialties.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.specialties","typeLabel":"string[]"},"logoUrl":{"type":"null","description":"Always null. Reserved so the shape stays stable: a provider image address is never returned (it is signed, expires, and discloses the viewer). Render `logoImageUrl`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.logoUrl","typeLabel":"null"},"logoImageUrl":{"oneOf":[{"type":"string","description":"Our own copy of the logo (`/api/images/\u003cid>`, same authentication as this API). Null when the source states no logo or no copy is held.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.logoImageUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Our own copy of the logo (`/api/images/\u003cid>`, same authentication as this API). Null when the source states no logo or no copy is held.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.logoImageUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.logoImageUrl","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"The company phone. Always null until phone verification is available; reserved so the shape does not change when it is.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"The company phone. Always null until phone verification is available; reserved so the shape does not change when it is.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.phone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.phone","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"The company's general contact email: only a generic role address (info@, sales@, …) on the company's own domain, stated by the company, that passed email verification. Null when none is stated or it did not verify. Never a personal address.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"The company's general contact email: only a generic role address (info@, sales@, …) on the company's own domain, stated by the company, that passed email verification. Null when none is stated or it did not verify. Never a personal address.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.email","typeLabel":"string | null"},"xUrl":{"oneOf":[{"type":"string","description":"X (Twitter) profile the company states as its own, as `https://x.com/\u003chandle>`. Null when not stated; never constructed from the name.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.xUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"X (Twitter) profile the company states as its own, as `https://x.com/\u003chandle>`. Null when not stated; never constructed from the name.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.xUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.xUrl","typeLabel":"string | null"},"facebookUrl":{"oneOf":[{"type":"string","description":"Facebook page the company states as its own, as `https://www.facebook.com/\u003cpage>`. Null when not stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.facebookUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Facebook page the company states as its own, as `https://www.facebook.com/\u003cpage>`. Null when not stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.facebookUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.facebookUrl","typeLabel":"string | null"},"instagramUrl":{"oneOf":[{"type":"string","description":"Instagram profile the company states as its own, as `https://www.instagram.com/\u003cuser>`. Null when not stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.instagramUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Instagram profile the company states as its own, as `https://www.instagram.com/\u003cuser>`. Null when not stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.instagramUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.instagramUrl","typeLabel":"string | null"},"youtubeUrl":{"oneOf":[{"type":"string","description":"YouTube channel the company states as its own, as `https://www.youtube.com/` followed by `@handle`, `channel/…`, `c/…` or `user/…`. Null when not stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.youtubeUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"YouTube channel the company states as its own, as `https://www.youtube.com/` followed by `@handle`, `channel/…`, `c/…` or `user/…`. Null when not stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.youtubeUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.youtubeUrl","typeLabel":"string | null"},"confirmedAt":{"oneOf":[{"type":"string","description":"When this record was last confirmed against the source. Null when the Company is built only from what a lead or list row observed (no company record).","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.confirmedAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"When this record was last confirmed against the source. Null when the Company is built only from what a lead or list row observed (no company record).","isRequired":true,"uniqueKey":"data.person.oneOf.0.company.confirmedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.company.confirmedAt","typeLabel":"string | null"}},"required":["name","linkedinUrl","tagline","description","industry","employeeBand","employeeCount","followerCount","websiteUrl","websiteDomain","headquarters","hqLocality","hqRegion","hqCountry","foundedYear","companyType","specialties","logoUrl","logoImageUrl","phone","email","xUrl","facebookUrl","instagramUrl","youtubeUrl","confirmedAt"],"description":"The canonical Company for the current employer (same schema as `POST /api/v1/company`).","isRequired":true,"uniqueKey":"data.person.oneOf.0.company","typeLabel":"object"},"companyName":{"oneOf":[{"type":"string","description":"Alias of `company.name`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.companyName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Alias of `company.name`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.companyName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.companyName","typeLabel":"string | null"},"companyLinkedinUrl":{"oneOf":[{"type":"string","description":"Alias of `company.linkedinUrl`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.companyLinkedinUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Alias of `company.linkedinUrl`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.companyLinkedinUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.companyLinkedinUrl","typeLabel":"string | null"},"companyLogoUrl":{"oneOf":[{"type":"string","description":"Alias of `company.logoImageUrl` (owned).","isRequired":true,"uniqueKey":"data.person.oneOf.0.companyLogoUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Alias of `company.logoImageUrl` (owned).","isRequired":true,"uniqueKey":"data.person.oneOf.0.companyLogoUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.companyLogoUrl","typeLabel":"string | null"},"domain":{"oneOf":[{"type":"string","description":"The company's website domain, else the domain the profile resolver stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.domain.oneOf.0","typeLabel":"string"},{"type":"null","description":"The company's website domain, else the domain the profile resolver stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.domain.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.domain","typeLabel":"string | null"},"industry":{"oneOf":[{"type":"string","description":"Alias of `company.industry`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.industry.oneOf.0","typeLabel":"string"},{"type":"null","description":"Alias of `company.industry`.","isRequired":true,"uniqueKey":"data.person.oneOf.0.industry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.industry","typeLabel":"string | null"},"location":{"oneOf":[{"type":"string","description":"The person's own location (never company HQ).","isRequired":true,"uniqueKey":"data.person.oneOf.0.location.oneOf.0","typeLabel":"string"},{"type":"null","description":"The person's own location (never company HQ).","isRequired":true,"uniqueKey":"data.person.oneOf.0.location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.location","typeLabel":"string | null"},"department":{"oneOf":[{"type":"string","enum":["Accounting","Administrative","Arts and Design","Business Development","Community \u0026 Social Services","Consulting","Customer Success and Support","Education","Engineering","Entrepreneurship","Finance","Healthcare Services","Human Resources","Information Technology","Legal","Marketing","Media and Communication","Military and Protective Services","Operations","Product Management","Program and Project Management","Purchasing","Quality Assurance","Real Estate","Research","Sales",null],"description":"Source-stated only; never classified from the title.","isRequired":true,"uniqueKey":"data.person.oneOf.0.department.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["Accounting","Administrative","Arts and Design","Business Development","Community \u0026 Social Services","Consulting","Customer Success and Support","Education","Engineering","Entrepreneurship","Finance","Healthcare Services","Human Resources","Information Technology","Legal","Marketing","Media and Communication","Military and Protective Services","Operations","Product Management","Program and Project Management","Purchasing","Quality Assurance","Real Estate","Research","Sales",null],"description":"Source-stated only; never classified from the title.","isRequired":true,"uniqueKey":"data.person.oneOf.0.department.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.department","typeLabel":"enum\u003cstring> | null"},"seniority":{"oneOf":[{"type":"string","enum":["In Training","Entry Level","Senior","Strategic","Entry Level Manager","Experienced Manager","Director","Vice President","CXO","Owner / Partner",null],"description":"Source-stated only; never classified from the title.","isRequired":true,"uniqueKey":"data.person.oneOf.0.seniority.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["In Training","Entry Level","Senior","Strategic","Entry Level Manager","Experienced Manager","Director","Vice President","CXO","Owner / Partner",null],"description":"Source-stated only; never classified from the title.","isRequired":true,"uniqueKey":"data.person.oneOf.0.seniority.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.seniority","typeLabel":"enum\u003cstring> | null"},"yearsOfExperience":{"oneOf":[{"type":"string","enum":["Less than 1 year","1-2 years","3-5 years","6-10 years","11-15 years","16-20 years","20+ years",null],"description":"Overlap-free union of stated positions; null when any start is missing or the stated precision leaves it between two buckets.","isRequired":true,"uniqueKey":"data.person.oneOf.0.yearsOfExperience.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["Less than 1 year","1-2 years","3-5 years","6-10 years","11-15 years","16-20 years","20+ years",null],"description":"Overlap-free union of stated positions; null when any start is missing or the stated precision leaves it between two buckets.","isRequired":true,"uniqueKey":"data.person.oneOf.0.yearsOfExperience.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.yearsOfExperience","typeLabel":"enum\u003cstring> | null"},"employment":{"type":"array","items":{"type":"object","properties":{"companyName":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].companyName.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].companyName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].companyName","typeLabel":"string | null"},"companyLinkedinUrl":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].companyLinkedinUrl.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].companyLinkedinUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].companyLinkedinUrl","typeLabel":"string | null"},"title":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].title.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].title","typeLabel":"string | null"},"start":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start.oneOf.0.year","typeLabel":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"type":"null","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start.oneOf.0.month.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start.oneOf.0.month","typeLabel":"integer | null"}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].start","typeLabel":"object | null"},"end":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end.oneOf.0.year","typeLabel":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"type":"null","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end.oneOf.0.month.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end.oneOf.0.month","typeLabel":"integer | null"}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].end","typeLabel":"object | null"},"current":{"type":"boolean","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].current","typeLabel":"boolean"},"location":{"oneOf":[{"type":"string","description":"Where the position was held, as the source stated it.","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where the position was held, as the source stated it.","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].location","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","description":"The person's own description of the position, as stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"The person's own description of the position, as stated.","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX].description","typeLabel":"string | null"}},"required":["companyName","companyLinkedinUrl","title","start","end","current","location","description"],"uniqueKey":"data.person.oneOf.0.employment.items.[INDEX]","typeLabel":"object"},"description":"Source order; [] when not available.","isRequired":true,"uniqueKey":"data.person.oneOf.0.employment","typeLabel":"object[]"},"education":{"type":"array","items":{"type":"object","properties":{"school":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].school.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].school.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].school","typeLabel":"string | null"},"schoolLinkedinUrl":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].schoolLinkedinUrl.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].schoolLinkedinUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].schoolLinkedinUrl","typeLabel":"string | null"},"degree":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].degree.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].degree.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].degree","typeLabel":"string | null"},"field":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].field","typeLabel":"string | null"},"start":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start.oneOf.0.year","typeLabel":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"type":"null","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start.oneOf.0.month.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start.oneOf.0.month","typeLabel":"integer | null"}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].start","typeLabel":"object | null"},"end":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end.oneOf.0.year","typeLabel":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"type":"null","description":"1–12, or null when the source stated the year only (never padded).","isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end.oneOf.0.month.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end.oneOf.0.month","typeLabel":"integer | null"}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person.oneOf.0.education.items.[INDEX].end","typeLabel":"object | null"}},"required":["school","schoolLinkedinUrl","degree","field","start","end"],"uniqueKey":"data.person.oneOf.0.education.items.[INDEX]","typeLabel":"object"},"description":"Source order; [] when not available.","isRequired":true,"uniqueKey":"data.person.oneOf.0.education","typeLabel":"object[]"},"historyStatus":{"type":"object","properties":{"employment":{"type":"string","enum":["available","not-yet-available"],"description":"`not-yet-available`: no source has supplied this history yet (the list is []). `available` with [] means the source supplied an empty history.","isRequired":true,"uniqueKey":"data.person.oneOf.0.historyStatus.employment","typeLabel":"enum\u003cstring>"},"education":{"type":"string","enum":["available","not-yet-available"],"description":"`not-yet-available`: no source has supplied this history yet (the list is []). `available` with [] means the source supplied an empty history.","isRequired":true,"uniqueKey":"data.person.oneOf.0.historyStatus.education","typeLabel":"enum\u003cstring>"}},"required":["employment","education"],"isRequired":true,"uniqueKey":"data.person.oneOf.0.historyStatus","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.person.oneOf.0","typeLabel":"object"},{"type":"null","description":"THE canonical Person — every attribute present, `null` or `[]` when no source stated it. Nothing is inferred from the address. `null` when nothing was found or the request was refused.","required":["avatarUrl","fullName","firstName","lastName","linkedinUrl","xUrl","facebookUrl","instagramUrl","telegramUrl","title","about","company","companyName","companyLinkedinUrl","companyLogoUrl","domain","industry","location","department","seniority","yearsOfExperience","employment","education","historyStatus"],"properties":{"avatarUrl":{"oneOf":[{"type":"string","description":"Owned image address (`/api/images/\u003cid>`, authenticated). Null ⇒ render initials."},{"type":"null","description":"Owned image address (`/api/images/\u003cid>`, authenticated). Null ⇒ render initials."}]},"fullName":{"oneOf":[{"type":"string","description":"The source's own statement of the name."},{"type":"null","description":"The source's own statement of the name."}]},"firstName":{"oneOf":[{"type":"string","description":"The first name, as the source stated it when it stated two names; otherwise `fullName` split at read time (as written). Null when the name does not split."},{"type":"null","description":"The first name, as the source stated it when it stated two names; otherwise `fullName` split at read time (as written). Null when the name does not split."}]},"lastName":{"oneOf":[{"type":"string","description":"The last name (the whole surname, e.g. \"van Beethoven\"), on the same rule as `firstName`."},{"type":"null","description":"The last name (the whole surname, e.g. \"van Beethoven\"), on the same rule as `firstName`."}]},"linkedinUrl":{"type":"string","description":"Canonical profile URL — the identity. Never null. The public profile URL (`https://www.linkedin.com/in/\u003cpublic-name>`) when known, else the member-ID URL."},"xUrl":{"oneOf":[{"type":"string","description":"The person's own X (Twitter) profile as a source stated it, as `https://x.com/\u003chandle>`. Null when no source stated one — never derived from a name, an address or another site's username."},{"type":"null","description":"The person's own X (Twitter) profile as a source stated it, as `https://x.com/\u003chandle>`. Null when no source stated one — never derived from a name, an address or another site's username."}]},"facebookUrl":{"oneOf":[{"type":"string","description":"The person's own Facebook profile as a source stated it (`https://www.facebook.com/\u003cname>` or `…/profile.php?id=\u003cdigits>`). Null when unstated."},{"type":"null","description":"The person's own Facebook profile as a source stated it (`https://www.facebook.com/\u003cname>` or `…/profile.php?id=\u003cdigits>`). Null when unstated."}]},"instagramUrl":{"oneOf":[{"type":"string","description":"The person's own Instagram profile as a source stated it, as `https://www.instagram.com/\u003cuser>`. Null when unstated."},{"type":"null","description":"The person's own Instagram profile as a source stated it, as `https://www.instagram.com/\u003cuser>`. Null when unstated."}]},"telegramUrl":{"oneOf":[{"type":"string","description":"The person's own Telegram profile as a source stated it, as `https://t.me/\u003cusername>` (never an invite or a channel post). Null when unstated."},{"type":"null","description":"The person's own Telegram profile as a source stated it, as `https://t.me/\u003cusername>` (never an invite or a channel post). Null when unstated."}]},"title":{"oneOf":[{"type":"string","description":"Title of the primary current position."},{"type":"null","description":"Title of the primary current position."}]},"about":{"oneOf":[{"type":"string"},{"type":"null"}]},"company":{"type":"object","properties":{"name":{"oneOf":[{"type":"string"},{"type":"null"}]},"linkedinUrl":{"oneOf":[{"type":"string"},{"type":"null"}]},"tagline":{"oneOf":[{"type":"string"},{"type":"null"}]},"description":{"oneOf":[{"type":"string"},{"type":"null"}]},"industry":{"oneOf":[{"type":"string"},{"type":"null"}]},"employeeBand":{"oneOf":[{"type":"string","description":"Size band as the source displays it."},{"type":"null","description":"Size band as the source displays it."}]},"employeeCount":{"oneOf":[{"type":"integer","description":"Exact headcount, when stated."},{"type":"null","description":"Exact headcount, when stated."}]},"followerCount":{"oneOf":[{"type":"integer"},{"type":"null"}]},"websiteUrl":{"oneOf":[{"type":"string"},{"type":"null"}]},"websiteDomain":{"oneOf":[{"type":"string"},{"type":"null"}]},"headquarters":{"oneOf":[{"type":"string"},{"type":"null"}]},"hqLocality":{"oneOf":[{"type":"string"},{"type":"null"}]},"hqRegion":{"oneOf":[{"type":"string"},{"type":"null"}]},"hqCountry":{"oneOf":[{"type":"string"},{"type":"null"}]},"foundedYear":{"oneOf":[{"type":"integer"},{"type":"null"}]},"companyType":{"oneOf":[{"type":"string"},{"type":"null"}]},"specialties":{"type":"array","items":{"type":"string"}},"logoUrl":{"type":"null","description":"Always null. Reserved so the shape stays stable: a provider image address is never returned (it is signed, expires, and discloses the viewer). Render `logoImageUrl`."},"logoImageUrl":{"oneOf":[{"type":"string","description":"Our own copy of the logo (`/api/images/\u003cid>`, same authentication as this API). Null when the source states no logo or no copy is held."},{"type":"null","description":"Our own copy of the logo (`/api/images/\u003cid>`, same authentication as this API). Null when the source states no logo or no copy is held."}]},"phone":{"oneOf":[{"type":"string","description":"The company phone. Always null until phone verification is available; reserved so the shape does not change when it is."},{"type":"null","description":"The company phone. Always null until phone verification is available; reserved so the shape does not change when it is."}]},"email":{"oneOf":[{"type":"string","description":"The company's general contact email: only a generic role address (info@, sales@, …) on the company's own domain, stated by the company, that passed email verification. Null when none is stated or it did not verify. Never a personal address."},{"type":"null","description":"The company's general contact email: only a generic role address (info@, sales@, …) on the company's own domain, stated by the company, that passed email verification. Null when none is stated or it did not verify. Never a personal address."}]},"xUrl":{"oneOf":[{"type":"string","description":"X (Twitter) profile the company states as its own, as `https://x.com/\u003chandle>`. Null when not stated; never constructed from the name."},{"type":"null","description":"X (Twitter) profile the company states as its own, as `https://x.com/\u003chandle>`. Null when not stated; never constructed from the name."}]},"facebookUrl":{"oneOf":[{"type":"string","description":"Facebook page the company states as its own, as `https://www.facebook.com/\u003cpage>`. Null when not stated."},{"type":"null","description":"Facebook page the company states as its own, as `https://www.facebook.com/\u003cpage>`. Null when not stated."}]},"instagramUrl":{"oneOf":[{"type":"string","description":"Instagram profile the company states as its own, as `https://www.instagram.com/\u003cuser>`. Null when not stated."},{"type":"null","description":"Instagram profile the company states as its own, as `https://www.instagram.com/\u003cuser>`. Null when not stated."}]},"youtubeUrl":{"oneOf":[{"type":"string","description":"YouTube channel the company states as its own, as `https://www.youtube.com/` followed by `@handle`, `channel/…`, `c/…` or `user/…`. Null when not stated."},{"type":"null","description":"YouTube channel the company states as its own, as `https://www.youtube.com/` followed by `@handle`, `channel/…`, `c/…` or `user/…`. Null when not stated."}]},"confirmedAt":{"oneOf":[{"type":"string","description":"When this record was last confirmed against the source. Null when the Company is built only from what a lead or list row observed (no company record)."},{"type":"null","description":"When this record was last confirmed against the source. Null when the Company is built only from what a lead or list row observed (no company record)."}]}},"required":["name","linkedinUrl","tagline","description","industry","employeeBand","employeeCount","followerCount","websiteUrl","websiteDomain","headquarters","hqLocality","hqRegion","hqCountry","foundedYear","companyType","specialties","logoUrl","logoImageUrl","phone","email","xUrl","facebookUrl","instagramUrl","youtubeUrl","confirmedAt"],"description":"The canonical Company for the current employer (same schema as `POST /api/v1/company`)."},"companyName":{"oneOf":[{"type":"string","description":"Alias of `company.name`."},{"type":"null","description":"Alias of `company.name`."}]},"companyLinkedinUrl":{"oneOf":[{"type":"string","description":"Alias of `company.linkedinUrl`."},{"type":"null","description":"Alias of `company.linkedinUrl`."}]},"companyLogoUrl":{"oneOf":[{"type":"string","description":"Alias of `company.logoImageUrl` (owned)."},{"type":"null","description":"Alias of `company.logoImageUrl` (owned)."}]},"domain":{"oneOf":[{"type":"string","description":"The company's website domain, else the domain the profile resolver stated."},{"type":"null","description":"The company's website domain, else the domain the profile resolver stated."}]},"industry":{"oneOf":[{"type":"string","description":"Alias of `company.industry`."},{"type":"null","description":"Alias of `company.industry`."}]},"location":{"oneOf":[{"type":"string","description":"The person's own location (never company HQ)."},{"type":"null","description":"The person's own location (never company HQ)."}]},"department":{"oneOf":[{"type":"string","enum":["Accounting","Administrative","Arts and Design","Business Development","Community \u0026 Social Services","Consulting","Customer Success and Support","Education","Engineering","Entrepreneurship","Finance","Healthcare Services","Human Resources","Information Technology","Legal","Marketing","Media and Communication","Military and Protective Services","Operations","Product Management","Program and Project Management","Purchasing","Quality Assurance","Real Estate","Research","Sales",null],"description":"Source-stated only; never classified from the title."},{"type":"null","enum":["Accounting","Administrative","Arts and Design","Business Development","Community \u0026 Social Services","Consulting","Customer Success and Support","Education","Engineering","Entrepreneurship","Finance","Healthcare Services","Human Resources","Information Technology","Legal","Marketing","Media and Communication","Military and Protective Services","Operations","Product Management","Program and Project Management","Purchasing","Quality Assurance","Real Estate","Research","Sales",null],"description":"Source-stated only; never classified from the title."}]},"seniority":{"oneOf":[{"type":"string","enum":["In Training","Entry Level","Senior","Strategic","Entry Level Manager","Experienced Manager","Director","Vice President","CXO","Owner / Partner",null],"description":"Source-stated only; never classified from the title."},{"type":"null","enum":["In Training","Entry Level","Senior","Strategic","Entry Level Manager","Experienced Manager","Director","Vice President","CXO","Owner / Partner",null],"description":"Source-stated only; never classified from the title."}]},"yearsOfExperience":{"oneOf":[{"type":"string","enum":["Less than 1 year","1-2 years","3-5 years","6-10 years","11-15 years","16-20 years","20+ years",null],"description":"Overlap-free union of stated positions; null when any start is missing or the stated precision leaves it between two buckets."},{"type":"null","enum":["Less than 1 year","1-2 years","3-5 years","6-10 years","11-15 years","16-20 years","20+ years",null],"description":"Overlap-free union of stated positions; null when any start is missing or the stated precision leaves it between two buckets."}]},"employment":{"type":"array","items":{"type":"object","properties":{"companyName":{"oneOf":[{"type":"string"},{"type":"null"}]},"companyLinkedinUrl":{"oneOf":[{"type":"string"},{"type":"null"}]},"title":{"oneOf":[{"type":"string"},{"type":"null"}]},"start":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]}]},"end":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]}]},"current":{"type":"boolean"},"location":{"oneOf":[{"type":"string","description":"Where the position was held, as the source stated it."},{"type":"null","description":"Where the position was held, as the source stated it."}]},"description":{"oneOf":[{"type":"string","description":"The person's own description of the position, as stated."},{"type":"null","description":"The person's own description of the position, as stated."}]}},"required":["companyName","companyLinkedinUrl","title","start","end","current","location","description"]},"description":"Source order; [] when not available."},"education":{"type":"array","items":{"type":"object","properties":{"school":{"oneOf":[{"type":"string"},{"type":"null"}]},"schoolLinkedinUrl":{"oneOf":[{"type":"string"},{"type":"null"}]},"degree":{"oneOf":[{"type":"string"},{"type":"null"}]},"field":{"oneOf":[{"type":"string"},{"type":"null"}]},"start":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]}]},"end":{"oneOf":[{"type":"object","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]},{"type":"null","properties":{"year":{"type":"integer"},"month":{"oneOf":[{"type":"integer","description":"1–12, or null when the source stated the year only (never padded)."},{"type":"null","description":"1–12, or null when the source stated the year only (never padded)."}]}},"required":["year","month"]}]}},"required":["school","schoolLinkedinUrl","degree","field","start","end"]},"description":"Source order; [] when not available."},"historyStatus":{"type":"object","properties":{"employment":{"type":"string","enum":["available","not-yet-available"],"description":"`not-yet-available`: no source has supplied this history yet (the list is []). `available` with [] means the source supplied an empty history."},"education":{"type":"string","enum":["available","not-yet-available"],"description":"`not-yet-available`: no source has supplied this history yet (the list is []). `available` with [] means the source supplied an empty history."}},"required":["employment","education"]}},"isRequired":true,"uniqueKey":"data.person.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person","typeLabel":"object | null"},"channels":{"oneOf":[{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string","uniqueKey":"data.channels.oneOf.0.emails.items.[INDEX]","typeLabel":"string"},"description":"Addresses associated with the person.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.emails","typeLabel":"string[]"},"phones":{"type":"array","items":{"type":"string","uniqueKey":"data.channels.oneOf.0.phones.items.[INDEX]","typeLabel":"string"},"description":"Phone numbers associated with the person.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.phones","typeLabel":"string[]"},"x":{"oneOf":[{"type":"string","description":"X (Twitter) handle, without the @ — the handle of `person.xUrl`. Kept for compatibility; prefer `person.xUrl`.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.x.oneOf.0","typeLabel":"string"},{"type":"null","description":"X (Twitter) handle, without the @ — the handle of `person.xUrl`. Kept for compatibility; prefer `person.xUrl`.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.x.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.channels.oneOf.0.x","typeLabel":"string | null"},"facebook":{"oneOf":[{"type":"string","description":"Facebook handle (the path of `person.facebookUrl`, e.g. `jane.doe` or `profile.php?id=123`). Kept for compatibility; prefer `person.facebookUrl`.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.facebook.oneOf.0","typeLabel":"string"},{"type":"null","description":"Facebook handle (the path of `person.facebookUrl`, e.g. `jane.doe` or `profile.php?id=123`). Kept for compatibility; prefer `person.facebookUrl`.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.facebook.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.channels.oneOf.0.facebook","typeLabel":"string | null"},"instagram":{"oneOf":[{"type":"string","description":"Instagram handle, without the @ — the handle of `person.instagramUrl`. Kept for compatibility.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.instagram.oneOf.0","typeLabel":"string"},{"type":"null","description":"Instagram handle, without the @ — the handle of `person.instagramUrl`. Kept for compatibility.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.instagram.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.channels.oneOf.0.instagram","typeLabel":"string | null"},"telegram":{"oneOf":[{"type":"string","description":"Telegram username, without the @ — the handle of `person.telegramUrl`. Kept for compatibility.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.telegram.oneOf.0","typeLabel":"string"},{"type":"null","description":"Telegram username, without the @ — the handle of `person.telegramUrl`. Kept for compatibility.","isRequired":true,"uniqueKey":"data.channels.oneOf.0.telegram.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.channels.oneOf.0.telegram","typeLabel":"string | null"}},"required":["emails","phones","x","facebook","instagram","telegram"],"description":"The contact channels a Person does not carry. `null` when nothing was found.","isRequired":true,"uniqueKey":"data.channels.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Addresses associated with the person."},"phones":{"type":"array","items":{"type":"string"},"description":"Phone numbers associated with the person."},"x":{"oneOf":[{"type":"string","description":"X (Twitter) handle, without the @ — the handle of `person.xUrl`. Kept for compatibility; prefer `person.xUrl`."},{"type":"null","description":"X (Twitter) handle, without the @ — the handle of `person.xUrl`. Kept for compatibility; prefer `person.xUrl`."}]},"facebook":{"oneOf":[{"type":"string","description":"Facebook handle (the path of `person.facebookUrl`, e.g. `jane.doe` or `profile.php?id=123`). Kept for compatibility; prefer `person.facebookUrl`."},{"type":"null","description":"Facebook handle (the path of `person.facebookUrl`, e.g. `jane.doe` or `profile.php?id=123`). Kept for compatibility; prefer `person.facebookUrl`."}]},"instagram":{"oneOf":[{"type":"string","description":"Instagram handle, without the @ — the handle of `person.instagramUrl`. Kept for compatibility."},{"type":"null","description":"Instagram handle, without the @ — the handle of `person.instagramUrl`. Kept for compatibility."}]},"telegram":{"oneOf":[{"type":"string","description":"Telegram username, without the @ — the handle of `person.telegramUrl`. Kept for compatibility."},{"type":"null","description":"Telegram username, without the @ — the handle of `person.telegramUrl`. Kept for compatibility."}]}},"required":["emails","phones","x","facebook","instagram","telegram"],"description":"The contact channels a Person does not carry. `null` when nothing was found.","isRequired":true,"uniqueKey":"data.channels.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.channels","typeLabel":"object | null"},"sources":{"type":"array","items":{"type":"string","enum":["enrich","leakcheck","linkedin","owned"],"uniqueKey":"data.sources.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The sources that contributed a fact. `owned` (alone) means the address is one our own Email Finder verified for this person, answered from our own records.","isRequired":true,"uniqueKey":"data.sources","typeLabel":"enum\u003cstring>[]"},"cached":{"type":"boolean","description":"Answered from our own records (still charged at the same price).","isRequired":true,"uniqueKey":"data.cached","typeLabel":"boolean"},"charged":{"type":"boolean","description":"Whether this call consumed points.","isRequired":true,"uniqueKey":"data.charged","typeLabel":"boolean"},"pointsCharged":{"type":"integer","description":"Points consumed by this call.","isRequired":true,"uniqueKey":"data.pointsCharged","typeLabel":"integer"},"balance":{"oneOf":[{"type":"object","properties":{"available":{"type":"integer","isRequired":true,"uniqueKey":"data.balance.oneOf.0.available","typeLabel":"integer"},"reserved":{"type":"integer","isRequired":true,"uniqueKey":"data.balance.oneOf.0.reserved","typeLabel":"integer"},"granted":{"type":"integer","isRequired":true,"uniqueKey":"data.balance.oneOf.0.granted","typeLabel":"integer"}},"required":["available","reserved","granted"],"description":"Workspace balance after this call. Null only when the balance could not be read after charging — the charge still stands; re-read `GET /api/v1/points`.","isRequired":true,"uniqueKey":"data.balance.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"available":{"type":"integer"},"reserved":{"type":"integer"},"granted":{"type":"integer"}},"required":["available","reserved","granted"],"description":"Workspace balance after this call. Null only when the balance could not be read after charging — the charge still stands; re-read `GET /api/v1/points`.","isRequired":true,"uniqueKey":"data.balance.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.balance","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","enum":["invalid-input","suppressed","enrichment-unavailable","rate-limited","provider-error","insufficient-credits",null],"description":"Why nothing was delivered. `null` for a found person and for a completed enrichment that found nobody (a charged miss). Retryable means asking again can produce a different answer.\n\n- `invalid-input` — the value is not a well-formed email address. Charged: no. Retryable: no.\n- `suppressed` — the address, or a person it names, is on a do-not-contact list; checked before any work, before the LinkedIn search and again before delivery. Charged: no. Retryable: no.\n- `enrichment-unavailable` — no enrichment source is configured and no fresh owned record answers the address. Charged: no. Retryable: yes.\n- `rate-limited` — a source rate-limited the enrichment beyond the configured wait; nothing was delivered. Charged: no. Retryable: yes.\n- `provider-error` — a source could not answer (timeout, error, unreadable reply) or the charge could not be completed; nothing was delivered. Charged: no. Retryable: yes.\n- `insufficient-credits` — the workspace balance cannot cover the enrichment. Charged: no. Retryable: yes.","isRequired":true,"uniqueKey":"data.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["invalid-input","suppressed","enrichment-unavailable","rate-limited","provider-error","insufficient-credits",null],"description":"Why nothing was delivered. `null` for a found person and for a completed enrichment that found nobody (a charged miss). Retryable means asking again can produce a different answer.\n\n- `invalid-input` — the value is not a well-formed email address. Charged: no. Retryable: no.\n- `suppressed` — the address, or a person it names, is on a do-not-contact list; checked before any work, before the LinkedIn search and again before delivery. Charged: no. Retryable: no.\n- `enrichment-unavailable` — no enrichment source is configured and no fresh owned record answers the address. Charged: no. Retryable: yes.\n- `rate-limited` — a source rate-limited the enrichment beyond the configured wait; nothing was delivered. Charged: no. Retryable: yes.\n- `provider-error` — a source could not answer (timeout, error, unreadable reply) or the charge could not be completed; nothing was delivered. Charged: no. Retryable: yes.\n- `insufficient-credits` — the workspace balance cannot cover the enrichment. Charged: no. Retryable: yes.","isRequired":true,"uniqueKey":"data.reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.reason","typeLabel":"enum\u003cstring> | null"},"replay":{"type":"boolean","description":"true when this is the stored outcome of an earlier request with the same `Idempotency-Key`: nothing was re-run and nothing was charged again (`charged: false`, `pointsCharged: 0`).","isRequired":true,"uniqueKey":"data.replay","typeLabel":"boolean"}},"required":["found","email","person","channels","sources","cached","charged","pointsCharged","balance","reason","replay"],"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"uniqueKey":"","typeLabel":"object"},"example":{"data":{"found":false,"email":"jane.doe@acme.com","person":null,"channels":null,"sources":[],"cached":false,"charged":true,"pointsCharged":5,"balance":{"available":245,"reserved":0,"granted":250},"reason":null,"replay":false}},"examples":{"Example":{"title":"Example","value":{"data":{"found":false,"email":"jane.doe@acme.com","person":null,"channels":null,"sources":[],"cached":false,"charged":true,"pointsCharged":5,"balance":{"available":245,"reserved":0,"granted":250},"reason":null,"replay":false}}}},"exampleType":"examples"}},"exampleType":"examples"},"a05d1999-9668-4611-ab62-2a137c55c3f2":{"description":"`validation_error`. `email is required` — `email` absent, `null`, not a string or blank; or a malformed header: `Idempotency-Key must be 1 to 255 printable ASCII characters`. Unknown fields are ignored.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_error","message":"\u003cstring>","retryAfterSeconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"d982d3b8-fa4d-4beb-9d50-cac755a3958a":{"description":"`unauthenticated`. API key missing (`Missing API key. Pass it as: Authorization: Bearer \u003ckey>`), invalid (`Invalid API key`), or expired (`This API key has expired`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_error","message":"\u003cstring>","retryAfterSeconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"da7699f6-6251-4ff7-8889-dde35867161d":{"description":"`insufficient_credits` (`Insufficient credits`): the workspace balance cannot cover the enrichment. `error.meta` = `{ available }`. Refused before any source is asked and never billed; retrying will not help until points are added. `card_required`: the workspace has not added a payment method yet — before any spending (`error.meta.reason` = `no_card`), or, for a workspace spending free starting points, once this call costs more than is left (`shortfall`, with `required` / `available` when known). `error.meta.points` = the points adding a payment method grants. Never billed.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_error","message":"\u003cstring>","retryAfterSeconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"3c092ae1-50f4-4580-b99d-89cb47ed82d9":{"description":"`method_not_allowed` (`Method not allowed`) — see the `Allow` response header.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_error","message":"\u003cstring>","retryAfterSeconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"df6cf8bc-e101-45b8-bd17-7e1e9db6ae4e":{"description":"The `Idempotency-Key` cannot be used for this request. `idempotency_conflict`: the key was already used for a different address, or reused after its replay record expired — send a new key. `idempotency_in_progress`: the first request with this key is still running — retry once it finishes to get its outcome. Never billed.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_error","message":"\u003cstring>","retryAfterSeconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"048e9d9c-1c91-415d-9b7c-58af1c746276":{"description":"`rate_limited` (`Rate limit exceeded`): this workspace’s enrichment budget is spent (shared with the in-app tool). Retry after the number of seconds in the `Retry-After` header, also returned as `error.retryAfterSeconds`. Never billed.","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before calling again."},"required":true,"description":"Seconds to wait before calling again."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Rate limit exceeded","retryAfterSeconds":12}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Rate limit exceeded","retryAfterSeconds":12}}}},"exampleType":"examples"}},"exampleType":"examples"},"518489e9-74ac-4ab3-a036-c72c0c5de75a":{"description":"`internal_error` (`Internal error`): an unexpected failure on our side. Never billed — once an enrichment has been charged, the call answers 200 with its outcome, never an error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["validation_error","unauthenticated","not_found","forbidden","method_not_allowed","idempotency_conflict","idempotency_in_progress","rate_limited","internal_error","run_already_active","run_already_continued","search_unavailable","invalid_continuation","invalid_input","insufficient_credits","incomplete"],"description":"Machine-readable error code. Branch on this, not on `message`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","description":"Present on a 429 only: seconds until the workspace may call again (same value as the `Retry-After` header).","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"internal_error","message":"Internal error"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"internal_error","message":"Internal error"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"0fbd33cf-afc8-4ee6-999b-c289a0830284":{"workspaceApiKey":{"type":"http","scheme":"bearer","description":"Workspace API key (`loice_sk_` + 48 hex characters), created under Settings → API Keys. Sent as `Authorization: Bearer loice_sk_…`. Invalid, missing, or expired keys are rejected with 401 before any billable work happens.","scopes":[],"schemeName":"workspaceApiKey"}}},"servers":{"695260fa-a90d-430f-9fda-0588978e186c":{"url":"https://app.loice.ai"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Workspace API key (`loice_sk_` + 48 hex characters), created under Settings → API Keys. Sent as `Authorization: Bearer loice_sk_…`. Invalid, missing, or expired keys are rejected with 401 before any billable work happens.","scopes":[],"schemeName":"workspaceApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Workspace API key (`loice_sk_` + 48 hex characters), created under Settings → API Keys. Sent as `Authorization: Bearer loice_sk_…`. Invalid, missing, or expired keys are rejected with 401 before any billable work happens.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"workspaceApiKey","name":"Authorization"}],"title":"workspaceApiKey"}]},"originalFileLocation":"openapi.json"},"subdomain":"loice-ai","siteName":"Loice","title":"Enrich an email address - Loice","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T13:15:54.012Z","originalFileLocation":"api-reference/enrich-an-email-address.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=\"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool. #### Billing - charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay. The current cost is shown in the app under Settings → Billing and in the live GET /api/v1/openapi.json. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The charged and pointsCharged fields of the response state what this call actually consumed.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Loice\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_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/loice-ai/dsWJfncwTF1mrm64/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Enrich an email address - Loice\">\u003cmeta data-mint-head property=\"og:description\" content=\"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool. #### Billing - charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay. The current cost is shown in the app under Settings → Billing and in the live GET /api/v1/openapi.json. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The charged and pointsCharged fields of the response state what this call actually consumed.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Loice\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.loice.ai/api-reference/enrich-an-email-address\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://loice-ai.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Enrich+an+email+address\u0026amp;description=Turns+one+email+address+into+the+canonical+Person+behind+it+plus+the+contact+channels+a+Person+does+not+carry+%28associated+emails%2C+X%2C+Telegram%29.+Sources%3A+our+own\u0026amp;theme=aaaf477007e472ee8ada61f7\u0026amp;signature=0de37379614d3d1fcc30e409a0d81a18f35710611f89bd0c28e9714927dedfa8\">\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=\"Enrich an email address - Loice\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool. #### Billing - charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay. The current cost is shown in the app under Settings → Billing and in the live GET /api/v1/openapi.json. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The charged and pointsCharged fields of the response state what this call actually consumed.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://loice-ai.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Enrich+an+email+address\u0026amp;description=Turns+one+email+address+into+the+canonical+Person+behind+it+plus+the+contact+channels+a+Person+does+not+carry+%28associated+emails%2C+X%2C+Telegram%29.+Sources%3A+our+own\u0026amp;theme=aaaf477007e472ee8ada61f7\u0026amp;signature=0de37379614d3d1fcc30e409a0d81a18f35710611f89bd0c28e9714927dedfa8\">\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/loice-ai/dsWJfncwTF1mrm64/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Loice\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff5a1f\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.loice.ai/api-reference/enrich-an-email-address\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/enrich-an-email-address.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.loice.ai/#organization\",\"name\":\"Loice\",\"url\":\"https://docs.loice.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/loice-ai/BjcqR91eFdyMv2fQ/logo/loice-black.png?fit=max\u0026auto=format\u0026n=BjcqR91eFdyMv2fQ\u0026q=85\u0026s=bec1e804b7d2b4e6090aad41f5ec149e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.loice.ai#website\",\"name\":\"Loice\",\"url\":\"https://docs.loice.ai\",\"publisher\":{\"@id\":\"https://docs.loice.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.loice.ai/api-reference/enrich-an-email-address#webpage\",\"url\":\"https://docs.loice.ai/api-reference/enrich-an-email-address\",\"name\":\"Enrich an email address\",\"description\":\"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool. #### Billing - charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay. The current cost is shown in the app under Settings → Billing and in the live GET /api/v1/openapi.json. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The charged and pointsCharged fields of the response state what this call actually consumed.\",\"dateModified\":\"2026-11-09T13:15:54.012Z\",\"isPartOf\":{\"@id\":\"https://docs.loice.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.loice.ai/api-reference/enrich-an-email-address#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.loice.ai/api-reference/enrich-an-email-address#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.loice.ai/api-reference/find-and-verify-email\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enrich an email address\",\"item\":\"https://docs.loice.ai/api-reference/enrich-an-email-address\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.loice.ai/api-reference/enrich-an-email-address#apireference\",\"headline\":\"Enrich an email address\",\"name\":\"Enrich an email address\",\"description\":\"Turns one email address into the canonical Person behind it plus the contact channels a Person does not carry (associated emails, X, Telegram). Sources: our own records first, then two reverse-lookup sources and, when they name someone at a company domain or state a LinkedIn profile, a LinkedIn cross-reference. Every delivered field was stated by a source — nothing is inferred from the address. If any source the enrichment needs cannot answer, nothing is delivered and nothing is charged. Phone numbers are never returned. People on the workspace do-not-contact list are refused before any work. Rate limited per workspace, shared with the in-app tool. #### Billing - charged per completed enrichment — found or not, or answered from our own records — never on a refusal, a source that could not answer, or a replay. The current cost is shown in the app under Settings → Billing and in the live GET /api/v1/openapi.json. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The charged and pointsCharged fields of the response state what this call actually consumed.\",\"url\":\"https://docs.loice.ai/api-reference/enrich-an-email-address\",\"mainEntityOfPage\":{\"@id\":\"https://docs.loice.ai/api-reference/enrich-an-email-address#webpage\"},\"dateModified\":\"2026-11-09T13:15:54.012Z\",\"publisher\":{\"@id\":\"https://docs.loice.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.loice.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Loice\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Loice","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","groups":[{"group":"API Reference","pages":[{"title":"Find and verify email","description":"Runs one enrichment lookup for the workspace behind the API key. Three modes share this endpoint: `email` (default) finds a verified work email from a name and company domain, `company` resolves a company name to its domain and then finds a verified work email there, and `linkedin` finds a verified work email from a LinkedIn profile URL. Every result is verified before delivery — when we cannot verify, `found` is `false` with a `reason` rather than a guess. Rate limited per workspace; check `GET /api/v1/points` for headroom first.\n\n#### Billing\n\n- **email mode (default)**: charged per completed lookup — found or not — never on provider errors.\n- **company mode**: two parts, each charged on its own. The company lookup is charged once the name search answers — resolved or not; the email search is then charged per completed lookup — found or not. If the company can’t be resolved, or it resolves to a domain that cannot receive email (`unusable-domain`), only the company part is charged.\n- **linkedin mode**: charged per completed lookup — found or not — never on provider errors.\n\nThe current cost is shown in the app under Settings → Billing and in the live `GET /api/v1/openapi.json`. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The `charged` and `pointsCharged` fields of the response state what this call actually consumed.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/find","href":"/api-reference/find-and-verify-email"},{"title":"Enrich an email address","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/enrich/email","href":"/api-reference/enrich-an-email-address"},{"title":"Search LinkedIn profiles by name","description":"Searches public LinkedIn profiles for a person by first and last name, optionally narrowed by employer. Returns candidate profiles with their headline, parsed employer and title, location, and profile URL — feed a chosen `linkedinUrl` into `POST /api/v1/find` (linkedin mode) to get a verified email for it. At most one candidate comes back; a completed not-found carries no `reason`. Send an `Idempotency-Key` to make a retry safe: the same key replays the first answer, uncharged. Rate limited per workspace.\n\n#### Billing\n\n- charged per completed search — matches or none — never on provider errors.\n\nThe current cost is shown in the app under Settings → Billing and in the live `GET /api/v1/openapi.json`. Calls that end in a system or provider error (HTTP 500) or are rate limited (HTTP 429) are not billed. The `charged` and `pointsCharged` fields of the response state what this call actually consumed.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/linkedin-search","href":"/api-reference/search-linkedin-profiles-by-name"},{"title":"Start lead search","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/lead-search","href":"/api-reference/start-lead-search"},{"title":"Start an employee search","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/employee-search","href":"/api-reference/start-an-employee-search"},{"title":"Poll lead search","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/lead-search/runs/{runId}","href":"/api-reference/poll-lead-search"},{"title":"Cancel lead search","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/lead-search/runs/{runId}/cancel","href":"/api-reference/cancel-lead-search"},{"title":"List lead lists","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/lead-lists","href":"/api-reference/list-lead-lists"},{"title":"Save lead-search results to a list","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/lead-lists/add","href":"/api-reference/save-lead-search-results-to-a-list"},{"title":"Read a list’s members","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/lead-lists/{listId}/members","href":"/api-reference/read-a-list’s-members"},{"title":"Check the points balance","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/points","href":"/api-reference/check-the-points-balance"},{"title":"This API description","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/openapi.json","href":"/api-reference/this-api-description"}]}]}]},"basePath":"","title":"Enrich an email address - Loice","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}