{"record":{"id":"6c30cd6c3e152864","repo":"HKUDS/nanobot","slug":"providers-name-api-type-is-only-supported-for-pr","errorCode":null,"errorMessage":"providers.<name>.api_type is only supported for providers.openai","messagePattern":"providers\\.<name>\\.api_type is only supported for providers\\.openai","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/config/schema.py","lineNumber":327,"sourceCode":"\n            for key, value in self.model_extra.items():\n                if spec := find_by_name(key):\n                    raise ValueError(\n                        f\"providers.{key} conflicts with built-in provider {spec.name!r}; \"\n                        \"use the built-in provider key or choose a different custom provider name\"\n                    )\n                if isinstance(value, dict):\n                    self.model_extra[key] = ProviderConfig.model_validate(value)\n        return self\n\n    @model_validator(mode=\"after\")\n    def _validate_api_type_scope(self) -> \"ProvidersConfig\":\n        for name in self.__class__.model_fields:\n            if name == \"openai\":\n                continue\n            provider = getattr(self, name, None)\n            if isinstance(provider, ProviderConfig) and provider.api_type != \"auto\":\n                raise ValueError(\"providers.<name>.api_type is only supported for providers.openai\")\n        for provider in (self.model_extra or {}).values():\n            if isinstance(provider, ProviderConfig) and provider.api_type != \"auto\":\n                raise ValueError(\"providers.<name>.api_type is only supported for providers.openai\")\n        return self\n\n\nclass HeartbeatConfig(Base):\n    \"\"\"Heartbeat service configuration (now backed by cron).\"\"\"\n\n    enabled: bool = True\n    interval_s: int = 30 * 60  # 30 minutes\n    keep_recent_messages: int = 8\n\n\nclass ApiConfig(Base):\n    \"\"\"OpenAI-compatible API server configuration.\"\"\"\n\n    host: str = \"127.0.0.1\"  # Safer default: local-only bind.","sourceCodeStart":309,"sourceCodeEnd":345,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/config/schema.py#L309-L345","documentation":"Error \"providers.<name>.api_type is only supported for providers.openai\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/config/schema.py:327 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}