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.
Billing
email mode (default): charged per completed lookup — found or not — never on provider errors.
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.
linkedin mode: charged per completed lookup — found or not — never on provider errors.
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.
Lookup mode. email (default, also used for an unrecognised value): find a verified work email from a name and the company domain. company: resolve a company NAME to its domain, then find a verified work email there. linkedin: find a verified work email from a LinkedIn profile URL.
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/find-and-verify-email","slug":"/api-reference/find-and-verify-email","pageMetadata":{"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","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 strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Runs one enrichment lookup for the workspace behind the API key. Three modes share this endpoint: \", _jsx(_components.code, {\n children: \"email\"\n }), \" (default) finds a verified work email from a name and company domain, \", _jsx(_components.code, {\n children: \"company\"\n }), \" resolves a company name to its domain and then finds a verified work email there, and \", _jsx(_components.code, {\n children: \"linkedin\"\n }), \" finds a verified work email from a LinkedIn profile URL. Every result is verified before delivery — when we cannot verify, \", _jsx(_components.code, {\n children: \"found\"\n }), \" is \", _jsx(_components.code, {\n children: \"false\"\n }), \" with a \", _jsx(_components.code, {\n children: \"reason\"\n }), \" rather than a guess. Rate limited per workspace; check \", _jsx(_components.code, {\n children: \"GET /api/v1/points\"\n }), \" for headroom first.\"]\n }), \"\\n\", _jsx(_components.h4, {\n children: \"Billing\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"email mode (default)\"\n }), \": charged per completed lookup — found or not — never on provider errors.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"company mode\"\n }), \": 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 (\", _jsx(_components.code, {\n children: \"unusable-domain\"\n }), \"), only the company part is charged.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"linkedin mode\"\n }), \": charged per completed lookup — found or not — never on provider errors.\"]\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"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.","security":["6c4a1035-288a-4d83-a5e5-55b8b6045dca"],"parameters":["b15141a8-6fe1-40fc-838e-5a4f91ddd2c2"],"requestBody":"d834cbf4-3759-44b8-aa72-bb10dcb681a3","responses":{"200":"aeff66b0-8fb2-4ff1-9c17-dbce7f4490af","400":"779da5aa-27bb-453d-b10c-802e2ae31944","401":"6e860647-b5eb-4887-9975-0d7da1e3f26c","402":"a2483b3b-eeee-45b7-8794-02cb30ebd4d3","405":"a65ae3af-fee7-4eb2-87d0-105f878f90fb","409":"41a58418-e35b-4eae-89de-3fb6b896849b","429":"71ec6e66-492f-4a7c-bae2-023416050a95","500":"d39caba1-e187-4114-b217-8ff4fb1e0459"},"method":"post","type":"path","servers":["695260fa-a90d-430f-9fda-0588978e186c"],"path":"/api/v1/find","baseUrlOptions":["https://app.loice.ai"],"title":"Find and verify email","codeSamples":[],"requestExampleLanguages":["bash","javascript","node","python"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","disableProxy":true},"dependencies":{"parameters":{"b15141a8-6fe1-40fc-838e-5a4f91ddd2c2":{"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":{"mode":{"type":"string","enum":["email","company","linkedin"],"description":"Lookup mode. `email` (default, also used for an unrecognised value): find a verified work email from a name and the company domain. `company`: resolve a company NAME to its domain, then find a verified work email there. `linkedin`: find a verified work email from a LinkedIn profile URL.","uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Full name of the person. Required for `email` and `company` modes.","uniqueKey":"name","typeLabel":"string"},"company":{"type":"string","description":"Required for `email` and `company` modes. `email` mode: the company domain or website URL (reduced to its bare host). `company` mode: the company name.","uniqueKey":"company","typeLabel":"string"},"url":{"type":"string","description":"LinkedIn profile URL. Required for `linkedin` mode.","uniqueKey":"url","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"mode":"email","name":"Satya Nadella","company":"microsoft.com"},"examples":{"Example":{"title":"Example","value":{"mode":"email","name":"Satya Nadella","company":"microsoft.com"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"aeff66b0-8fb2-4ff1-9c17-dbce7f4490af":{"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 a verified email was found.","isRequired":true,"uniqueKey":"data.found","typeLabel":"boolean"},"email":{"oneOf":[{"type":"string","description":"The verified email address; null when not found.","isRequired":true,"uniqueKey":"data.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"The verified email address; null when not found.","isRequired":true,"uniqueKey":"data.email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.email","typeLabel":"string | null"},"status":{"oneOf":[{"type":"string","enum":["valid","risky",null],"description":"Verification status of the returned email; null when not found.","isRequired":true,"uniqueKey":"data.status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["valid","risky",null],"description":"Verification status of the returned email; null when not found.","isRequired":true,"uniqueKey":"data.status.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring> | null"},"confidence":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"description":"Verification confidence from 0 to 1 (e.g. 0.97); null when not found.","isRequired":true,"uniqueKey":"data.confidence.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"description":"Verification confidence from 0 to 1 (e.g. 0.97); null when not found.","isRequired":true,"uniqueKey":"data.confidence.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confidence","typeLabel":"number | null"},"charged":{"type":"boolean","description":"Whether this call consumed points.","isRequired":true,"uniqueKey":"data.charged","typeLabel":"boolean"},"creditsCharged":{"type":"integer","description":"Points consumed (legacy field name, kept for compatibility).","isRequired":true,"uniqueKey":"data.creditsCharged","typeLabel":"integer"},"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":["company-not-resolved","profile-not-found","profile-no-domain","incomplete","rate-limited","company-unavailable","searching","profile-unavailable","invalid-input","needs-domain","unusable-domain","invalid-linkedin-url","suppressed","insufficient-credits",null],"description":"Why no email was delivered. `null` for a delivered email and for a completed lookup that found none (a charged miss). Retryable means asking the same question again can produce a different answer; a retryable reason is never a permanent \"no email\".\n\n- `company-not-resolved` — company mode: the company name did not resolve to a company. Charged: the company part only. Retryable: no.\n- `profile-not-found` — linkedin mode: the profile does not exist. Charged: yes. Retryable: no.\n- `profile-no-domain` — linkedin mode: the profile states no usable employer domain. Charged: yes. Retryable: no.\n- `incomplete` — a source could not answer and none delivered, so the lookup could not be completed. Charged: no. Retryable: yes.\n- `rate-limited` — an upstream source rate-limited the lookup beyond the configured wait. Charged: no. Retryable: yes.\n- `company-unavailable` — company mode: company resolution is not configured or its source could not be read. Charged: no. Retryable: yes.\n- `searching` — another source is being asked in the background (a queued search that takes up to about a minute); nothing was charged. Ask again after `retryAfterSeconds` with the same `Idempotency-Key`: the stored answer is then delivered and charged once. Charged: no. Retryable: yes.\n- `profile-unavailable` — linkedin mode: the profile resolver is not configured or did not answer. Charged: no. Retryable: yes.\n- `invalid-input` — the name cannot be split into first and last, or the company is neither a domain, a URL nor (company mode) a name. Charged: no. Retryable: no.\n- `needs-domain` — email mode was given a company name instead of a domain — use company mode. Charged: no. Retryable: no.\n- `unusable-domain` — the domain is not a company mail domain: a shared mailbox provider (gmail.com, outlook.com, mail.ru, a disposable inbox), a deny-listed site (a social network, a link aggregator) or a definitive no-MX answer. The email search is never run or charged for it. Charged: no. Retryable: no.\n- `invalid-linkedin-url` — linkedin mode: the URL is not a LinkedIn profile URL. Charged: no. Retryable: no.\n- `suppressed` — the person is on a do-not-contact list; checked before any work and again before delivery. Charged: no. Retryable: no.\n- `insufficient-credits` — the workspace balance cannot cover the lookup. Charged: no. Retryable: yes.\n\nIn company mode, a reason that follows a resolved company keeps that company part's charge (`charged: true`). `pointsCharged` always states exactly what was consumed.","isRequired":true,"uniqueKey":"data.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["company-not-resolved","profile-not-found","profile-no-domain","incomplete","rate-limited","company-unavailable","searching","profile-unavailable","invalid-input","needs-domain","unusable-domain","invalid-linkedin-url","suppressed","insufficient-credits",null],"description":"Why no email was delivered. `null` for a delivered email and for a completed lookup that found none (a charged miss). Retryable means asking the same question again can produce a different answer; a retryable reason is never a permanent \"no email\".\n\n- `company-not-resolved` — company mode: the company name did not resolve to a company. Charged: the company part only. Retryable: no.\n- `profile-not-found` — linkedin mode: the profile does not exist. Charged: yes. Retryable: no.\n- `profile-no-domain` — linkedin mode: the profile states no usable employer domain. Charged: yes. Retryable: no.\n- `incomplete` — a source could not answer and none delivered, so the lookup could not be completed. Charged: no. Retryable: yes.\n- `rate-limited` — an upstream source rate-limited the lookup beyond the configured wait. Charged: no. Retryable: yes.\n- `company-unavailable` — company mode: company resolution is not configured or its source could not be read. Charged: no. Retryable: yes.\n- `searching` — another source is being asked in the background (a queued search that takes up to about a minute); nothing was charged. Ask again after `retryAfterSeconds` with the same `Idempotency-Key`: the stored answer is then delivered and charged once. Charged: no. Retryable: yes.\n- `profile-unavailable` — linkedin mode: the profile resolver is not configured or did not answer. Charged: no. Retryable: yes.\n- `invalid-input` — the name cannot be split into first and last, or the company is neither a domain, a URL nor (company mode) a name. Charged: no. Retryable: no.\n- `needs-domain` — email mode was given a company name instead of a domain — use company mode. Charged: no. Retryable: no.\n- `unusable-domain` — the domain is not a company mail domain: a shared mailbox provider (gmail.com, outlook.com, mail.ru, a disposable inbox), a deny-listed site (a social network, a link aggregator) or a definitive no-MX answer. The email search is never run or charged for it. Charged: no. Retryable: no.\n- `invalid-linkedin-url` — linkedin mode: the URL is not a LinkedIn profile URL. Charged: no. Retryable: no.\n- `suppressed` — the person is on a do-not-contact list; checked before any work and again before delivery. Charged: no. Retryable: no.\n- `insufficient-credits` — the workspace balance cannot cover the lookup. Charged: no. Retryable: yes.\n\nIn company mode, a reason that follows a resolved company keeps that company part's charge (`charged: true`). `pointsCharged` always states exactly what was consumed.","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"},"resolvedProfile":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.name","typeLabel":"string"},"companyName":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.companyName.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.companyName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.companyName","typeLabel":"string | null"},"domain":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.domain.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.domain.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.domain","typeLabel":"string | null"},"url":{"type":"string","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0.url","typeLabel":"string"}},"required":["name","companyName","domain","url"],"description":"Deprecated — use person. linkedin mode only: who the profile resolved to — present whenever resolution succeeded, including on not-found outcomes; otherwise null.","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"name":{"type":"string"},"companyName":{"oneOf":[{"type":"string"},{"type":"null"}]},"domain":{"oneOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"}},"required":["name","companyName","domain","url"],"description":"Deprecated — use person. linkedin mode only: who the profile resolved to — present whenever resolution succeeded, including on not-found outcomes; otherwise null.","isRequired":true,"uniqueKey":"data.resolvedProfile.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.resolvedProfile","typeLabel":"object | null"},"person":{"oneOf":[{"type":"object","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"}},"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"],"description":"linkedin mode only: THE canonical Person, present whenever resolution found someone; otherwise null.","isRequired":true,"uniqueKey":"data.person.oneOf.0","typeLabel":"object"},{"type":"null","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"]}},"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"],"description":"linkedin mode only: THE canonical Person, present whenever resolution found someone; otherwise null.","isRequired":true,"uniqueKey":"data.person.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.person","typeLabel":"object | null"},"searchedDomain":{"oneOf":[{"type":"string","description":"The domain the finder searched (found or not); null when nothing was searched — a refusal, an unresolvable profile, or no usable domain. In linkedin mode this is not necessarily `resolvedProfile.domain`: the company record is preferred.","isRequired":true,"uniqueKey":"data.searchedDomain.oneOf.0","typeLabel":"string"},{"type":"null","description":"The domain the finder searched (found or not); null when nothing was searched — a refusal, an unresolvable profile, or no usable domain. In linkedin mode this is not necessarily `resolvedProfile.domain`: the company record is preferred.","isRequired":true,"uniqueKey":"data.searchedDomain.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.searchedDomain","typeLabel":"string | null"},"domainSource":{"oneOf":[{"type":"string","enum":["typed","company-record","profile",null],"description":"Where `searchedDomain` came from: `typed` (email mode), `company-record` (the company's own page, or a company name resolved through it), `profile` (the LinkedIn profile's own company domain). Null when nothing was searched.","isRequired":true,"uniqueKey":"data.domainSource.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["typed","company-record","profile",null],"description":"Where `searchedDomain` came from: `typed` (email mode), `company-record` (the company's own page, or a company name resolved through it), `profile` (the LinkedIn profile's own company domain). Null when nothing was searched.","isRequired":true,"uniqueKey":"data.domainSource.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.domainSource","typeLabel":"enum\u003cstring> | null"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"Present only with `reason: \"searching\"`: seconds to wait before asking again with the same `Idempotency-Key`.","uniqueKey":"data.retryAfterSeconds","typeLabel":"integer"}},"required":["found","email","status","confidence","charged","creditsCharged","pointsCharged","balance","reason","replay","resolvedProfile","person","searchedDomain","domainSource"],"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"uniqueKey":"","typeLabel":"object"},"example":{"data":{"found":true,"email":"satya.nadella@microsoft.com","status":"valid","confidence":0.97,"charged":true,"pointsCharged":1,"balance":{"available":99,"reserved":0,"granted":100},"reason":null,"replay":false,"person":null,"searchedDomain":"microsoft.com","domainSource":"typed","creditsCharged":1,"resolvedProfile":null}},"examples":{"Example":{"title":"Example","value":{"data":{"found":true,"email":"satya.nadella@microsoft.com","status":"valid","confidence":0.97,"charged":true,"pointsCharged":1,"balance":{"available":99,"reserved":0,"granted":100},"reason":null,"replay":false,"person":null,"searchedDomain":"microsoft.com","domainSource":"typed","creditsCharged":1,"resolvedProfile":null}}}},"exampleType":"examples"}},"exampleType":"examples"},"779da5aa-27bb-453d-b10c-802e2ae31944":{"description":"`validation_error`. Missing input — a field that is absent, `null` or blank: `name and company are required` (email/company modes; an unrecognised or absent `mode` is `email`) or `url is required` (linkedin mode); or a malformed header: `Idempotency-Key must be 1 to 255 printable ASCII characters`. Non-string field values are converted to strings, never rejected.","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"},"6e860647-b5eb-4887-9975-0d7da1e3f26c":{"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"},"a2483b3b-eeee-45b7-8794-02cb30ebd4d3":{"description":"`insufficient_credits` (`Insufficient credits`): the workspace balance cannot cover the lookup. `error.meta` = `{ available }`. Refused before any provider call and never billed; retrying will not help until points are added. In company mode, if the company part was already charged before the balance ran out, the call answers 200 with that outcome (`charged: true`, reason `insufficient-credits`) instead. `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"},"a65ae3af-fee7-4eb2-87d0-105f878f90fb":{"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"},"41a58418-e35b-4eae-89de-3fb6b896849b":{"description":"The `Idempotency-Key` cannot be used for this request. `idempotency_conflict`: the key was already used with a different request, 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"},"71ec6e66-492f-4a7c-bae2-023416050a95":{"description":"`rate_limited` (`Rate limit exceeded`): this workspace’s request budget is spent. Retry after the number of seconds in the `Retry-After` header, also returned as `error.retryAfterSeconds`. Rate-limited calls are 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"},"d39caba1-e187-4114-b217-8ff4fb1e0459":{"description":"`internal_error` (`Internal error`): an unexpected failure on our side. Never billed — once any part of a lookup 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":{"6c4a1035-288a-4d83-a5e5-55b8b6045dca":{"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":"Find and verify email - Loice","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T13:15:53.999Z","originalFileLocation":"api-reference/find-and-verify-email.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=\"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. #### Billing - email mode (default): charged per completed lookup — found or not — never on provider errors. - 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. - linkedin mode: charged per completed lookup — found or not — never on provider errors. 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=\"Find and verify email - Loice\">\u003cmeta data-mint-head property=\"og:description\" content=\"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. #### Billing - email mode (default): charged per completed lookup — found or not — never on provider errors. - 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. - linkedin mode: charged per completed lookup — found or not — never on provider errors. 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/find-and-verify-email\">\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=Find+and+verify+email\u0026amp;description=Runs+one+enrichment+lookup+for+the+workspace+behind+the+API+key.+Three+modes+share+this+endpoint%3A+%60email%60+%28default%29+finds+a+verified+work+email+from+a+name+and+\u0026amp;theme=aaaf477007e472ee8ada61f7\u0026amp;signature=3ee6857924465c5abf834875b9a097e5517abcac16d3aa7b81d58b7e2203f749\">\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=\"Find and verify email - Loice\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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. #### Billing - email mode (default): charged per completed lookup — found or not — never on provider errors. - 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. - linkedin mode: charged per completed lookup — found or not — never on provider errors. 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=Find+and+verify+email\u0026amp;description=Runs+one+enrichment+lookup+for+the+workspace+behind+the+API+key.+Three+modes+share+this+endpoint%3A+%60email%60+%28default%29+finds+a+verified+work+email+from+a+name+and+\u0026amp;theme=aaaf477007e472ee8ada61f7\u0026amp;signature=3ee6857924465c5abf834875b9a097e5517abcac16d3aa7b81d58b7e2203f749\">\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/find-and-verify-email\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/find-and-verify-email.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/find-and-verify-email#webpage\",\"url\":\"https://docs.loice.ai/api-reference/find-and-verify-email\",\"name\":\"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. #### Billing - email mode (default): charged per completed lookup — found or not — never on provider errors. - 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. - linkedin mode: charged per completed lookup — found or not — never on provider errors. 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:53.999Z\",\"isPartOf\":{\"@id\":\"https://docs.loice.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.loice.ai/api-reference/find-and-verify-email#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.loice.ai/api-reference/find-and-verify-email#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Loice\",\"item\":\"https://docs.loice.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Find and verify email\",\"item\":\"https://docs.loice.ai/api-reference/find-and-verify-email\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.loice.ai/api-reference/find-and-verify-email#apireference\",\"headline\":\"Find and verify email\",\"name\":\"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. #### Billing - email mode (default): charged per completed lookup — found or not — never on provider errors. - 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. - linkedin mode: charged per completed lookup — found or not — never on provider errors. 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/find-and-verify-email\",\"mainEntityOfPage\":{\"@id\":\"https://docs.loice.ai/api-reference/find-and-verify-email#webpage\"},\"dateModified\":\"2026-11-09T13:15:53.999Z\",\"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","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/find","href":"/api-reference/find-and-verify-email"},{"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"},{"title":"Search LinkedIn profiles by name","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":"Find and verify email - 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"]}