Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 stale_version and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.
POST
/
v1
/
signal-definitions
/
{signalDefinitionId}
/
versions
Add a signal definition version
curl --request POST \ --url https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: <idempotency-key>' \ --data '{ "body": { "name": "Exhibits at a trade fair", "description": "The company exhibits at a trade fair in its industry.", "humanExplanation": "An exhibitor is investing in finding new customers this year.", "observableCondition": "The company is on the fair’s published exhibitor list.", "examples": [ "Listed as an exhibitor at the fair this year" ], "counterexamples": [ "Only a visitor badge was mentioned" ], "evidenceRequirements": { "permittedSourceKinds": [ "controlled_directory" ], "requireLocatedSupport": true, "requireEntityAttribution": true, "claimSupport": { "requiredAssertion": "affirmed", "permittedModalities": [ "factual" ] }, "temporal": { "semantics": "condition_observed", "minimumPrecision": "year", "windowDays": 365, "allowPlannedFuture": true }, "coverage": { "negativeEvidence": "requires_certified_complete_scope" } }, "detector": { "kind": "directory_listing", "config": { "sourceRole": "exhibitor_list", "editionLabel": "2026" } }, "subjectType": "company", "temporalRule": { "semantics": "condition_observed", "windowDays": 365, "minimumPrecision": "year", "allowPlannedFuture": true } }, "expectedRevision": 4}'
import requests
url = "https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions"
payload = {
"body": {
"name": "Exhibits at a trade fair",
"description": "The company exhibits at a trade fair in its industry.",
"humanExplanation": "An exhibitor is investing in finding new customers this year.",
"observableCondition": "The company is on the fair’s published exhibitor list.",
"examples": ["Listed as an exhibitor at the fair this year"],
"counterexamples": ["Only a visitor badge was mentioned"],
"evidenceRequirements": {
"permittedSourceKinds": ["controlled_directory"],
"requireLocatedSupport": True,
"requireEntityAttribution": True,
"claimSupport": {
"requiredAssertion": "affirmed",
"permittedModalities": ["factual"]
},
"temporal": {
"semantics": "condition_observed",
"minimumPrecision": "year",
"windowDays": 365,
"allowPlannedFuture": True
},
"coverage": { "negativeEvidence": "requires_certified_complete_scope" }
},
"detector": {
"kind": "directory_listing",
"config": {
"sourceRole": "exhibitor_list",
"editionLabel": "2026"
}
},
"subjectType": "company",
"temporalRule": {
"semantics": "condition_observed",
"windowDays": 365,
"minimumPrecision": "year",
"allowPlannedFuture": True
}
},
"expectedRevision": 4
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
body: JSON.stringify({
name: 'Exhibits at a trade fair',
description: 'The company exhibits at a trade fair in its industry.',
humanExplanation: 'An exhibitor is investing in finding new customers this year.',
observableCondition: 'The company is on the fair’s published exhibitor list.',
examples: ['Listed as an exhibitor at the fair this year'],
counterexamples: ['Only a visitor badge was mentioned'],
evidenceRequirements: {
permittedSourceKinds: ['controlled_directory'],
requireLocatedSupport: true,
requireEntityAttribution: true,
claimSupport: {requiredAssertion: 'affirmed', permittedModalities: ['factual']},
temporal: {
semantics: 'condition_observed',
minimumPrecision: 'year',
windowDays: 365,
allowPlannedFuture: true
},
coverage: {negativeEvidence: 'requires_certified_complete_scope'}
},
detector: {
kind: 'directory_listing',
config: {sourceRole: 'exhibitor_list', editionLabel: '2026'}
},
subjectType: 'company',
temporalRule: {
semantics: 'condition_observed',
windowDays: 365,
minimumPrecision: 'year',
allowPlannedFuture: true
}
}),
expectedRevision: 4
})
};
fetch('https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'body' => [
'name' => 'Exhibits at a trade fair',
'description' => 'The company exhibits at a trade fair in its industry.',
'humanExplanation' => 'An exhibitor is investing in finding new customers this year.',
'observableCondition' => 'The company is on the fair’s published exhibitor list.',
'examples' => [
'Listed as an exhibitor at the fair this year'
],
'counterexamples' => [
'Only a visitor badge was mentioned'
],
'evidenceRequirements' => [
'permittedSourceKinds' => [
'controlled_directory'
],
'requireLocatedSupport' => true,
'requireEntityAttribution' => true,
'claimSupport' => [
'requiredAssertion' => 'affirmed',
'permittedModalities' => [
'factual'
]
],
'temporal' => [
'semantics' => 'condition_observed',
'minimumPrecision' => 'year',
'windowDays' => 365,
'allowPlannedFuture' => true
],
'coverage' => [
'negativeEvidence' => 'requires_certified_complete_scope'
]
],
'detector' => [
'kind' => 'directory_listing',
'config' => [
'sourceRole' => 'exhibitor_list',
'editionLabel' => '2026'
]
],
'subjectType' => 'company',
'temporalRule' => [
'semantics' => 'condition_observed',
'windowDays' => 365,
'minimumPrecision' => 'year',
'allowPlannedFuture' => true
]
],
'expectedRevision' => 4
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions"
payload := strings.NewReader("{\n \"body\": {\n \"name\": \"Exhibits at a trade fair\",\n \"description\": \"The company exhibits at a trade fair in its industry.\",\n \"humanExplanation\": \"An exhibitor is investing in finding new customers this year.\",\n \"observableCondition\": \"The company is on the fair’s published exhibitor list.\",\n \"examples\": [\n \"Listed as an exhibitor at the fair this year\"\n ],\n \"counterexamples\": [\n \"Only a visitor badge was mentioned\"\n ],\n \"evidenceRequirements\": {\n \"permittedSourceKinds\": [\n \"controlled_directory\"\n ],\n \"requireLocatedSupport\": true,\n \"requireEntityAttribution\": true,\n \"claimSupport\": {\n \"requiredAssertion\": \"affirmed\",\n \"permittedModalities\": [\n \"factual\"\n ]\n },\n \"temporal\": {\n \"semantics\": \"condition_observed\",\n \"minimumPrecision\": \"year\",\n \"windowDays\": 365,\n \"allowPlannedFuture\": true\n },\n \"coverage\": {\n \"negativeEvidence\": \"requires_certified_complete_scope\"\n }\n },\n \"detector\": {\n \"kind\": \"directory_listing\",\n \"config\": {\n \"sourceRole\": \"exhibitor_list\",\n \"editionLabel\": \"2026\"\n }\n },\n \"subjectType\": \"company\",\n \"temporalRule\": {\n \"semantics\": \"condition_observed\",\n \"windowDays\": 365,\n \"minimumPrecision\": \"year\",\n \"allowPlannedFuture\": true\n }\n },\n \"expectedRevision\": 4\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": {\n \"name\": \"Exhibits at a trade fair\",\n \"description\": \"The company exhibits at a trade fair in its industry.\",\n \"humanExplanation\": \"An exhibitor is investing in finding new customers this year.\",\n \"observableCondition\": \"The company is on the fair’s published exhibitor list.\",\n \"examples\": [\n \"Listed as an exhibitor at the fair this year\"\n ],\n \"counterexamples\": [\n \"Only a visitor badge was mentioned\"\n ],\n \"evidenceRequirements\": {\n \"permittedSourceKinds\": [\n \"controlled_directory\"\n ],\n \"requireLocatedSupport\": true,\n \"requireEntityAttribution\": true,\n \"claimSupport\": {\n \"requiredAssertion\": \"affirmed\",\n \"permittedModalities\": [\n \"factual\"\n ]\n },\n \"temporal\": {\n \"semantics\": \"condition_observed\",\n \"minimumPrecision\": \"year\",\n \"windowDays\": 365,\n \"allowPlannedFuture\": true\n },\n \"coverage\": {\n \"negativeEvidence\": \"requires_certified_complete_scope\"\n }\n },\n \"detector\": {\n \"kind\": \"directory_listing\",\n \"config\": {\n \"sourceRole\": \"exhibitor_list\",\n \"editionLabel\": \"2026\"\n }\n },\n \"subjectType\": \"company\",\n \"temporalRule\": {\n \"semantics\": \"condition_observed\",\n \"windowDays\": 365,\n \"minimumPrecision\": \"year\",\n \"allowPlannedFuture\": true\n }\n },\n \"expectedRevision\": 4\n}")
.asString();
require 'uri'
require 'net/http'
url = URI("https://api.enrik.ai/v1/signal-definitions/{signalDefinitionId}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"body\": {\n \"name\": \"Exhibits at a trade fair\",\n \"description\": \"The company exhibits at a trade fair in its industry.\",\n \"humanExplanation\": \"An exhibitor is investing in finding new customers this year.\",\n \"observableCondition\": \"The company is on the fair’s published exhibitor list.\",\n \"examples\": [\n \"Listed as an exhibitor at the fair this year\"\n ],\n \"counterexamples\": [\n \"Only a visitor badge was mentioned\"\n ],\n \"evidenceRequirements\": {\n \"permittedSourceKinds\": [\n \"controlled_directory\"\n ],\n \"requireLocatedSupport\": true,\n \"requireEntityAttribution\": true,\n \"claimSupport\": {\n \"requiredAssertion\": \"affirmed\",\n \"permittedModalities\": [\n \"factual\"\n ]\n },\n \"temporal\": {\n \"semantics\": \"condition_observed\",\n \"minimumPrecision\": \"year\",\n \"windowDays\": 365,\n \"allowPlannedFuture\": true\n },\n \"coverage\": {\n \"negativeEvidence\": \"requires_certified_complete_scope\"\n }\n },\n \"detector\": {\n \"kind\": \"directory_listing\",\n \"config\": {\n \"sourceRole\": \"exhibitor_list\",\n \"editionLabel\": \"2026\"\n }\n },\n \"subjectType\": \"company\",\n \"temporalRule\": {\n \"semantics\": \"condition_observed\",\n \"windowDays\": 365,\n \"minimumPrecision\": \"year\",\n \"allowPlannedFuture\": true\n }\n },\n \"expectedRevision\": 4\n}"
response = http.request(request)
puts response.read_body
{ "id": "0199a1b2-0000-7000-8000-00000000f211", "signalDefinitionId": "0199a1b2-0000-7000-8000-00000000f201", "versionNumber": 2, "body": { "name": "Exhibits at a trade fair", "description": "The company exhibits at a trade fair in its industry.", "humanExplanation": "An exhibitor is investing in finding new customers this year.", "observableCondition": "The company is on the fair’s published exhibitor list.", "examples": [ "Listed as an exhibitor at the fair this year" ], "counterexamples": [ "Only a visitor badge was mentioned" ], "evidenceRequirements": { "permittedSourceKinds": [ "controlled_directory" ], "requireLocatedSupport": true, "requireEntityAttribution": true, "claimSupport": { "requiredAssertion": "affirmed", "permittedModalities": [ "factual" ] }, "temporal": { "semantics": "condition_observed", "minimumPrecision": "year", "windowDays": 365, "allowPlannedFuture": true }, "coverage": { "negativeEvidence": "requires_certified_complete_scope" } }, "detector": { "kind": "directory_listing", "config": { "sourceRole": "exhibitor_list", "editionLabel": "2026" } }, "subjectType": "company", "temporalRule": { "semantics": "condition_observed", "windowDays": 365, "minimumPrecision": "year", "allowPlannedFuture": true } }, "detectorKind": "directory_listing", "schemaVersion": 1, "detectorContractVersion": 1, "contentFingerprint": "sha256:4e1a9c07", "publicationStatus": "draft", "firstPublishedAt": null, "publishedAt": null, "retiredAt": null, "createdBy": "0199a1b2-0000-7000-8000-00000000c001", "createdAt": "2026-09-10T08:00:00.000Z", "revision": 5}
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.
The definition’s revision after this append; send it with the next command.
Required range: -9007199254740991 <= x <= 9007199254740991
Was this page helpful?
{"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/signaldefinitions/add-a-signal-definition-version","slug":"/api-reference/signaldefinitions/add-a-signal-definition-version","pageMetadata":{"title":"Add a signal definition version","description":"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 `stale_version` and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.","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","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: [\"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 \", _jsx(_components.code, {\n children: \"stale_version\"\n }), \" and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.\"]\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":"Add a signal definition version","description":"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 `stale_version` and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"signalDefinitions.appendVersion","summary":"Add a signal definition version","description":"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 `stale_version` and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.","tags":["signalDefinitions"],"security":["10a44ce4-04e1-4740-8620-e33fca88830b"],"parameters":["3a40cef3-ce8b-46e0-b43e-c109b9baa562","1d66d1cc-169f-411a-8480-518e76f68204"],"requestBody":"6f3d6381-d22c-4640-9128-d0dba927d81b","responses":{"201":"abe4257f-7937-4e57-ab9b-7d38fd75a72a","400":"3563f91e-6e68-4754-9e00-b8f7ae8ec4ca","401":"83b7ee35-aa0e-433f-9c67-002ccc84e9a7","403":"ff28c52e-13f7-4edf-bd4b-1143c0bcb997","404":"251e060d-d989-4af5-8e00-a39b84438e99","409":"8b05a7e8-020e-4f08-a14c-6fdba9c4b658","413":"dfa10457-2bc7-48b7-921f-27a5487378e5","415":"7474285f-ce37-4252-b1ec-7215c915bd3a","422":"8ea543e3-b83e-41e2-959a-7f4bffe6e311","429":"e8362907-09ca-4bb5-949d-efe936fc34f5","500":"ba6407f1-a804-4d58-96fc-2da78b816ac8","503":"72e89519-6fec-40f7-8a63-495fd3d1a99b","default":"35df3b79-5973-419b-b724-9abd17743774"},"x-mutation-class":"validate-before-commit","x-stability-level":"beta","method":"post","type":"path","servers":["d4b75ac2-20fc-4060-84ae-9370689f03ae"],"path":"/v1/signal-definitions/{signalDefinitionId}/versions","baseUrlOptions":["https://api.enrik.ai"],"title":"Add a signal definition version","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"3a40cef3-ce8b-46e0-b43e-c109b9baa562":{"name":"signalDefinitionId","in":"path","required":true,"description":"The signal definition’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 signal definition’s id.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"1d66d1cc-169f-411a-8480-518e76f68204":{"name":"Idempotency-Key","in":"header","required":true,"description":"A key you choose for this request, such as a UUID. Retrying with the same key returns the first result instead of doing the work twice.","schema":{"type":"string","minLength":1,"maxLength":200,"isRequired":true,"description":"A key you choose for this request, such as a UUID. Retrying with the same key returns the first result instead of doing the work twice.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"The signal’s name in this version.","isRequired":true,"uniqueKey":"body.name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"What the signal is about; `null` when not given.","maxLength":2000,"isRequired":true,"uniqueKey":"body.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"What the signal is about; `null` when not given.","isRequired":true,"uniqueKey":"body.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.description","typeLabel":"string | null"},"humanExplanation":{"type":"string","minLength":1,"maxLength":4000,"description":"What the signal means, for a person.","isRequired":true,"uniqueKey":"body.humanExplanation","typeLabel":"string"},"observableCondition":{"type":"string","minLength":1,"maxLength":4000,"description":"What must be observed for the signal to hold.","isRequired":true,"uniqueKey":"body.observableCondition","typeLabel":"string"},"examples":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000,"uniqueKey":"body.examples.items.[INDEX]","typeLabel":"string"},"description":"Examples of the signal holding, at most 10.","isRequired":true,"uniqueKey":"body.examples","typeLabel":"string[]"},"counterexamples":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000,"uniqueKey":"body.counterexamples.items.[INDEX]","typeLabel":"string"},"description":"Examples of it not holding, at most 10.","isRequired":true,"uniqueKey":"body.counterexamples","typeLabel":"string[]"},"evidenceRequirements":{"type":"object","properties":{"permittedSourceKinds":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","enum":["controlled_directory","company_page","workspace_document","provider_record"],"uniqueKey":"body.evidenceRequirements.permittedSourceKinds.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The kinds of source evidence may come from; at least one.","isRequired":true,"uniqueKey":"body.evidenceRequirements.permittedSourceKinds","typeLabel":"enum\u003cstring>[]"},"requireLocatedSupport":{"type":"boolean","description":"Whether evidence must point at where in the source it is.","isRequired":true,"uniqueKey":"body.evidenceRequirements.requireLocatedSupport","typeLabel":"boolean"},"requireEntityAttribution":{"type":"boolean","const":true,"description":"Evidence must be about the company itself: always `true`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.requireEntityAttribution","typeLabel":"boolean"},"claimSupport":{"type":"object","properties":{"requiredAssertion":{"type":"string","const":"affirmed","description":"Always `affirmed`: a source affirms it.","isRequired":true,"uniqueKey":"body.evidenceRequirements.claimSupport.requiredAssertion","typeLabel":"string"},"permittedModalities":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["factual","planned"],"uniqueKey":"body.evidenceRequirements.claimSupport.permittedModalities.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Which kinds of claim count: `factual`, and possibly `planned`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.claimSupport.permittedModalities","typeLabel":"enum\u003cstring>[]"}},"required":["requiredAssertion","permittedModalities"],"additionalProperties":false,"description":"What a source’s claim must look like.","isRequired":true,"uniqueKey":"body.evidenceRequirements.claimSupport","typeLabel":"object"},"temporal":{"oneOf":[{"type":"object","description":"When evidence must date from: the same values as `temporalRule`, never `null`.","required":["semantics","minimumPrecision","windowDays","allowPlannedFuture"],"properties":{"semantics":{"type":"string","enum":["event_occurred","event_announced","condition_observed"],"description":"What the date is of; must equal `temporalRule.semantics`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.semantics","typeLabel":"enum\u003cstring>"},"minimumPrecision":{"type":"string","enum":["day","month","year"],"description":"How exact the date must be at least; must equal `temporalRule.minimumPrecision`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.minimumPrecision","typeLabel":"enum\u003cstring>"},"windowDays":{"oneOf":[{"type":"integer","description":"How many days back evidence may date from, 1 to 3650, or `null` for no limit; must equal `temporalRule.windowDays`.","maximum":3650,"minimum":1,"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.windowDays.oneOf.0","typeLabel":"integer"},{"type":"null","description":"How many days back evidence may date from, 1 to 3650, or `null` for no limit; must equal `temporalRule.windowDays`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.windowDays.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.windowDays","typeLabel":"integer | null"},"allowPlannedFuture":{"type":"boolean","description":"Whether an event planned for later counts; must equal `temporalRule.allowPlannedFuture`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.allowPlannedFuture","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0","typeLabel":"object"},{"type":"null","description":"When evidence must date from: the same values as `temporalRule`, never `null`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal","typeLabel":"object | null"},"coverage":{"type":"object","properties":{"negativeEvidence":{"type":"string","enum":["requires_certified_complete_scope","never"],"description":"What it takes to say a company does NOT show the signal. Fixed by the detector: `requires_certified_complete_scope` for `directory_listing`, `never` for the others.","isRequired":true,"uniqueKey":"body.evidenceRequirements.coverage.negativeEvidence","typeLabel":"enum\u003cstring>"}},"required":["negativeEvidence"],"additionalProperties":false,"description":"What an absence of evidence may be taken to mean.","isRequired":true,"uniqueKey":"body.evidenceRequirements.coverage","typeLabel":"object"}},"required":["permittedSourceKinds","requireLocatedSupport","requireEntityAttribution","claimSupport","temporal","coverage"],"additionalProperties":false,"description":"What evidence must show before the signal holds.","isRequired":true,"uniqueKey":"body.evidenceRequirements","typeLabel":"object"},"detector":{"oneOf":[{"type":"object","description":"The detector that looks for the signal, and its settings.","required":["kind","config"],"properties":{"kind":{"type":"string","const":"directory_listing","description":"The company is listed in a directory.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.kind","typeLabel":"string"},"config":{"type":"object","properties":{"sourceRole":{"type":"string","minLength":1,"maxLength":120,"description":"The role the company must hold in the list, such as `exhibitor`.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.sourceRole","typeLabel":"string"},"editionLabel":{"oneOf":[{"type":"string","description":"Which edition of the directory, such as a year; `null` for a rolling directory.","maxLength":120,"minLength":1,"isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.editionLabel.oneOf.0","typeLabel":"string"},{"type":"null","description":"Which edition of the directory, such as a year; `null` for a rolling directory.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.editionLabel.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.editionLabel","typeLabel":"string | null"}},"required":["sourceRole","editionLabel"],"additionalProperties":false,"description":"How the directory is read.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"body.detector.oneOf.0","typeLabel":"object"},{"type":"object","description":"The detector that looks for the signal, and its settings.","required":["kind","config"],"properties":{"kind":{"type":"string","const":"page_extract_llm","description":"A model reads the company’s own pages.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.kind","typeLabel":"string"},"config":{"type":"object","properties":{"announcementType":{"type":"string","minLength":1,"maxLength":120,"description":"What kind of announcement to look for.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.config.announcementType","typeLabel":"string"},"maxPagesPerCompany":{"type":"number","const":1,"description":"How many pages of each company to read: always 1.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.config.maxPagesPerCompany","typeLabel":"number"}},"required":["announcementType","maxPagesPerCompany"],"additionalProperties":false,"description":"How the pages are read.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.config","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"body.detector.oneOf.1","typeLabel":"object"},{"type":"object","description":"The detector that looks for the signal, and its settings.","required":["kind","config"],"properties":{"kind":{"type":"string","const":"stored_context_llm","description":"A model reads what the workspace has stored. Research only: never publishable.","isRequired":true,"uniqueKey":"body.detector.oneOf.2.kind","typeLabel":"string"},"config":{"type":"object","properties":{"note":{"oneOf":[{"type":"string","description":"A note on what to look for; `null` when none.","maxLength":500,"isRequired":true,"uniqueKey":"body.detector.oneOf.2.config.note.oneOf.0","typeLabel":"string"},{"type":"null","description":"A note on what to look for; `null` when none.","isRequired":true,"uniqueKey":"body.detector.oneOf.2.config.note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.detector.oneOf.2.config.note","typeLabel":"string | null"}},"required":["note"],"additionalProperties":false,"description":"How the stored context is read.","isRequired":true,"uniqueKey":"body.detector.oneOf.2.config","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"body.detector.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"body.detector","typeLabel":"object"},"subjectType":{"type":"string","enum":["company"],"description":"What the signal is about: `company`.","isRequired":true,"uniqueKey":"body.subjectType","typeLabel":"enum\u003cstring>"},"temporalRule":{"type":"object","properties":{"semantics":{"type":"string","enum":["event_occurred","event_announced","condition_observed"],"description":"What the date is of: an event, its announcement, or an observed condition.","isRequired":true,"uniqueKey":"body.temporalRule.semantics","typeLabel":"enum\u003cstring>"},"windowDays":{"oneOf":[{"type":"integer","description":"How many days back the signal may date from, 1 to 3650, or `null` for no limit.","maximum":3650,"minimum":1,"isRequired":true,"uniqueKey":"body.temporalRule.windowDays.oneOf.0","typeLabel":"integer"},{"type":"null","description":"How many days back the signal may date from, 1 to 3650, or `null` for no limit.","isRequired":true,"uniqueKey":"body.temporalRule.windowDays.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.temporalRule.windowDays","typeLabel":"integer | null"},"minimumPrecision":{"type":"string","enum":["day","month","year"],"description":"How exact the date must be at least.","isRequired":true,"uniqueKey":"body.temporalRule.minimumPrecision","typeLabel":"enum\u003cstring>"},"allowPlannedFuture":{"type":"boolean","description":"Whether an event planned for later counts.","isRequired":true,"uniqueKey":"body.temporalRule.allowPlannedFuture","typeLabel":"boolean"}},"required":["semantics","windowDays","minimumPrecision","allowPlannedFuture"],"additionalProperties":false,"description":"The window the signal must fall in.","isRequired":true,"uniqueKey":"body.temporalRule","typeLabel":"object"}},"required":["name","description","humanExplanation","observableCondition","examples","counterexamples","evidenceRequirements","detector","subjectType","temporalRule"],"additionalProperties":false,"description":"The content of the new draft version.","isRequired":true,"uniqueKey":"body","typeLabel":"object"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647,"description":"The revision you were shown; a stale one answers 409 `stale_version`.","isRequired":true,"uniqueKey":"expectedRevision","typeLabel":"integer"}},"required":["body","expectedRevision"],"additionalProperties":false,"description":"A new immutable draft version of a signal definition.","uniqueKey":"","typeLabel":"object"},"example":{"body":{"name":"Exhibits at a trade fair","description":"The company exhibits at a trade fair in its industry.","humanExplanation":"An exhibitor is investing in finding new customers this year.","observableCondition":"The company is on the fair’s published exhibitor list.","examples":["Listed as an exhibitor at the fair this year"],"counterexamples":["Only a visitor badge was mentioned"],"evidenceRequirements":{"permittedSourceKinds":["controlled_directory"],"requireLocatedSupport":true,"requireEntityAttribution":true,"claimSupport":{"requiredAssertion":"affirmed","permittedModalities":["factual"]},"temporal":{"semantics":"condition_observed","minimumPrecision":"year","windowDays":365,"allowPlannedFuture":true},"coverage":{"negativeEvidence":"requires_certified_complete_scope"}},"detector":{"kind":"directory_listing","config":{"sourceRole":"exhibitor_list","editionLabel":"2026"}},"subjectType":"company","temporalRule":{"semantics":"condition_observed","windowDays":365,"minimumPrecision":"year","allowPlannedFuture":true}},"expectedRevision":4},"examples":{"Example":{"title":"Example","value":{"body":{"name":"Exhibits at a trade fair","description":"The company exhibits at a trade fair in its industry.","humanExplanation":"An exhibitor is investing in finding new customers this year.","observableCondition":"The company is on the fair’s published exhibitor list.","examples":["Listed as an exhibitor at the fair this year"],"counterexamples":["Only a visitor badge was mentioned"],"evidenceRequirements":{"permittedSourceKinds":["controlled_directory"],"requireLocatedSupport":true,"requireEntityAttribution":true,"claimSupport":{"requiredAssertion":"affirmed","permittedModalities":["factual"]},"temporal":{"semantics":"condition_observed","minimumPrecision":"year","windowDays":365,"allowPlannedFuture":true},"coverage":{"negativeEvidence":"requires_certified_complete_scope"}},"detector":{"kind":"directory_listing","config":{"sourceRole":"exhibitor_list","editionLabel":"2026"}},"subjectType":"company","temporalRule":{"semantics":"condition_observed","windowDays":365,"minimumPrecision":"year","allowPlannedFuture":true}},"expectedRevision":4}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"abe4257f-7937-4e57-ab9b-7d38fd75a72a":{"description":"A newly appended signal definition version and the definition’s new revision.","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. One policy counts this operation: `api-key`, every request the key makes.","schema":{"type":"string"},"example":"\"api-key\";r=599;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. One policy counts this operation: `api-key`, every request the key makes.","schema":{"type":"string"},"example":"\"api-key\";q=600;w=60"}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The version’s id.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"signalDefinitionId":{"type":"string","description":"The signal definition the version belongs to.","isRequired":true,"uniqueKey":"signalDefinitionId","typeLabel":"string"},"versionNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The version’s number, from 1, in the order they were made.","isRequired":true,"uniqueKey":"versionNumber","typeLabel":"integer"},"body":{"type":"object","properties":{"name":{"type":"string","description":"The signal’s name in this version.","isRequired":true,"uniqueKey":"body.name","typeLabel":"string"},"description":{"oneOf":[{"description":"What the signal is about; `null` when not given.","type":"string","isRequired":true,"uniqueKey":"body.description.oneOf.0","typeLabel":"string"},{"description":"What the signal is about; `null` when not given.","type":"null","isRequired":true,"uniqueKey":"body.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.description","typeLabel":"string | null"},"humanExplanation":{"type":"string","description":"What the signal means, for a person.","isRequired":true,"uniqueKey":"body.humanExplanation","typeLabel":"string"},"observableCondition":{"type":"string","description":"What must be observed for the signal to hold.","isRequired":true,"uniqueKey":"body.observableCondition","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"body.examples.items.[INDEX]","typeLabel":"string"},"description":"Examples of the signal holding.","isRequired":true,"uniqueKey":"body.examples","typeLabel":"string[]"},"counterexamples":{"type":"array","items":{"type":"string","uniqueKey":"body.counterexamples.items.[INDEX]","typeLabel":"string"},"description":"Examples of it not holding.","isRequired":true,"uniqueKey":"body.counterexamples","typeLabel":"string[]"},"evidenceRequirements":{"type":"object","properties":{"permittedSourceKinds":{"type":"array","items":{"type":"string","enum":["controlled_directory","company_page","workspace_document","provider_record"],"uniqueKey":"body.evidenceRequirements.permittedSourceKinds.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The kinds of source evidence may come from.","isRequired":true,"uniqueKey":"body.evidenceRequirements.permittedSourceKinds","typeLabel":"enum\u003cstring>[]"},"requireLocatedSupport":{"type":"boolean","description":"Whether evidence must point at where in the source it is.","isRequired":true,"uniqueKey":"body.evidenceRequirements.requireLocatedSupport","typeLabel":"boolean"},"requireEntityAttribution":{"type":"boolean","const":true,"description":"Evidence must be about the company itself: always `true`.","isRequired":true,"uniqueKey":"body.evidenceRequirements.requireEntityAttribution","typeLabel":"boolean"},"claimSupport":{"type":"object","properties":{"requiredAssertion":{"type":"string","const":"affirmed","description":"What a source must do with the claim: affirm it.","isRequired":true,"uniqueKey":"body.evidenceRequirements.claimSupport.requiredAssertion","typeLabel":"string"},"permittedModalities":{"type":"array","items":{"type":"string","enum":["factual","planned"],"uniqueKey":"body.evidenceRequirements.claimSupport.permittedModalities.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Which kinds of claim count: a fact, and possibly a plan.","isRequired":true,"uniqueKey":"body.evidenceRequirements.claimSupport.permittedModalities","typeLabel":"enum\u003cstring>[]"}},"required":["requiredAssertion","permittedModalities"],"additionalProperties":true,"description":"What a source’s claim must look like.","isRequired":true,"uniqueKey":"body.evidenceRequirements.claimSupport","typeLabel":"object"},"temporal":{"oneOf":[{"type":"object","description":"When evidence must date from; `null` when any date will do.","required":["semantics","minimumPrecision","windowDays","allowPlannedFuture"],"properties":{"semantics":{"type":"string","enum":["event_occurred","event_announced","condition_observed"],"description":"What the date is of: an event, its announcement, or an observed condition.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.semantics","typeLabel":"enum\u003cstring>"},"minimumPrecision":{"type":"string","enum":["day","month","year"],"description":"How exact the date must be at least.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.minimumPrecision","typeLabel":"enum\u003cstring>"},"windowDays":{"oneOf":[{"type":"integer","description":"How many days back evidence may date from; `null` for no limit.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.windowDays.oneOf.0","typeLabel":"integer"},{"type":"null","description":"How many days back evidence may date from; `null` for no limit.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.windowDays.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.windowDays","typeLabel":"integer | null"},"allowPlannedFuture":{"type":"boolean","description":"Whether an event planned for later counts.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0.allowPlannedFuture","typeLabel":"boolean"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.0","typeLabel":"object"},{"type":"null","description":"When evidence must date from; `null` when any date will do.","isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.evidenceRequirements.temporal","typeLabel":"object | null"},"coverage":{"type":"object","properties":{"negativeEvidence":{"type":"string","enum":["requires_certified_complete_scope","never"],"description":"What it takes to say a company does NOT show the signal.","isRequired":true,"uniqueKey":"body.evidenceRequirements.coverage.negativeEvidence","typeLabel":"enum\u003cstring>"}},"required":["negativeEvidence"],"additionalProperties":true,"description":"What an absence of evidence may be taken to mean.","isRequired":true,"uniqueKey":"body.evidenceRequirements.coverage","typeLabel":"object"}},"required":["permittedSourceKinds","requireLocatedSupport","requireEntityAttribution","claimSupport","temporal","coverage"],"additionalProperties":true,"description":"What evidence must show before the signal holds.","isRequired":true,"uniqueKey":"body.evidenceRequirements","typeLabel":"object"},"detector":{"oneOf":[{"type":"object","description":"The detector that looks for the signal, and its settings.","required":["kind","config"],"properties":{"kind":{"type":"string","const":"directory_listing","description":"The company is listed in a directory.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.kind","typeLabel":"string"},"config":{"type":"object","properties":{"sourceRole":{"type":"string","description":"What part the directory plays, such as an exhibitor list.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.sourceRole","typeLabel":"string"},"editionLabel":{"oneOf":[{"description":"Which edition of the directory, such as a year; `null` when any.","type":"string","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.editionLabel.oneOf.0","typeLabel":"string"},{"description":"Which edition of the directory, such as a year; `null` when any.","type":"null","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.editionLabel.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.detector.oneOf.0.config.editionLabel","typeLabel":"string | null"}},"required":["sourceRole","editionLabel"],"additionalProperties":true,"description":"How the directory is read.","isRequired":true,"uniqueKey":"body.detector.oneOf.0.config","typeLabel":"object"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"body.detector.oneOf.0","typeLabel":"object"},{"type":"object","description":"The detector that looks for the signal, and its settings.","required":["kind","config"],"properties":{"kind":{"type":"string","const":"page_extract_llm","description":"A model reads the company’s own pages.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.kind","typeLabel":"string"},"config":{"type":"object","properties":{"announcementType":{"type":"string","description":"What kind of announcement to look for.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.config.announcementType","typeLabel":"string"},"maxPagesPerCompany":{"type":"number","const":1,"description":"How many pages of each company to read: one, in this contract version.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.config.maxPagesPerCompany","typeLabel":"number"}},"required":["announcementType","maxPagesPerCompany"],"additionalProperties":true,"description":"How the pages are read.","isRequired":true,"uniqueKey":"body.detector.oneOf.1.config","typeLabel":"object"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"body.detector.oneOf.1","typeLabel":"object"},{"type":"object","description":"The detector that looks for the signal, and its settings.","required":["kind","config"],"properties":{"kind":{"type":"string","const":"stored_context_llm","description":"A model reads what the workspace has stored.","isRequired":true,"uniqueKey":"body.detector.oneOf.2.kind","typeLabel":"string"},"config":{"type":"object","properties":{"note":{"oneOf":[{"description":"A note on what to look for; `null` when none.","type":"string","isRequired":true,"uniqueKey":"body.detector.oneOf.2.config.note.oneOf.0","typeLabel":"string"},{"description":"A note on what to look for; `null` when none.","type":"null","isRequired":true,"uniqueKey":"body.detector.oneOf.2.config.note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.detector.oneOf.2.config.note","typeLabel":"string | null"}},"required":["note"],"additionalProperties":true,"description":"How the stored context is read.","isRequired":true,"uniqueKey":"body.detector.oneOf.2.config","typeLabel":"object"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"body.detector.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"body.detector","typeLabel":"object"},"subjectType":{"type":"string","enum":["company"],"description":"What the signal is about: a company.","isRequired":true,"uniqueKey":"body.subjectType","typeLabel":"enum\u003cstring>"},"temporalRule":{"type":"object","properties":{"semantics":{"type":"string","enum":["event_occurred","event_announced","condition_observed"],"description":"What the date is of: an event, its announcement, or an observed condition.","isRequired":true,"uniqueKey":"body.temporalRule.semantics","typeLabel":"enum\u003cstring>"},"windowDays":{"oneOf":[{"type":"integer","description":"How many days back the signal may date from; `null` for no limit.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"body.temporalRule.windowDays.oneOf.0","typeLabel":"integer"},{"type":"null","description":"How many days back the signal may date from; `null` for no limit.","isRequired":true,"uniqueKey":"body.temporalRule.windowDays.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"body.temporalRule.windowDays","typeLabel":"integer | null"},"minimumPrecision":{"type":"string","enum":["day","month","year"],"description":"How exact the date must be at least.","isRequired":true,"uniqueKey":"body.temporalRule.minimumPrecision","typeLabel":"enum\u003cstring>"},"allowPlannedFuture":{"type":"boolean","description":"Whether an event planned for later counts.","isRequired":true,"uniqueKey":"body.temporalRule.allowPlannedFuture","typeLabel":"boolean"}},"required":["semantics","windowDays","minimumPrecision","allowPlannedFuture"],"additionalProperties":true,"description":"The window the signal must fall in.","isRequired":true,"uniqueKey":"body.temporalRule","typeLabel":"object"}},"required":["name","description","humanExplanation","observableCondition","examples","counterexamples","evidenceRequirements","detector","subjectType","temporalRule"],"additionalProperties":true,"description":"What the version says. A version never changes.","isRequired":true,"uniqueKey":"body","typeLabel":"object"},"detectorKind":{"type":"string","enum":["directory_listing","page_extract_llm","stored_context_llm"],"description":"The kind of detector the version uses.","isRequired":true,"uniqueKey":"detectorKind","typeLabel":"enum\u003cstring>"},"schemaVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The version of the definition format.","isRequired":true,"uniqueKey":"schemaVersion","typeLabel":"integer"},"detectorContractVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The version of the detector contract it was made for.","isRequired":true,"uniqueKey":"detectorContractVersion","typeLabel":"integer"},"contentFingerprint":{"type":"string","description":"A fingerprint of the body, equal for equal bodies.","isRequired":true,"uniqueKey":"contentFingerprint","typeLabel":"string"},"publicationStatus":{"type":"string","enum":["draft","published","retired"],"description":"`draft`, `published`, or `retired` (never published again).","isRequired":true,"uniqueKey":"publicationStatus","typeLabel":"enum\u003cstring>"},"firstPublishedAt":{"oneOf":[{"type":"string","description":"When the version was first published; `null` if never.","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":"firstPublishedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the version was first published; `null` if never.","isRequired":true,"uniqueKey":"firstPublishedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"firstPublishedAt","typeLabel":"string\u003cdate-time> | null"},"publishedAt":{"oneOf":[{"type":"string","description":"When the version was last published; `null` if never.","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":"publishedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the version was last published; `null` if never.","isRequired":true,"uniqueKey":"publishedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishedAt","typeLabel":"string\u003cdate-time> | null"},"retiredAt":{"oneOf":[{"type":"string","description":"When the version was retired; `null` if not.","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":"retiredAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the version was retired; `null` if not.","isRequired":true,"uniqueKey":"retiredAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"retiredAt","typeLabel":"string\u003cdate-time> | null"},"createdBy":{"oneOf":[{"description":"The user who made the version; `null` when no user did.","type":"string","isRequired":true,"uniqueKey":"createdBy.oneOf.0","typeLabel":"string"},{"description":"The user who made the version; `null` when no user did.","type":"null","isRequired":true,"uniqueKey":"createdBy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"createdBy","typeLabel":"string | 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 version was made.","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The definition’s revision after this append; send it with the next command.","isRequired":true,"uniqueKey":"revision","typeLabel":"integer"}},"required":["id","signalDefinitionId","versionNumber","body","detectorKind","schemaVersion","detectorContractVersion","contentFingerprint","publicationStatus","firstPublishedAt","publishedAt","retiredAt","createdBy","createdAt","revision"],"additionalProperties":true,"description":"A newly appended signal definition version and the definition’s new revision.","uniqueKey":"","typeLabel":"object"},"example":{"id":"0199a1b2-0000-7000-8000-00000000f211","signalDefinitionId":"0199a1b2-0000-7000-8000-00000000f201","versionNumber":2,"body":{"name":"Exhibits at a trade fair","description":"The company exhibits at a trade fair in its industry.","humanExplanation":"An exhibitor is investing in finding new customers this year.","observableCondition":"The company is on the fair’s published exhibitor list.","examples":["Listed as an exhibitor at the fair this year"],"counterexamples":["Only a visitor badge was mentioned"],"evidenceRequirements":{"permittedSourceKinds":["controlled_directory"],"requireLocatedSupport":true,"requireEntityAttribution":true,"claimSupport":{"requiredAssertion":"affirmed","permittedModalities":["factual"]},"temporal":{"semantics":"condition_observed","minimumPrecision":"year","windowDays":365,"allowPlannedFuture":true},"coverage":{"negativeEvidence":"requires_certified_complete_scope"}},"detector":{"kind":"directory_listing","config":{"sourceRole":"exhibitor_list","editionLabel":"2026"}},"subjectType":"company","temporalRule":{"semantics":"condition_observed","windowDays":365,"minimumPrecision":"year","allowPlannedFuture":true}},"detectorKind":"directory_listing","schemaVersion":1,"detectorContractVersion":1,"contentFingerprint":"sha256:4e1a9c07","publicationStatus":"draft","firstPublishedAt":null,"publishedAt":null,"retiredAt":null,"createdBy":"0199a1b2-0000-7000-8000-00000000c001","createdAt":"2026-09-10T08:00:00.000Z","revision":5},"examples":{"Example":{"title":"Example","value":{"id":"0199a1b2-0000-7000-8000-00000000f211","signalDefinitionId":"0199a1b2-0000-7000-8000-00000000f201","versionNumber":2,"body":{"name":"Exhibits at a trade fair","description":"The company exhibits at a trade fair in its industry.","humanExplanation":"An exhibitor is investing in finding new customers this year.","observableCondition":"The company is on the fair’s published exhibitor list.","examples":["Listed as an exhibitor at the fair this year"],"counterexamples":["Only a visitor badge was mentioned"],"evidenceRequirements":{"permittedSourceKinds":["controlled_directory"],"requireLocatedSupport":true,"requireEntityAttribution":true,"claimSupport":{"requiredAssertion":"affirmed","permittedModalities":["factual"]},"temporal":{"semantics":"condition_observed","minimumPrecision":"year","windowDays":365,"allowPlannedFuture":true},"coverage":{"negativeEvidence":"requires_certified_complete_scope"}},"detector":{"kind":"directory_listing","config":{"sourceRole":"exhibitor_list","editionLabel":"2026"}},"subjectType":"company","temporalRule":{"semantics":"condition_observed","windowDays":365,"minimumPrecision":"year","allowPlannedFuture":true}},"detectorKind":"directory_listing","schemaVersion":1,"detectorContractVersion":1,"contentFingerprint":"sha256:4e1a9c07","publicationStatus":"draft","firstPublishedAt":null,"publishedAt":null,"retiredAt":null,"createdBy":"0199a1b2-0000-7000-8000-00000000c001","createdAt":"2026-09-10T08:00:00.000Z","revision":5}}},"exampleType":"examples"}},"exampleType":"examples"},"3563f91e-6e68-4754-9e00-b8f7ae8ec4ca":{"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"},"83b7ee35-aa0e-433f-9c67-002ccc84e9a7":{"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"},"ff28c52e-13f7-4edf-bd4b-1143c0bcb997":{"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"},"251e060d-d989-4af5-8e00-a39b84438e99":{"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"},"8b05a7e8-020e-4f08-a14c-6fdba9c4b658":{"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"},"dfa10457-2bc7-48b7-921f-27a5487378e5":{"description":"The body is over the size limit. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `payload_too_large`: The body is over the size limit, currently 1 MiB. Send a smaller body.","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":"payload_too_large","message":"Payload Too Large","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"payload_too_large","message":"Payload Too Large","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"7474285f-ce37-4252-b1ec-7215c915bd3a":{"description":"The body’s media type cannot be read. Branch on `error.code`; quote `error.requestId` to support.\n\nThe codes a public operation answers with it:\n\n- `unsupported_media_type`: The `Content-Type` header is not a media type. Send `Content-Type: application/json`.","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":"unsupported_media_type","message":"Unsupported Media Type","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unsupported_media_type","message":"Unsupported Media Type","requestId":"5b1d3c1e-8d6f-4f2a-9a57-3a9b1f2c7d10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"8ea543e3-b83e-41e2-959a-7f4bffe6e311":{"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"},"e8362907-09ca-4bb5-949d-efe936fc34f5":{"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. One policy counts this operation: `api-key`, every request the key makes.","schema":{"type":"string"},"example":"\"api-key\";r=599;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. One policy counts this operation: `api-key`, every request the key makes.","schema":{"type":"string"},"example":"\"api-key\";q=600;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"},"ba6407f1-a804-4d58-96fc-2da78b816ac8":{"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"},"72e89519-6fec-40f7-8a63-495fd3d1a99b":{"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"},"35df3b79-5973-419b-b724-9abd17743774":{"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":{"10a44ce4-04e1-4740-8620-e33fca88830b":{"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:write"],"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:write"],"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":"Add a signal definition version - Enrik","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T15:59:57.285Z","originalFileLocation":"api-reference/signaldefinitions/add-a-signal-definition-version.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=\"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 stale_version and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.\">\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=\"Add a signal definition version - Enrik\">\u003cmeta data-mint-head property=\"og:description\" content=\"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 stale_version and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Enrik\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version\">\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=signalDefinitions\u0026amp;title=Add+a+signal+definition+version\u0026amp;description=Appends+an+immutable+draft+version+and+answers+it+with+the+definition%E2%80%99s+new+revision.+It+is+not+published.+Name+the+revision+you+were+shown%3A+a+stale+one+is+409+\u0026amp;theme=1a1b5b8bdbe71a79282f5f36\u0026amp;signature=1f4e1494550ba8b498b0606cf4ce0cf656a631de525d8093bcc6e6c8e9954972\">\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=\"Add a signal definition version - Enrik\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 stale_version and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://enrik.mintlify.site/_mintlify/api/og/v2?division=signalDefinitions\u0026amp;title=Add+a+signal+definition+version\u0026amp;description=Appends+an+immutable+draft+version+and+answers+it+with+the+definition%E2%80%99s+new+revision.+It+is+not+published.+Name+the+revision+you+were+shown%3A+a+stale+one+is+409+\u0026amp;theme=1a1b5b8bdbe71a79282f5f36\u0026amp;signature=1f4e1494550ba8b498b0606cf4ce0cf656a631de525d8093bcc6e6c8e9954972\">\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/signaldefinitions/add-a-signal-definition-version\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/signaldefinitions/add-a-signal-definition-version.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/signaldefinitions/add-a-signal-definition-version#webpage\",\"url\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version\",\"name\":\"Add a signal definition version\",\"description\":\"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 stale_version and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.\",\"dateModified\":\"2026-10-09T15:59:57.285Z\",\"isPartOf\":{\"@id\":\"https://docs.enrik.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version#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\":\"signalDefinitions\",\"item\":\"https://docs.enrik.ai/api-reference/signaldefinitions/list-signal-definitions\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Add a signal definition version\",\"item\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version#apireference\",\"headline\":\"Add a signal definition version\",\"name\":\"Add a signal definition version\",\"description\":\"Appends an immutable draft version and answers it with the definition’s new revision. It is not published. Name the revision you were shown: a stale one is 409 stale_version and writes nothing. The change commits only after this answer is checked; a retry with the same Idempotency-Key replays it.\",\"url\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version\",\"mainEntityOfPage\":{\"@id\":\"https://docs.enrik.ai/api-reference/signaldefinitions/add-a-signal-definition-version#webpage\"},\"dateModified\":\"2026-10-09T15:59:57.285Z\",\"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","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","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","description":"Every version of one signal definition, the highest version number first.","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","description":"One exact version of one signal definition: the snapshot a pin or a check refers to. A version of another definition is not found.","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":"Add a signal definition version - 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"]}