{"record":{"id":"b9c52f0f90f59f50","repo":"bytedance/deer-flow","slug":"openviking-user-api-key-is-missing-set-self-api","errorCode":null,"errorMessage":"OpenViking USER API key is missing; set {self.api_key_env}","messagePattern":"OpenViking USER API key is missing; set (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py","lineNumber":119,"sourceCode":"                *(f\"retrieval.{key}\" for key in retrieval),\n                *(f\"failure_policy.{key}\" for key in failure_policy),\n            ]\n        )\n        if unknown:\n            raise ValueError(\"Unknown OpenViking backend_config fields: \" + \", \".join(unknown))\n        result._validate()\n        return result\n\n    def _validate(self) -> None:\n        parsed = urlparse(self.base_url)\n        if parsed.scheme not in {\"http\", \"https\"} or not parsed.netloc:\n            raise ValueError(\"OpenViking base_url must be an absolute http(s) URL\")\n        if parsed.scheme == \"http\" and not self.allow_insecure_http and parsed.hostname not in {\"127.0.0.1\", \"localhost\", \"openviking\"}:\n            raise ValueError(\"OpenViking plain HTTP is allowed only for localhost/openviking; set allow_insecure_http=true only for a trusted internal network\")\n        if not self.owner_user_id:\n            raise ValueError(\"OpenViking owner_user_id must not be empty\")\n        if not self.api_key:\n            raise ValueError(f\"OpenViking USER API key is missing; set {self.api_key_env}\")\n        if not is_safe_peer_id(self.default_peer_id):\n            raise ValueError(\"OpenViking default_peer_id must start with a lowercase letter or digit and contain at most 64 lowercase letters, digits, '_' or '-'\")\n        if self.default_peer_id.startswith(GENERATED_PEER_PREFIX):\n            raise ValueError(f\"OpenViking default_peer_id must not start with the reserved prefix {GENERATED_PEER_PREFIX!r}\")\n        if not isfinite(self.timeout_seconds) or self.timeout_seconds <= 0:\n            raise ValueError(\"OpenViking timeout_seconds must be a finite value > 0\")\n        if not 1 <= self.search_top_k <= 100:\n            raise ValueError(\"OpenViking retrieval.top_k must be between 1 and 100\")\n        if self.score_threshold is not None and (not isfinite(self.score_threshold) or not 0 <= self.score_threshold <= 1):\n            raise ValueError(\"OpenViking retrieval.score_threshold must be a finite value between 0 and 1\")\n        if not 256 <= self.max_injection_chars <= 100_000:\n            raise ValueError(\"OpenViking retrieval.max_injection_chars must be between 256 and 100000\")\n        if self.content_mode not in {\"auto\", \"abstract\", \"overview\", \"read\"}:\n            raise ValueError(\"OpenViking retrieval.content_mode must be auto, abstract, overview, or read\")\n        if not self.injection_query:\n            raise ValueError(\"OpenViking retrieval.injection_query must not be empty\")\n        if self.startup_policy not in {\"fail_fast\", \"warn\"}:\n            raise ValueError(\"OpenViking startup_policy must be 'fail_fast' or 'warn'\")","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/bytedance/deer-flow/blob/1dd6ba1acb03700589994b0366c5d1c7d05e2eff/backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py#L101-L137","documentation":"Error \"OpenViking USER API key is missing; set {self.api_key_env}\" thrown in bytedance/deer-flow.","triggerScenarios":"Thrown at backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py:119 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Export the named environment variable with a valid OpenViking USER API key.","Verify api_key_env points at the correct variable name."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1dd6ba1acb03700589994b0366c5d1c7d05e2eff","analyzedAt":"2026-08-14T21:20:34.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}