After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 permission_denied, details.codeapi_spend_disabled), fewer than the workspace’s active-job cap (409 concurrent_run_limit, discovery_active_jobs) and room in the daily allowance (409 conflict, discovery_daily_limit). The job then runs with the key’s own authority.
An Enrik API key, sent as Authorization: Bearer <key>. A key reaches public operations only, and only those whose scopes it holds. A few parameters need a scope beyond their operation’s, which the parameter names. The scopes:
setup:read: Read the workspace setup and its company profile.
setup:run: Change the setup: confirm the company profile, authorize sponsored drafting and background company research, choose what to set up and complete setup.
workspace:read: Read the workspace’s own profile: its health summary and setup state.
crm:read: Read companies with their signals, contacts and the saved views over them.
crm:write: Create, update and restore companies and contacts, and create, update and delete saved views.
crm:delete: Delete companies and contacts.
twin:read: Read the Company Twin: structured company knowledge and its signals.
discovery:read: Read ICP profiles, ICP assessments, discovery briefs, discovery jobs, candidates and the signal library.
discovery:write: Create and change ICP profiles, discovery briefs and signal-definition drafts, and review discovery candidates.
discovery:run: Create, start and cancel discovery jobs, and edit a draft one. Uses provider budget.
enrichment:read: Read the enrichment configuration and its results, including a record’s enrichment, formula and custom-API cells.
enrichment:run: Launch and cancel enrichment. Spends enrichment credits.
automation:read: Read workflows and agents with their run history, including a record’s agent cells.
automation:run: Run existing workflows and agents.
exports:read: Read export jobs and the fields an export can carry.
exports:run: Create, preview, start, cancel and archive CSV exports of companies, contacts and candidates, and download the file. Also needs crm:read. Delivering an export to a webhook destination stays in the app.
integrations:read: Read connections, field mappings, CRM sync jobs and webhook destinations.
webhooks:read: Read webhook subscriptions, the event types they can name and their delivery log.
webhooks:write: Subscribe a receiver URL to webhook events; edit, test, pause, resume and archive a subscription and rotate its signing secret; redeliver an event. Only workspace owners and admins can grant it.
reporting:read: Read analytics and dashboards.
assistant:read: Read the Assistant: its threads, messages and pending approvals.
assistant:run: Converse with the Assistant. Uses the workspace’s AI quota.
assistant:write: Approve or reject the changes the Assistant proposes.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Enrik","colors":{"primary":"#4f46e5","light":"#818cf8","dark":"#4338ca"},"favicon":"https://mintlify.s3.us-west-1.amazonaws.com/enrik/favicon.svg","navbar":{"links":[{"href":"mailto:support@enrik.ai","label":"Contact support"}]},"footer":{"socials":{"website":"https://enrik.ai"}},"contextual":{"options":["copy"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"enrik","hasAudioNarration":false,"actualSubdomain":"enrik","customDomains":["docs.enrik.ai"],"gitSource":{"type":"github","owner":"simonrueba","repo":"enrik-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"a74d4468-3307-40c8-ac78-13cf5a523c78","liveDeploymentHistoryId":"6ac90f75d01a2240ccc78b3d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac90f75d01a2240ccc78b3d"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac90f75d01a2240ccc78b3d","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API reference","count":135},{"language":"default","tag":"Endpoints","count":130},{"language":"default","tag":"companies","count":20},{"language":"default","tag":"contacts","count":16},{"language":"default","tag":"companyCandidates","count":10},{"language":"default","tag":"companyDiscoveryJobs","count":10},{"language":"default","tag":"webhookSubscriptions","count":10},{"language":"default","tag":"icpProfiles","count":9},{"language":"default","tag":"signalDefinitions","count":9},{"language":"default","tag":"websiteOnboarding","count":9}]},"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":"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":"vite-origin","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/companydiscoveryjobs/start-a-discovery-job","slug":"/api-reference/companydiscoveryjobs/start-a-discovery-job","pageMetadata":{"title":"Start a discovery job","description":"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 `permission_denied`, `details.code` `api_spend_disabled`), fewer than the workspace’s active-job cap (409 `concurrent_run_limit`, `discovery_active_jobs`) and room in the daily allowance (409 `conflict`, `discovery_daily_limit`). The job then runs with the key’s own authority.","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-discovery-jobs/{jobId}/start","href":"/api-reference/companydiscoveryjobs/start-a-discovery-job","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 \", _jsx(_components.code, {\n children: \"permission_denied\"\n }), \", \", _jsx(_components.code, {\n children: \"details.code\"\n }), \" \", _jsx(_components.code, {\n children: \"api_spend_disabled\"\n }), \"), fewer than the workspace’s active-job cap (409 \", _jsx(_components.code, {\n children: \"concurrent_run_limit\"\n }), \", \", _jsx(_components.code, {\n children: \"discovery_active_jobs\"\n }), \") and room in the daily allowance (409 \", _jsx(_components.code, {\n children: \"conflict\"\n }), \", \", _jsx(_components.code, {\n children: \"discovery_daily_limit\"\n }), \"). The job then runs with the key’s own authority.\"]\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":"Start a discovery job","description":"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 `permission_denied`, `details.code` `api_spend_disabled`), fewer than the workspace’s active-job cap (409 `concurrent_run_limit`, `discovery_active_jobs`) and room in the daily allowance (409 `conflict`, `discovery_daily_limit`). The job then runs with the key’s own authority.","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-discovery-jobs/{jobId}/start","href":"/api-reference/companydiscoveryjobs/start-a-discovery-job","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"companyDiscoveryJobs.start","summary":"Start a discovery job","description":"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 `permission_denied`, `details.code` `api_spend_disabled`), fewer than the workspace’s active-job cap (409 `concurrent_run_limit`, `discovery_active_jobs`) and room in the daily allowance (409 `conflict`, `discovery_daily_limit`). The job then runs with the key’s own authority.","tags":["companyDiscoveryJobs"],"security":["a385a79c-5ddb-400b-b10f-9776a273de43"],"parameters":["5b0524f9-01c8-492c-9e3c-b6171f9be2ff"],"responses":{"202":"aac26613-8976-4f7b-b99a-d4d625d0d4b0","400":"7d5e66c0-b836-4579-80fa-d7f801de0798","401":"7cfd899c-e7b4-4c81-b6d3-27d5e6d0a01c","403":"2fc400e6-c908-4b5b-a1fe-c398139e5c5a","404":"177ed706-3c91-48ca-bd66-1b03d284fef0","409":"9d086299-1b5b-4478-ba78-d4a9353ee4ff","422":"31cbcd58-1ffe-493f-bfef-af436302a74f","429":"66bf5593-7548-4e77-80c3-0ba6e534e535","500":"8cedd9de-ea25-47f6-b25c-99b6bd83ef76","503":"673c3f33-2908-4973-8992-0e67f527f21d","default":"03a58b7f-96ed-469a-aa88-9e67ba364ef0"},"x-mutation-class":"idempotent-by-nature","x-stability-level":"beta","method":"post","type":"path","servers":["d4b75ac2-20fc-4060-84ae-9370689f03ae"],"path":"/v1/company-discovery-jobs/{jobId}/start","baseUrlOptions":["https://api.enrik.ai"],"title":"Start a discovery job","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5b0524f9-01c8-492c-9e3c-b6171f9be2ff":{"name":"jobId","in":"path","required":true,"description":"The discovery job’s id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"description":"The discovery job’s id.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"responses":{"aac26613-8976-4f7b-b99a-d4d625d0d4b0":{"description":"A company discovery job: one search for candidate companies from one source.","headers":{"RateLimit":{"description":"What the API key has left under each rate-limit policy that counted this request: a Structured Field list with one `\"\u003cpolicy>\";r=\u003cremaining>;t=\u003cseconds>` item per policy. Read it as a list and honour every item, not only the smallest: continued traffic must satisfy each policy. `t` is the effective window in seconds (IETF RateLimit header fields, draft 11): quota is not guaranteed to be fully restored when it ends. When the answer also carries `Retry-After`, that takes priority. This operation needs a `run` scope, so two policies count it: `api-key`, every request the key makes, and `api-key-run`, every request to an operation that needs a `run` scope.","schema":{"type":"string"},"example":"\"api-key\";r=599;t=60, \"api-key-run\";r=59;t=60"},"RateLimit-Policy":{"description":"The rate-limit policies that counted this request: a Structured Field list with one `\"\u003cpolicy>\";q=\u003crequests>;w=\u003cwindow in seconds>` item per policy. The limits belong to the key, not to the address it calls from. This operation needs a `run` scope, so two policies count it: `api-key`, every request the key makes, and `api-key-run`, every request to an operation that needs a `run` scope.","schema":{"type":"string"},"example":"\"api-key\";q=600;w=60, \"api-key-run\";q=60;w=60"}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The discovery job’s id.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"icpProfileId":{"oneOf":[{"description":"The ICP profile the job searches for; `null` when it names none.","type":"string","isRequired":true,"uniqueKey":"icpProfileId.oneOf.0","typeLabel":"string"},{"description":"The ICP profile the job searches for; `null` when it names none.","type":"null","isRequired":true,"uniqueKey":"icpProfileId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"icpProfileId","typeLabel":"string | null"},"icpProfileVersionId":{"oneOf":[{"description":"The exact version of that ICP profile; `null` when the job names no profile.","type":"string","isRequired":true,"uniqueKey":"icpProfileVersionId.oneOf.0","typeLabel":"string"},{"description":"The exact version of that ICP profile; `null` when the job names no profile.","type":"null","isRequired":true,"uniqueKey":"icpProfileVersionId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"icpProfileVersionId","typeLabel":"string | null"},"discoveryBriefId":{"oneOf":[{"description":"The discovery brief the job follows; `null` when it follows none.","type":"string","isRequired":true,"uniqueKey":"discoveryBriefId.oneOf.0","typeLabel":"string"},{"description":"The discovery brief the job follows; `null` when it follows none.","type":"null","isRequired":true,"uniqueKey":"discoveryBriefId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"discoveryBriefId","typeLabel":"string | null"},"sourceType":{"type":"string","enum":["pasted_list","manual_candidate","user_provided_source_page","controlled_source","csv_upload","enrik_data","infobel_firmographics"],"description":"Where the job finds its candidates, such as a pasted list or a controlled source.","isRequired":true,"uniqueKey":"sourceType","typeLabel":"enum\u003cstring>"},"sourceLabel":{"oneOf":[{"description":"A human-readable label for the source; `null` when none was given.","type":"string","isRequired":true,"uniqueKey":"sourceLabel.oneOf.0","typeLabel":"string"},{"description":"A human-readable label for the source; `null` when none was given.","type":"null","isRequired":true,"uniqueKey":"sourceLabel.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"sourceLabel","typeLabel":"string | null"},"sourceConfig":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"sourceConfig.additionalProperties","typeLabel":"any"},"description":"The source’s configuration, as the job was created with it. Its shape depends on `sourceType`.","isRequired":true,"uniqueKey":"sourceConfig","typeLabel":"object"},"status":{"type":"string","enum":["draft","queued","running","completed","completed_with_errors","failed","canceled","archived"],"description":"Where the job is in its life: from `draft` through `running` to a finished state.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"stats":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"stats.additionalProperties","typeLabel":"any"},"description":"Counters and diagnostics the job recorded while it ran. Its keys may grow.","isRequired":true,"uniqueKey":"stats","typeLabel":"object"},"createdBy":{"oneOf":[{"description":"The user who created the job; `null` when no user did.","type":"string","isRequired":true,"uniqueKey":"createdBy.oneOf.0","typeLabel":"string"},{"description":"The user who created the job; `null` when no user did.","type":"null","isRequired":true,"uniqueKey":"createdBy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdBy","typeLabel":"string | null"},"createdByApiKeyId":{"oneOf":[{"description":"The API key that created the job, which runs with that key’s authority; `null` when a user did. For such a job `createdBy` is the user who minted the key.","type":"string","isRequired":true,"uniqueKey":"createdByApiKeyId.oneOf.0","typeLabel":"string"},{"description":"The API key that created the job, which runs with that key’s authority; `null` when a user did. For such a job `createdBy` is the user who minted the key.","type":"null","isRequired":true,"uniqueKey":"createdByApiKeyId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdByApiKeyId","typeLabel":"string | null"},"updatedBy":{"oneOf":[{"description":"The user who last changed the job; `null` when no user did.","type":"string","isRequired":true,"uniqueKey":"updatedBy.oneOf.0","typeLabel":"string"},{"description":"The user who last changed the job; `null` when no user did.","type":"null","isRequired":true,"uniqueKey":"updatedBy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"updatedBy","typeLabel":"string | null"},"startedAt":{"oneOf":[{"type":"string","description":"When the job started running; `null` until it has.","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"startedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the job started running; `null` until it has.","isRequired":true,"uniqueKey":"startedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"startedAt","typeLabel":"string\u003cdate-time> | null"},"completedAt":{"oneOf":[{"type":"string","description":"When the job finished; `null` until it has.","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","isRequired":true,"uniqueKey":"completedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the job finished; `null` until it has.","isRequired":true,"uniqueKey":"completedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"completedAt","typeLabel":"string\u003cdate-time> | null"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When the job was created.","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When the job last changed.","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string\u003cdate-time>"}},"required":["id","icpProfileId","icpProfileVersionId","discoveryBriefId","sourceType","sourceLabel","sourceConfig","status","stats","createdBy","createdByApiKeyId","updatedBy","startedAt","completedAt","createdAt","updatedAt"],"additionalProperties":true,"description":"A company discovery job: one search for candidate companies from one source.","uniqueKey":"","typeLabel":"object"},"example":{"id":"0199a1b2-0000-7000-8000-00000000d001","icpProfileId":"0199a1b2-0000-7000-8000-00000000f001","icpProfileVersionId":"0199a1b2-0000-7000-8000-00000000f011","discoveryBriefId":null,"sourceType":"pasted_list","sourceLabel":"Trade fair shortlist","sourceConfig":{"rows":[{"name":"Alpine Robotics GmbH","website":"alpine-robotics.example"}]},"status":"queued","stats":{},"createdBy":"0199a1b2-0000-7000-8000-00000000c001","createdByApiKeyId":null,"updatedBy":"0199a1b2-0000-7000-8000-00000000c001","startedAt":null,"completedAt":null,"createdAt":"2026-09-29T08:00:00.000Z","updatedAt":"2026-09-29T08:00:09.000Z"},"examples":{"Example":{"title":"Example","value":{"id":"0199a1b2-0000-7000-8000-00000000d001","icpProfileId":"0199a1b2-0000-7000-8000-00000000f001","icpProfileVersionId":"0199a1b2-0000-7000-8000-00000000f011","discoveryBriefId":null,"sourceType":"pasted_list","sourceLabel":"Trade fair shortlist","sourceConfig":{"rows":[{"name":"Alpine Robotics GmbH","website":"alpine-robotics.example"}]},"status":"queued","stats":{},"createdBy":"0199a1b2-0000-7000-8000-00000000c001","createdByApiKeyId":null,"updatedBy":"0199a1b2-0000-7000-8000-00000000c001","startedAt":null,"completedAt":null,"createdAt":"2026-09-29T08:00:00.000Z","updatedAt":"2026-09-29T08:00:09.000Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"7d5e66c0-b836-4579-80fa-d7f801de0798":{"description":"The request could not be read. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `malformed_json`: The body is not valid JSON, or is empty while `Content-Type` is `application/json`. Send valid JSON; omit `Content-Type` when there is no body.\n- `invalid_sort`: A sort names a field or direction the list does not support. Sort only by the fields the operation lists.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"malformed_json","message":"Bad Request","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"malformed_json","message":"Bad Request","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"7cfd899c-e7b4-4c81-b6d3-27d5e6d0a01c":{"description":"The request is not authenticated. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `unauthenticated`: The key is missing, invalid, expired or revoked. Send a valid, unexpired key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"unauthenticated","message":"Unauthorized","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthenticated","message":"Unauthorized","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"2fc400e6-c908-4b5b-a1fe-c398139e5c5a":{"description":"The caller may not do this. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `insufficient_scope`: The key lacks a scope the operation, or a parameter such as `include` or `rankingMode`, needs. `details.missingScopes` names it; `WWW-Authenticate` lists every scope the request needs. Create a key with the missing scope.\n- `permission_denied`: The key’s scopes admit the operation, but its permissions do not cover this request: replaying a create needs `crm:read`, and a key keeps the permissions its scopes had when it was created. The message names the scope. Create a new key with the scope the message names.\n- `beta_access_required`: The workspace is not admitted to the beta, which every write except `feedback.submit` needs. Contact support.\n- `not_a_member`: `websiteOnboarding.getAccess`: the key’s workspace has been deleted. Use a key of a live workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"insufficient_scope","message":"Forbidden","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"insufficient_scope","message":"Forbidden","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"177ed706-3c91-48ca-bd66-1b03d284fef0":{"description":"Nothing was found. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `not_found`: No such record in your workspace. A path that is not part of the public API also answers `404`. Check the id and the path.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"not_found","message":"Not Found","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"not_found","message":"Not Found","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"9d086299-1b5b-4478-ba78-d4a9353ee4ff":{"description":"The request conflicts with the current state. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `conflict`: The request clashes with the current state, such as a duplicate domain or e-mail, a changed setup or a ranked list that changed. `details.code` names the case where there is one. Read fresh state, then decide.\n- `stale_version`: The record changed since the `expectedUpdatedAt` you sent. `details.currentUpdatedAt` is its current version. Read the record again and reapply your change.\n- `idempotency_key_reused`: The `Idempotency-Key` was used for a different command or body. Use a new key for a new command.\n- `request_in_flight`: The first request with this `Idempotency-Key` is still running. Retry shortly with the same key.\n- `company_twin_research_already_running`: `websiteOnboarding.confirmProfile`: research for this setup or website is already running. Read fresh setup state.\n- `company_twin_own_domain_conflict`: `websiteOnboarding.confirmProfile`: the website does not match the workspace’s company profile. Read fresh setup state, then confirm the profile with its own website.\n- `concurrent_run_limit`: `companyDiscoveryJobs.start` by an API key: the workspace already has as many discovery jobs queued or running as a key may start beside. `details.code` names the cap. Wait for a job to finish, or cancel one, then start again.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"conflict","message":"Conflict","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"conflict","message":"Conflict","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"31cbcd58-1ffe-493f-bfef-af436302a74f":{"description":"The request cannot be used as sent. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `validation_error`: The request does not match the operation’s schema, a field names something that does not exist, or a value cannot be used, such as an id that is not a UUID, a date outside the years 0001–9999 in a filter, or an edited cursor. See `details`. Fix the request.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"validation_error","message":"Unprocessable Entity","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_error","message":"Unprocessable Entity","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"66bf5593-7548-4e77-80c3-0ba6e534e535":{"description":"Too many requests (`error.code` is `rate_limited`): the API key spent a rate-limit policy, or the network it calls from presented too many invalid keys. Wait `Retry-After` seconds before retrying; it takes priority over `RateLimit`.","headers":{"Retry-After":{"description":"Seconds to wait before retrying. It takes priority over the `t` of every `RateLimit` item.","schema":{"type":"integer","minimum":1},"example":60},"RateLimit":{"description":"What the API key has left under each rate-limit policy that counted this request: a Structured Field list with one `\"\u003cpolicy>\";r=\u003cremaining>;t=\u003cseconds>` item per policy. Read it as a list and honour every item, not only the smallest: continued traffic must satisfy each policy. `t` is the effective window in seconds (IETF RateLimit header fields, draft 11): quota is not guaranteed to be fully restored when it ends. When the answer also carries `Retry-After`, that takes priority. This operation needs a `run` scope, so two policies count it: `api-key`, every request the key makes, and `api-key-run`, every request to an operation that needs a `run` scope.","schema":{"type":"string"},"example":"\"api-key\";r=599;t=60, \"api-key-run\";r=59;t=60"},"RateLimit-Policy":{"description":"The rate-limit policies that counted this request: a Structured Field list with one `\"\u003cpolicy>\";q=\u003crequests>;w=\u003cwindow in seconds>` item per policy. The limits belong to the key, not to the address it calls from. This operation needs a `run` scope, so two policies count it: `api-key`, every request the key makes, and `api-key-run`, every request to an operation that needs a `run` scope.","schema":{"type":"string"},"example":"\"api-key\";q=600;w=60, \"api-key-run\";q=60;w=60"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Too many requests","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Too many requests","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"8cedd9de-ea25-47f6-b25c-99b6bd83ef76":{"description":"The request failed on the server. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `internal_error`: Something failed on our side. Retry later; reuse a command’s idempotency key.\n- `response_contract_violation`: Our answer broke its own schema, so it was withheld. `details.committed` says whether a change was saved. If `committed` is true, read the state instead of resending. Quote the request id.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"internal_error","message":"Internal Server Error","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"internal_error","message":"Internal Server Error","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"673c3f33-2908-4973-8992-0e67f527f21d":{"description":"The service is briefly unavailable. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `service_unavailable`: A create ran out of time, or the service is briefly unavailable. Retry later with the same idempotency key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"service_unavailable","message":"Service Unavailable","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"service_unavailable","message":"Service Unavailable","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"03a58b7f-96ed-469a-aa88-9e67ba364ef0":{"description":"The request failed. Branch on `error.code`; quote `error.requestId` to support.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","x-extensible-enum":["malformed_json","invalid_sort","unauthenticated","insufficient_scope","permission_denied","beta_access_required","not_a_member","not_found","method_not_allowed","conflict","stale_version","idempotency_key_reused","request_in_flight","company_twin_research_already_running","company_twin_own_domain_conflict","concurrent_run_limit","gone","payload_too_large","unsupported_media_type","validation_error","rate_limited","internal_error","response_contract_violation","service_unavailable"],"description":"A stable, machine-readable code such as `not_found`. Branch on this, not on `message`. The known values are every code a public operation answers; more may be added, so handle an unknown one by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation. It may change; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request that failed. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Structured detail for some codes. For `validation_error` it is usually an array with one entry per problem: `path` (the field, dotted), `message` and, where the case has a name, `code` (such as `related_record_not_found`). Other codes that cover several cases carry an object whose `code` names the case (such as `invalid_cursor`).","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message","requestId"],"additionalProperties":true,"description":"What went wrong: the code to branch on, a message and the request id.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"description":"The body of every error response.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"not_found","message":"Not found","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"not_found","message":"Not found","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"a385a79c-5ddb-400b-b10f-9776a273de43":{"apiKey":{"type":"http","scheme":"bearer","description":"An Enrik API key, sent as `Authorization: Bearer \u003ckey>`. A key reaches public operations only, and only those whose scopes it holds. A few parameters need a scope beyond their operation’s, which the parameter names. The scopes:\n\n- `setup:read`: Read the workspace setup and its company profile.\n- `setup:run`: Change the setup: confirm the company profile, authorize sponsored drafting and background company research, choose what to set up and complete setup.\n- `workspace:read`: Read the workspace’s own profile: its health summary and setup state.\n- `crm:read`: Read companies with their signals, contacts and the saved views over them.\n- `crm:write`: Create, update and restore companies and contacts, and create, update and delete saved views.\n- `crm:delete`: Delete companies and contacts.\n- `twin:read`: Read the Company Twin: structured company knowledge and its signals.\n- `discovery:read`: Read ICP profiles, ICP assessments, discovery briefs, discovery jobs, candidates and the signal library.\n- `discovery:write`: Create and change ICP profiles, discovery briefs and signal-definition drafts, and review discovery candidates.\n- `discovery:run`: Create, start and cancel discovery jobs, and edit a draft one. Uses provider budget.\n- `enrichment:read`: Read the enrichment configuration and its results, including a record’s enrichment, formula and custom-API cells.\n- `enrichment:run`: Launch and cancel enrichment. Spends enrichment credits.\n- `automation:read`: Read workflows and agents with their run history, including a record’s agent cells.\n- `automation:run`: Run existing workflows and agents.\n- `exports:read`: Read export jobs and the fields an export can carry.\n- `exports:run`: Create, preview, start, cancel and archive CSV exports of companies, contacts and candidates, and download the file. Also needs `crm:read`. Delivering an export to a webhook destination stays in the app.\n- `integrations:read`: Read connections, field mappings, CRM sync jobs and webhook destinations.\n- `webhooks:read`: Read webhook subscriptions, the event types they can name and their delivery log.\n- `webhooks:write`: Subscribe a receiver URL to webhook events; edit, test, pause, resume and archive a subscription and rotate its signing secret; redeliver an event. Only workspace owners and admins can grant it.\n- `reporting:read`: Read analytics and dashboards.\n- `assistant:read`: Read the Assistant: its threads, messages and pending approvals.\n- `assistant:run`: Converse with the Assistant. Uses the workspace’s AI quota.\n- `assistant:write`: Approve or reject the changes the Assistant proposes.","scopes":["discovery:run"],"schemeName":"apiKey"}}},"servers":{"d4b75ac2-20fc-4060-84ae-9370689f03ae":{"url":"https://api.enrik.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An Enrik API key, sent as `Authorization: Bearer \u003ckey>`. A key reaches public operations only, and only those whose scopes it holds. A few parameters need a scope beyond their operation’s, which the parameter names. The scopes:\n\n- `setup:read`: Read the workspace setup and its company profile.\n- `setup:run`: Change the setup: confirm the company profile, authorize sponsored drafting and background company research, choose what to set up and complete setup.\n- `workspace:read`: Read the workspace’s own profile: its health summary and setup state.\n- `crm:read`: Read companies with their signals, contacts and the saved views over them.\n- `crm:write`: Create, update and restore companies and contacts, and create, update and delete saved views.\n- `crm:delete`: Delete companies and contacts.\n- `twin:read`: Read the Company Twin: structured company knowledge and its signals.\n- `discovery:read`: Read ICP profiles, ICP assessments, discovery briefs, discovery jobs, candidates and the signal library.\n- `discovery:write`: Create and change ICP profiles, discovery briefs and signal-definition drafts, and review discovery candidates.\n- `discovery:run`: Create, start and cancel discovery jobs, and edit a draft one. Uses provider budget.\n- `enrichment:read`: Read the enrichment configuration and its results, including a record’s enrichment, formula and custom-API cells.\n- `enrichment:run`: Launch and cancel enrichment. Spends enrichment credits.\n- `automation:read`: Read workflows and agents with their run history, including a record’s agent cells.\n- `automation:run`: Run existing workflows and agents.\n- `exports:read`: Read export jobs and the fields an export can carry.\n- `exports:run`: Create, preview, start, cancel and archive CSV exports of companies, contacts and candidates, and download the file. Also needs `crm:read`. Delivering an export to a webhook destination stays in the app.\n- `integrations:read`: Read connections, field mappings, CRM sync jobs and webhook destinations.\n- `webhooks:read`: Read webhook subscriptions, the event types they can name and their delivery log.\n- `webhooks:write`: Subscribe a receiver URL to webhook events; edit, test, pause, resume and archive a subscription and rotate its signing secret; redeliver an event. Only workspace owners and admins can grant it.\n- `reporting:read`: Read analytics and dashboards.\n- `assistant:read`: Read the Assistant: its threads, messages and pending approvals.\n- `assistant:run`: Converse with the Assistant. Uses the workspace’s AI quota.\n- `assistant:write`: Approve or reject the changes the Assistant proposes.","scopes":["discovery:run"],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An Enrik API key, sent as `Authorization: Bearer \u003ckey>`. A key reaches public operations only, and only those whose scopes it holds. A few parameters need a scope beyond their operation’s, which the parameter names. The scopes:\n\n- `setup:read`: Read the workspace setup and its company profile.\n- `setup:run`: Change the setup: confirm the company profile, authorize sponsored drafting and background company research, choose what to set up and complete setup.\n- `workspace:read`: Read the workspace’s own profile: its health summary and setup state.\n- `crm:read`: Read companies with their signals, contacts and the saved views over them.\n- `crm:write`: Create, update and restore companies and contacts, and create, update and delete saved views.\n- `crm:delete`: Delete companies and contacts.\n- `twin:read`: Read the Company Twin: structured company knowledge and its signals.\n- `discovery:read`: Read ICP profiles, ICP assessments, discovery briefs, discovery jobs, candidates and the signal library.\n- `discovery:write`: Create and change ICP profiles, discovery briefs and signal-definition drafts, and review discovery candidates.\n- `discovery:run`: Create, start and cancel discovery jobs, and edit a draft one. Uses provider budget.\n- `enrichment:read`: Read the enrichment configuration and its results, including a record’s enrichment, formula and custom-API cells.\n- `enrichment:run`: Launch and cancel enrichment. Spends enrichment credits.\n- `automation:read`: Read workflows and agents with their run history, including a record’s agent cells.\n- `automation:run`: Run existing workflows and agents.\n- `exports:read`: Read export jobs and the fields an export can carry.\n- `exports:run`: Create, preview, start, cancel and archive CSV exports of companies, contacts and candidates, and download the file. Also needs `crm:read`. Delivering an export to a webhook destination stays in the app.\n- `integrations:read`: Read connections, field mappings, CRM sync jobs and webhook destinations.\n- `webhooks:read`: Read webhook subscriptions, the event types they can name and their delivery log.\n- `webhooks:write`: Subscribe a receiver URL to webhook events; edit, test, pause, resume and archive a subscription and rotate its signing secret; redeliver an event. Only workspace owners and admins can grant it.\n- `reporting:read`: Read analytics and dashboards.\n- `assistant:read`: Read the Assistant: its threads, messages and pending approvals.\n- `assistant:run`: Converse with the Assistant. Uses the workspace’s AI quota.\n- `assistant:write`: Approve or reject the changes the Assistant proposes.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"https://api.enrik.ai/v1/openapi.json"},"subdomain":"enrik","siteName":"Enrik","title":"Start a discovery job - Enrik","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T15:59:55.888Z","originalFileLocation":"api-reference/companydiscoveryjobs/start-a-discovery-job.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=\"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 permission_denied, details.code api_spend_disabled), fewer than the workspace’s active-job cap (409 concurrent_run_limit, discovery_active_jobs) and room in the daily allowance (409 conflict, discovery_daily_limit). The job then runs with the key’s own authority.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Enrik\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/svg+xml\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/enrik/favicon.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/enrik/favicon.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/enrik/favicon.svg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/enrik/favicon.svg\">\u003cmeta data-mint-head property=\"og:title\" content=\"Start a discovery job - Enrik\">\u003cmeta data-mint-head property=\"og:description\" content=\"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 permission_denied, details.code api_spend_disabled), fewer than the workspace’s active-job cap (409 concurrent_run_limit, discovery_active_jobs) and room in the daily allowance (409 conflict, discovery_daily_limit). The job then runs with the key’s own authority.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Enrik\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://enrik.mintlify.site/_mintlify/api/og/v2?division=companyDiscoveryJobs\u0026amp;title=Start+a+discovery+job\u0026amp;description=After+the+plan+check+%28and%2C+for+a+controlled+source%2C+the+job+quota%29+moves+a+draft+or+queued+job+to+queued%2C+publishing+it+and+recording+its+usage+in+that+transact\u0026amp;theme=1a1b5b8bdbe71a79282f5f36\u0026amp;signature=51e88af1585057464641422ae384db8f424bd86167016bba3541847c521c1009\">\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=\"Start a discovery job - Enrik\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 permission_denied, details.code api_spend_disabled), fewer than the workspace’s active-job cap (409 concurrent_run_limit, discovery_active_jobs) and room in the daily allowance (409 conflict, discovery_daily_limit). The job then runs with the key’s own authority.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://enrik.mintlify.site/_mintlify/api/og/v2?division=companyDiscoveryJobs\u0026amp;title=Start+a+discovery+job\u0026amp;description=After+the+plan+check+%28and%2C+for+a+controlled+source%2C+the+job+quota%29+moves+a+draft+or+queued+job+to+queued%2C+publishing+it+and+recording+its+usage+in+that+transact\u0026amp;theme=1a1b5b8bdbe71a79282f5f36\u0026amp;signature=51e88af1585057464641422ae384db8f424bd86167016bba3541847c521c1009\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/enrik/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Enrik\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4f46e5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/companydiscoveryjobs/start-a-discovery-job.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.enrik.ai/#organization\",\"name\":\"Enrik\",\"url\":\"https://docs.enrik.ai\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.enrik.ai#website\",\"name\":\"Enrik\",\"url\":\"https://docs.enrik.ai\",\"publisher\":{\"@id\":\"https://docs.enrik.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job#webpage\",\"url\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job\",\"name\":\"Start a discovery job\",\"description\":\"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 permission_denied, details.code api_spend_disabled), fewer than the workspace’s active-job cap (409 concurrent_run_limit, discovery_active_jobs) and room in the daily allowance (409 conflict, discovery_daily_limit). The job then runs with the key’s own authority.\",\"dateModified\":\"2026-10-09T15:59:55.888Z\",\"isPartOf\":{\"@id\":\"https://docs.enrik.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.enrik.ai/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Endpoints\",\"item\":\"https://docs.enrik.ai/api-reference/companies/list-companies\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"companyDiscoveryJobs\",\"item\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/list-discovery-jobs\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Start a discovery job\",\"item\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job#apireference\",\"headline\":\"Start a discovery job\",\"name\":\"Start a discovery job\",\"description\":\"After the plan check (and, for a controlled source, the job quota) moves a draft or queued job to queued, publishing it and recording its usage in that transaction, which commits only after the queued job passed this schema. Answers the job as read after the commit; poll it from there. Starting a queued job again republishes it under the same queue id and counts once; a job that already runs or ended answers 409. Starting spends provider budget, so an API key’s start also needs the operator’s spend switch (off: 403 permission_denied, details.code api_spend_disabled), fewer than the workspace’s active-job cap (409 concurrent_run_limit, discovery_active_jobs) and room in the daily allowance (409 conflict, discovery_daily_limit). The job then runs with the key’s own authority.\",\"url\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job\",\"mainEntityOfPage\":{\"@id\":\"https://docs.enrik.ai/api-reference/companydiscoveryjobs/start-a-discovery-job#webpage\"},\"dateModified\":\"2026-10-09T15:59:55.888Z\",\"publisher\":{\"@id\":\"https://docs.enrik.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.enrik.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Enrik\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Enrik","nav":{"global":null,"groups":[{"group":"Get started","pages":[{"title":"Getting started","href":"/index"},{"title":"Create your workspace","href":"/create-your-workspace"}]},{"group":"Find and qualify companies","pages":[{"title":"Define your ICP","href":"/define-your-icp"},{"title":"Create a source","href":"/create-a-source"},{"title":"Review candidates","href":"/review-candidates"},{"title":"Promote companies","href":"/promote-companies"}]},{"group":"Enrich and act","pages":[{"title":"Run enrichment","href":"/run-enrichment"},{"title":"Use signals","href":"/use-signals"},{"title":"Create activation assets","href":"/create-activation-assets"},{"title":"Export data","href":"/export-data"},{"title":"Sync to HubSpot","href":"/sync-hubspot"}]},{"group":"Power features","pages":[{"title":"Use the Assistant","href":"/use-copilot"},{"title":"Formula columns","href":"/formula-columns"},{"title":"Custom API columns","href":"/custom-api-columns"},{"title":"Workflows","href":"/workflows"},{"title":"AI agents","href":"/ai-agents"}]},{"group":"Account and trust","pages":[{"title":"Billing \u0026 the free trial","href":"/billing-and-trial"},{"title":"Security \u0026 data handling","href":"/security-and-data-handling"},{"title":"FAQ","href":"/faq"}]},{"group":"API reference","pages":[{"title":"Authentication and quick start","href":"/api-reference/introduction"},{"title":"Set up Enrik with an agent","href":"/api-reference/agent-setup"},{"title":"Send feedback about the API","href":"/api-reference/feedback"},{"title":"Versioning and deprecation","href":"/api-reference/versioning"},{"title":"Changelog","href":"/api-reference/changelog"},{"group":"Endpoints","pages":[{"group":"companies","pages":[{"title":"List companies","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies","href":"/api-reference/companies/list-companies"},{"title":"Create a company","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/companies","href":"/api-reference/companies/create-a-company"},{"title":"Create up to 100 companies","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/companies/bulk-create","href":"/api-reference/companies/create-up-to-100-companies"},{"title":"Update up to 100 companies","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/companies/bulk-update","href":"/api-reference/companies/update-up-to-100-companies"},{"title":"Create or update up to 100 companies by domain","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/companies/bulk-upsert","href":"/api-reference/companies/create-or-update-up-to-100-companies-by-domain"},{"title":"List deleted companies","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/trash","href":"/api-reference/companies/list-deleted-companies"},{"title":"Create or update a company by domain","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/companies/upsert","href":"/api-reference/companies/create-or-update-a-company-by-domain"},{"title":"Get a company","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}","href":"/api-reference/companies/get-a-company"},{"title":"Delete a company","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json delete /v1/companies/{companyId}","href":"/api-reference/companies/delete-a-company"},{"title":"Update a company","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/companies/{companyId}","href":"/api-reference/companies/update-a-company"},{"title":"List a company’s contacts","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}/contacts","href":"/api-reference/companies/list-a-company’s-contacts"},{"title":"Get where a company’s fields came from","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}/provenance","href":"/api-reference/companies/get-where-a-company’s-fields-came-from"},{"title":"Restore a deleted company","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/companies/{companyId}/restore","href":"/api-reference/companies/restore-a-deleted-company"},{"title":"Get a company’s signal summary","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}/signal-summary","href":"/api-reference/companies/get-a-company’s-signal-summary"},{"title":"List a company’s signals","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}/signals","href":"/api-reference/companies/list-a-company’s-signals"},{"title":"List a company’s timeline","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}/timeline","href":"/api-reference/companies/list-a-company’s-timeline"},{"title":"A company was created","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook company.created","href":"/api-reference/companies/a-company-was-created"},{"title":"A company was deleted","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook company.deleted","href":"/api-reference/companies/a-company-was-deleted"},{"title":"A company was restored","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook company.restored","href":"/api-reference/companies/a-company-was-restored"},{"title":"A company changed","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook company.updated","href":"/api-reference/companies/a-company-changed"}]},{"group":"icpAssessments","pages":[{"title":"Get a company’s ICP assessment","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/companies/{companyId}/icp-assessment","href":"/api-reference/icpassessments/get-a-company’s-icp-assessment"}]},{"group":"companyCandidates","pages":[{"title":"List candidates","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-candidates","href":"/api-reference/companycandidates/list-candidates"},{"title":"Accept candidates","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/bulk-accept","href":"/api-reference/companycandidates/accept-candidates"},{"title":"Archive candidates","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/bulk-archive","href":"/api-reference/companycandidates/archive-candidates"},{"title":"Promote candidates","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/bulk-promote","href":"/api-reference/companycandidates/promote-candidates"},{"title":"Reject candidates","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/bulk-reject","href":"/api-reference/companycandidates/reject-candidates"},{"title":"Get a candidate","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-candidates/{candidateId}","href":"/api-reference/companycandidates/get-a-candidate"},{"title":"Accept a candidate","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/{candidateId}/accept","href":"/api-reference/companycandidates/accept-a-candidate"},{"title":"Archive a candidate","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/{candidateId}/archive","href":"/api-reference/companycandidates/archive-a-candidate"},{"title":"Promote a candidate","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/{candidateId}/promote","href":"/api-reference/companycandidates/promote-a-candidate"},{"title":"Reject a candidate","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-candidates/{candidateId}/reject","href":"/api-reference/companycandidates/reject-a-candidate"}]},{"group":"companyDiscoveryJobs","pages":[{"title":"List discovery jobs","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-discovery-jobs","href":"/api-reference/companydiscoveryjobs/list-discovery-jobs"},{"title":"Create a discovery job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-discovery-jobs","href":"/api-reference/companydiscoveryjobs/create-a-discovery-job"},{"title":"Get a discovery job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-discovery-jobs/{jobId}","href":"/api-reference/companydiscoveryjobs/get-a-discovery-job"},{"title":"Update a draft discovery job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/company-discovery-jobs/{jobId}","href":"/api-reference/companydiscoveryjobs/update-a-draft-discovery-job"},{"title":"Archive a discovery job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-discovery-jobs/{jobId}/archive","href":"/api-reference/companydiscoveryjobs/archive-a-discovery-job"},{"title":"Cancel a discovery job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-discovery-jobs/{jobId}/cancel","href":"/api-reference/companydiscoveryjobs/cancel-a-discovery-job"},{"title":"List a discovery job’s candidates","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-discovery-jobs/{jobId}/candidates","href":"/api-reference/companydiscoveryjobs/list-a-discovery-job’s-candidates"},{"title":"Get a discovery job’s quality summary","description":"How good one discovery job’s candidates are: how many fall in each review band, the average scores and a one-word verdict. Computed when asked, never stored.","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-discovery-jobs/{jobId}/quality-summary","href":"/api-reference/companydiscoveryjobs/get-a-discovery-job’s-quality-summary"},{"title":"Start a discovery job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/company-discovery-jobs/{jobId}/start","href":"/api-reference/companydiscoveryjobs/start-a-discovery-job"},{"title":"A discovery job reached its outcome","description":"Sent to each active subscription for `companyDiscoveryJob.terminal` once a company discovery job completes, completes with errors, fails or is canceled. The POST is signed with `X-Enrik-Signature: t=\u003cunix seconds>,v1=\u003chex HMAC-SHA256 of \"\u003ct>.\u003craw body>\">` under the destination’s signing secret, with a fresh `t` on every attempt. Answer 2xx within 10 seconds. Delivery is at least once and unordered: deduplicate by `id`. Up to 8 attempts over about 45 hours, within a 72-hour window.","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook company-discovery-job.terminal","href":"/api-reference/companydiscoveryjobs/a-discovery-job-reached-its-outcome"}]},{"group":"companySignals","pages":[{"title":"Get a company signal","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/company-signals/{id}","href":"/api-reference/companysignals/get-a-company-signal"},{"title":"A signal was applied to a company","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook company-signal.created","href":"/api-reference/companysignals/a-signal-was-applied-to-a-company"}]},{"group":"contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/contacts","href":"/api-reference/contacts/list-contacts"},{"title":"Create a contact","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/contacts","href":"/api-reference/contacts/create-a-contact"},{"title":"Create up to 100 contacts","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/contacts/bulk-create","href":"/api-reference/contacts/create-up-to-100-contacts"},{"title":"Update up to 100 contacts","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/contacts/bulk-update","href":"/api-reference/contacts/update-up-to-100-contacts"},{"title":"Create or update up to 100 contacts by e-mail","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/contacts/bulk-upsert","href":"/api-reference/contacts/create-or-update-up-to-100-contacts-by-e-mail"},{"title":"List deleted contacts","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/contacts/trash","href":"/api-reference/contacts/list-deleted-contacts"},{"title":"Create or update a contact by e-mail","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/contacts/upsert","href":"/api-reference/contacts/create-or-update-a-contact-by-e-mail"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/contacts/{contactId}","href":"/api-reference/contacts/get-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json delete /v1/contacts/{contactId}","href":"/api-reference/contacts/delete-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/contacts/{contactId}","href":"/api-reference/contacts/update-a-contact"},{"title":"Restore a deleted contact","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/contacts/{contactId}/restore","href":"/api-reference/contacts/restore-a-deleted-contact"},{"title":"List a contact’s timeline","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/contacts/{contactId}/timeline","href":"/api-reference/contacts/list-a-contact’s-timeline"},{"title":"A contact was created","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook contact.created","href":"/api-reference/contacts/a-contact-was-created"},{"title":"A contact was deleted","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook contact.deleted","href":"/api-reference/contacts/a-contact-was-deleted"},{"title":"A contact was restored","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook contact.restored","href":"/api-reference/contacts/a-contact-was-restored"},{"title":"A contact changed","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook contact.updated","href":"/api-reference/contacts/a-contact-changed"}]},{"group":"customFieldDefinitions","pages":[{"title":"List custom fields","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/custom-field-definitions","href":"/api-reference/customfielddefinitions/list-custom-fields"}]},{"group":"discoveryBriefs","pages":[{"title":"List discovery briefs","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/discovery-briefs","href":"/api-reference/discoverybriefs/list-discovery-briefs"},{"title":"Create a discovery brief","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/discovery-briefs","href":"/api-reference/discoverybriefs/create-a-discovery-brief"},{"title":"Get a discovery brief","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/discovery-briefs/{discoveryBriefId}","href":"/api-reference/discoverybriefs/get-a-discovery-brief"},{"title":"Update a discovery brief","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/discovery-briefs/{discoveryBriefId}","href":"/api-reference/discoverybriefs/update-a-discovery-brief"},{"title":"Archive a discovery brief","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/discovery-briefs/{discoveryBriefId}/archive","href":"/api-reference/discoverybriefs/archive-a-discovery-brief"},{"title":"List a discovery brief’s versions","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/discovery-briefs/{discoveryBriefId}/versions","href":"/api-reference/discoverybriefs/list-a-discovery-brief’s-versions"},{"title":"Add a discovery brief version","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/discovery-briefs/{discoveryBriefId}/versions","href":"/api-reference/discoverybriefs/add-a-discovery-brief-version"},{"title":"Get a discovery brief version","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/discovery-briefs/{discoveryBriefId}/versions/{versionId}","href":"/api-reference/discoverybriefs/get-a-discovery-brief-version"}]},{"group":"exportFields","pages":[{"title":"Get the export field catalogue","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/export-fields","href":"/api-reference/exportfields/get-the-export-field-catalogue"}]},{"group":"exportJobs","pages":[{"title":"List export jobs","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/export-jobs","href":"/api-reference/exportjobs/list-export-jobs"},{"title":"Create a draft export","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/export-jobs","href":"/api-reference/exportjobs/create-a-draft-export"},{"title":"Preview an export","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/export-jobs/preview","href":"/api-reference/exportjobs/preview-an-export"},{"title":"Get an export job","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/export-jobs/{id}","href":"/api-reference/exportjobs/get-an-export-job"},{"title":"Archive an export","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/export-jobs/{id}/archive","href":"/api-reference/exportjobs/archive-an-export"},{"title":"Cancel an export","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/export-jobs/{id}/cancel","href":"/api-reference/exportjobs/cancel-an-export"},{"title":"Download an export’s CSV file","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/export-jobs/{id}/download","href":"/api-reference/exportjobs/download-an-export’s-csv-file"},{"title":"Start an export","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/export-jobs/{id}/start","href":"/api-reference/exportjobs/start-an-export"}]},{"group":"feedback","pages":[{"title":"Send anonymous feedback","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/feedback","href":"/api-reference/feedback/send-anonymous-feedback"}]},{"group":"health","pages":[{"title":"Check that the API is up","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/health","href":"/api-reference/health/check-that-the-api-is-up"}]},{"group":"icpProfiles","pages":[{"title":"List ICP profiles","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/icp-profiles","href":"/api-reference/icpprofiles/list-icp-profiles"},{"title":"Create an ICP profile","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/icp-profiles","href":"/api-reference/icpprofiles/create-an-icp-profile"},{"title":"Get an ICP profile","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/icp-profiles/{icpProfileId}","href":"/api-reference/icpprofiles/get-an-icp-profile"},{"title":"Update an ICP profile","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/icp-profiles/{icpProfileId}","href":"/api-reference/icpprofiles/update-an-icp-profile"},{"title":"Archive an ICP profile","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/icp-profiles/{icpProfileId}/archive","href":"/api-reference/icpprofiles/archive-an-icp-profile"},{"title":"Restore an ICP profile","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/icp-profiles/{icpProfileId}/restore","href":"/api-reference/icpprofiles/restore-an-icp-profile"},{"title":"List an ICP profile’s versions","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/icp-profiles/{icpProfileId}/versions","href":"/api-reference/icpprofiles/list-an-icp-profile’s-versions"},{"title":"Add an ICP profile version","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/icp-profiles/{icpProfileId}/versions","href":"/api-reference/icpprofiles/add-an-icp-profile-version"},{"title":"Get an ICP profile version","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/icp-profiles/{icpProfileId}/versions/{versionId}","href":"/api-reference/icpprofiles/get-an-icp-profile-version"}]},{"group":"apiKeys","pages":[{"title":"Describe the calling API key","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/me","href":"/api-reference/apikeys/describe-the-calling-api-key"},{"title":"Revoke the calling API key","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/me/revoke","href":"/api-reference/apikeys/revoke-the-calling-api-key"},{"title":"Rotate the calling API key","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/me/rotate","href":"/api-reference/apikeys/rotate-the-calling-api-key"}]},{"group":"websiteOnboarding","pages":[{"title":"Read workspace company setup","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/onboarding/setup","href":"/api-reference/websiteonboarding/read-workspace-company-setup"},{"title":"Read workspace setup access","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/onboarding/setup/access","href":"/api-reference/websiteonboarding/read-workspace-setup-access"},{"title":"Confirm workspace company profile","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/onboarding/setup/company-profile/confirm","href":"/api-reference/websiteonboarding/confirm-workspace-company-profile"},{"title":"Draft workspace company profile from website or description","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/onboarding/setup/company-profile/draft","href":"/api-reference/websiteonboarding/draft-workspace-company-profile-from-website-or-description"},{"title":"Complete workspace setup","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/onboarding/setup/complete","href":"/api-reference/websiteonboarding/complete-workspace-setup"},{"title":"Read workspace setup completion","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/onboarding/setup/completion","href":"/api-reference/websiteonboarding/read-workspace-setup-completion"},{"title":"Reset workspace company setup","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/onboarding/setup/reset","href":"/api-reference/websiteonboarding/reset-workspace-company-setup"},{"title":"Choose workspace setups","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/onboarding/setup/setups","href":"/api-reference/websiteonboarding/choose-workspace-setups"},{"title":"Start workspace company setup","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/onboarding/setup/start","href":"/api-reference/websiteonboarding/start-workspace-company-setup"}]},{"group":"savedViews","pages":[{"title":"List saved views","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/saved-views","href":"/api-reference/savedviews/list-saved-views"},{"title":"Create a saved view","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/saved-views","href":"/api-reference/savedviews/create-a-saved-view"},{"title":"Get a saved view","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/saved-views/{savedViewId}","href":"/api-reference/savedviews/get-a-saved-view"},{"title":"Delete a saved view","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json delete /v1/saved-views/{savedViewId}","href":"/api-reference/savedviews/delete-a-saved-view"},{"title":"Update a saved view","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/saved-views/{savedViewId}","href":"/api-reference/savedviews/update-a-saved-view"}]},{"group":"signalDefinitions","pages":[{"title":"List signal definitions","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/signal-definitions","href":"/api-reference/signaldefinitions/list-signal-definitions"},{"title":"Create a signal definition","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/signal-definitions","href":"/api-reference/signaldefinitions/create-a-signal-definition"},{"title":"Get a signal definition","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/signal-definitions/{signalDefinitionId}","href":"/api-reference/signaldefinitions/get-a-signal-definition"},{"title":"Update a signal definition","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/signal-definitions/{signalDefinitionId}","href":"/api-reference/signaldefinitions/update-a-signal-definition"},{"title":"Archive a signal definition","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/signal-definitions/{signalDefinitionId}/archive","href":"/api-reference/signaldefinitions/archive-a-signal-definition"},{"title":"Restore a signal definition","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/signal-definitions/{signalDefinitionId}/restore","href":"/api-reference/signaldefinitions/restore-a-signal-definition"},{"title":"List a signal definition’s versions","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/signal-definitions/{signalDefinitionId}/versions","href":"/api-reference/signaldefinitions/list-a-signal-definition’s-versions"},{"title":"Add a signal definition version","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/signal-definitions/{signalDefinitionId}/versions","href":"/api-reference/signaldefinitions/add-a-signal-definition-version"},{"title":"Get a signal definition version","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/signal-definitions/{signalDefinitionId}/versions/{versionId}","href":"/api-reference/signaldefinitions/get-a-signal-definition-version"}]},{"group":"signalDetectors","pages":[{"title":"Get the signal detector catalogue","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/signal-detectors","href":"/api-reference/signaldetectors/get-the-signal-detector-catalogue"}]},{"group":"webhookEventDeliveries","pages":[{"title":"List event deliveries of a subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/webhook-event-deliveries","href":"/api-reference/webhookeventdeliveries/list-event-deliveries-of-a-subscription"},{"title":"Get an event delivery","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/webhook-event-deliveries/{id}","href":"/api-reference/webhookeventdeliveries/get-an-event-delivery"},{"title":"Redeliver an event","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-event-deliveries/{id}/redeliver","href":"/api-reference/webhookeventdeliveries/redeliver-an-event"}]},{"group":"webhookEventTypes","pages":[{"title":"List event types","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/webhook-event-types","href":"/api-reference/webhookeventtypes/list-event-types"}]},{"group":"webhookSubscriptions","pages":[{"title":"List event subscriptions","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/webhook-subscriptions","href":"/api-reference/webhooksubscriptions/list-event-subscriptions"},{"title":"Create an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-subscriptions","href":"/api-reference/webhooksubscriptions/create-an-event-subscription"},{"title":"Get an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/webhook-subscriptions/{id}","href":"/api-reference/webhooksubscriptions/get-an-event-subscription"},{"title":"Update an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json patch /v1/webhook-subscriptions/{id}","href":"/api-reference/webhooksubscriptions/update-an-event-subscription"},{"title":"Archive an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-subscriptions/{id}/archive","href":"/api-reference/webhooksubscriptions/archive-an-event-subscription"},{"title":"Disable an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-subscriptions/{id}/disable","href":"/api-reference/webhooksubscriptions/disable-an-event-subscription"},{"title":"Enable an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-subscriptions/{id}/enable","href":"/api-reference/webhooksubscriptions/enable-an-event-subscription"},{"title":"Rotate the signing secret","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-subscriptions/{id}/rotate-secret","href":"/api-reference/webhooksubscriptions/rotate-the-signing-secret"},{"title":"Test an event subscription","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json post /v1/webhook-subscriptions/{id}/test","href":"/api-reference/webhooksubscriptions/test-an-event-subscription"},{"title":"A subscription was tested","version":null,"deprecated":null,"openapi":"https://api.enrik.ai/v1/openapi.json webhook webhook.ping","href":"/api-reference/webhooksubscriptions/a-subscription-was-tested"}]},{"group":"workspaceMembers","pages":[{"title":"List workspace members","deprecated":null,"version":null,"openapi":"https://api.enrik.ai/v1/openapi.json get /v1/workspace-members","href":"/api-reference/workspacemembers/list-workspace-members"}]}]}]}]},"basePath":"","title":"Start a discovery job - Enrik","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}