{"record":{"id":"62f21a779863b93a","repo":"quarkusio/quarkus","slug":"unable-to-determine-the-proper-baseurl-baseuri-co-62f21a","errorCode":null,"errorMessage":"Unable to determine the proper baseUrl/baseUri. Consider registering using @RegisterRestClient(baseUri=\"someuri\"), @RegisterRestClient(configKey=\"orkey\"), or by adding '%s' or '%s' to your Quarkus configuration","messagePattern":"Unable to determine the proper baseUrl/baseUri\\. Consider registering using @RegisterRestClient\\(baseUri=\"someuri\"\\), @RegisterRestClient\\(configKey=\"orkey\"\\), or by adding '(.+?)' or '(.+?)' to your Quarkus configuration","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/resteasy-reactive/rest-client/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/RestClientCDIDelegateBuilder.java","lineNumber":418,"sourceCode":"\n    private void configureTimeouts(QuarkusRestClientBuilder builder) {\n        Long connectTimeout = restClientConfig.connectTimeout().orElse(this.configRoot.connectTimeout());\n        if (connectTimeout != null) {\n            builder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS);\n        }\n\n        Long readTimeout = restClientConfig.readTimeout().orElse(this.configRoot.readTimeout());\n        if (readTimeout != null) {\n            builder.readTimeout(readTimeout, TimeUnit.MILLISECONDS);\n        }\n    }\n\n    private void configureBaseUrl(QuarkusRestClientBuilder builder) {\n        Optional<String> propertyOptional = oneOf(restClientConfig.uriReload(), restClientConfig.urlReload());\n        if (((baseUriFromAnnotation == null) || baseUriFromAnnotation.isEmpty())\n                && propertyOptional.isEmpty()) {\n            String propertyPrefix = configKey != null ? configKey : \"\\\"\" + jaxrsInterface.getName() + \"\\\"\";\n            throw new IllegalArgumentException(\n                    String.format(\n                            \"Unable to determine the proper baseUrl/baseUri. \" +\n                                    \"Consider registering using @RegisterRestClient(baseUri=\\\"someuri\\\"), @RegisterRestClient(configKey=\\\"orkey\\\"), \"\n                                    +\n                                    \"or by adding '%s' or '%s' to your Quarkus configuration\",\n                            String.format(REST_URL_FORMAT, propertyPrefix), String.format(REST_URI_FORMAT, propertyPrefix)));\n        }\n        String baseUrl = propertyOptional.orElse(baseUriFromAnnotation);\n\n        try {\n            builder.baseUri(new URI(baseUrl));\n        } catch (URISyntaxException e) {\n            throw new IllegalArgumentException(\"The value of URL was invalid \" + baseUrl, e);\n        }\n    }\n\n    private void configureDomainSocket(QuarkusRestClientBuilder builder) {\n        restClientConfig.domainSocket().ifPresent(builder::domainSocket);","sourceCodeStart":400,"sourceCodeEnd":436,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/resteasy-reactive/rest-client/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/RestClientCDIDelegateBuilder.java#L400-L436","documentation":"Thrown by RestClientCDIDelegateBuilder.configureBaseUrl when neither an @RegisterRestClient(baseUri=...) annotation nor a quarkus.rest-client.<key>.url/uri (or config-key scoped, or MP mp.rest-client url/uri) property provides a base URL for the client. The MicroProfile Rest Client spec requires a base URI to build requests, so Quarkus aborts client creation with guidance on all supported ways to supply one.","triggerScenarios":"CDI injection of a @RegisterRestClient interface whose annotation has no baseUri/baseUrl, and no quarkus.rest-client.<name>.url / .uri property exists under the interface FQN or the registered configKey; configureBuilder -> configureBaseUrl finds propertyOptional empty and baseUriFromAnnotation empty/null.","commonSituations":"Forgot to add the URL to application.properties after creating the interface; property key uses the wrong prefix (config key mismatch — property defined under a key that doesn't match @RegisterRestClient(configKey=...) or the interface FQN); dev services/profile-specific config overriding the property in the active profile; typo like 'quarkus.rest-client.my-service.url' vs actual key 'myservice'.","solutions":["Add the URL to configuration using the exact key shown in the error message: quarkus.rest-client.<propertyPrefix>.url=http://host:port (or .uri)","Or set it in code/annotation: @RegisterRestClient(baseUri = \"http://localhost:8080\") on the interface","If using configKey, ensure the property prefix matches the configKey exactly, not the interface FQN","Check the active profile (e.g. %prod, %dev) isn't overriding/clearing the property; the error prints the two exact expected key formats — copy them"],"exampleFix":"// before\n@RegisterRestClient\npublic interface MyServiceClient { ... }\n// after\n@RegisterRestClient(baseUri = \"http://localhost:8080\")\npublic interface MyServiceClient { ... }\n// or in application.properties:\n// quarkus.rest-client.MyServiceClient.url=http://localhost:8080","handlingStrategy":"validation","validationCode":"String key = \"quarkus.rest-client.\" + (configKey != null ? configKey : MyClient.class.getName());\nvar cfg = org.eclipse.microprofile.config.ConfigProvider.getConfig();\nif (cfg.getOptionalValue(key + \".url\", String.class).isEmpty()\n    && cfg.getOptionalValue(key + \".uri\", String.class).isEmpty()) {\n    throw new IllegalStateException(\"No base URL configured for rest client; set \" + key + \".url\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    MyClient client = Arc.container().instance(MyClient.class).get();\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"Unable to determine the proper baseUrl/baseUri\")) {\n        throw new ConfigurationException(\"Set the base URL; expected keys are shown in: \" + e.getMessage(), e);\n    }\n    throw e;\n}","preventionTips":["Always set baseUri on @RegisterRestClient or a quarkus.rest-client.<key>.url property when creating a client interface","Copy the exact property key formats from the error message","Verify config per profile (%dev/%prod) in dev mode config editor","Keep configKey on the annotation consistent with the property prefix"],"tags":["rest-client","configuration","missing-config","microprofile","url"],"backgroundTag":"missing-base-url","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}