By default, tapir follows OpenAPI’s approach, where an endpoint is uniquely defined by its path shape (incl. wildcards) + method. So there can be only one GET /x endpoint.
However, if you are not generating documentation for your endpoints, you might define multiple endpoints with the same path still. You will need to change the decode failure handler in the server interpreter’s options.
The task of the handler is to either provide a response (such as 400 Bad Request), when an endpoint fails to decode, or to return a “no match”, meaning that the next endpoint should be attempted. In the default failure handler, decode failures on headers cause a bad request response to be sent.
If you want a decode failure on an input to cause trying the next endpoint instead, use the onDecodeFailureNextEndpoint method (there’s an example in the docs)