diff --git a/t/api.t b/t/api.t
index 5570d0d..8e1dce2 100644
--- a/t/api.t
+++ b/t/api.t
@@ -5,19 +5,21 @@
 our %ENV;
 
 my $app = Test::Mojo->new('Kalamar')->app;
-is($app->korap->api, 'https://korap.ids-mannheim.de/api/v1.0/');
+# Get API version from app config (set in Kalamar.pm startup)
+my $api_version = $app->app->config('Kalamar')->{api_version};
+is($app->korap->api, "https://korap.ids-mannheim.de/api/v".$api_version. "/");
 
 
 $ENV{KALAMAR_API} = 'https://example.com/';
 $app = Test::Mojo->new('Kalamar')->app;
-is($app->korap->api, 'https://example.com/v1.0/');
+is($app->korap->api, "https://example.com/v".$api_version ."/");
 
 $app = Test::Mojo->new('Kalamar' => {
   Kalamar => {
     api_path => 'https://example.org/'
   }
 })->app;
-is($app->korap->api, 'https://example.org/v1.0/');
+is($app->korap->api, "https://example.org/v".$api_version."/");
 
 $ENV{KALAMAR_API} = undef;
 $app = Test::Mojo->new('Kalamar' => {
diff --git a/t/doc.t b/t/doc.t
index b07d3e6..f3a3a7d 100644
--- a/t/doc.t
+++ b/t/doc.t
@@ -10,6 +10,10 @@
   }
 });
 
+# Get API version from app config (set in Kalamar.pm startup)
+my $api_version = $t->app->config('Kalamar')->{api_version};
+
+
 # Bug 2021-06-11
 $t->get_ok('/doc/ql/wildcards?cat=1')
   ->status_is(404) # ! Should be 404!
@@ -125,15 +129,15 @@
 # Check API endpoint
 $t->get_ok('/doc/api' => { 'X-Forwarded-Host' => 'korap.ids-mannheim.de' })
   ->status_is(200)
-  ->text_is('#api-service-uri', 'https://korap.ids-mannheim.de/test/api/v1.0/');
+  ->text_is('#api-service-uri', 'https://korap.ids-mannheim.de/test/api/v' . $api_version . '/');
 
 # Set openapi path
-$app->config('Kalamar')->{openapi} = '/api/v1.0/openapi/';
+$app->config('Kalamar')->{openapi} = '/api/v' . $api_version . '/openapi/';
 
 # Check openapi endpoint
 $t->get_ok('/doc/api' => { 'X-Forwarded-Host' => 'korap.ids-mannheim.de' })
   ->status_is(200)
-  ->element_exists('#openapi > a[href="https://korap.ids-mannheim.de/api/v1.0/openapi/"]');
+  ->element_exists('#openapi > a[href="https://korap.ids-mannheim.de/api/v' . $api_version . '/openapi/"]');
 
 # Languages of dev pages
 $t->get_ok('/doc/development/kalamar')
diff --git a/t/fixtures.t b/t/fixtures.t
index 9816fe6..9dba8cd 100644
--- a/t/fixtures.t
+++ b/t/fixtures.t
@@ -3,29 +3,32 @@
 use Test::Mojo;
 use Mojo::File qw/path/;
 
+# Get API version from Kalamar config (respects env and config file)
+my $api_version = Test::Mojo->new('Kalamar')->app->config('Kalamar')->{api_version};
+
 # Get the fixture path
 my $mock_server = path(Mojo::File->new(__FILE__)->dirname, 'server')->child('mock.pl');
 
 my $t = Test::Mojo->new($mock_server);
 
-$t->get_ok('/v1.0')
+$t->get_ok("/v$api_version")
   ->status_is(200)
-  ->content_is('Fake server available: 1.0');
+  ->content_is("Fake server available: $api_version");
 
-$t->get_ok('/v1.0/search?ql=cosmas3')
+$t->get_ok("/v$api_version/search?ql=cosmas3")
   ->status_is(400)
   ->json_is('/errors/0/0',"307")
   ->json_is('/errors/0/1',"cosmas3 is not a supported query language!")
   ;
 
-my $err = $t->get_ok('/v1.0/search?q=server_fail')
+my $err = $t->get_ok("/v$api_version/search?q=server_fail")
   ->status_is(500)
   ->content_like(qr!Oooops!)
   ->tx->res->dom->at('#error')
   ;
 is(defined $err ? $err->text : '', '');
 
-$err = $t->get_ok('/v1.0/search?q=[orth=das&ql=poliqarp&offset=0&count=25')
+$err = $t->get_ok("/v$api_version/search?q=[orth=das&ql=poliqarp&offset=0&count=25")
   ->status_is(400)
   ->json_is('/errors/0/0',302)
   ->json_is('/errors/0/1','Parantheses/brackets unbalanced.')
@@ -36,7 +39,7 @@
 is(defined $err ? $err->text : '', '');
 
 
-$err = $t->get_ok('/v1.0/search?q=baum&ql=poliqarp&offset=0&count=25')
+$err = $t->get_ok("/v$api_version/search?q=baum&ql=poliqarp&offset=0&count=25")
   ->status_is(200)
   ->json_is('/meta/count', 25)
   ->json_is('/meta/serialQuery', "tokens:s:Baum")
@@ -45,7 +48,7 @@
   ;
 is(defined $err ? $err->text : '', '');
 
-$err = $t->get_ok('/v1.0/search?q=baum&ql=poliqarp&offset=0&count=25&fields=textSigle')
+$err = $t->get_ok("/v$api_version/search?q=baum&ql=poliqarp&offset=0&count=25&fields=textSigle")
   ->status_is(200)
   ->json_is('/meta/count', 25)
   ->json_is('/meta/serialQuery', "tokens:s:Baum")
@@ -56,7 +59,7 @@
 is(defined $err ? $err->text : '', '');
 
 
-$t->get_ok('/v1.0/corpus/WPD15/232/39681/p2133-2134?spans=false&foundry=*')
+$t->get_ok("/v$api_version/corpus/WPD15/232/39681/p2133-2134?spans=false&foundry=*")
   ->status_is(200)
   ->json_is('/textSigle', 'WPD15/232/39681')
   ;
diff --git a/t/plugin/auth-oauth.t b/t/plugin/auth-oauth.t
index f83bd2a..659fe5d 100644
--- a/t/plugin/auth-oauth.t
+++ b/t/plugin/auth-oauth.t
@@ -11,6 +11,11 @@
 my $mount_point = '/realapi/';
 $ENV{KALAMAR_API} = $mount_point;
 
+# Get the fixture path
+my $fixtures_path = path(Mojo::File->new(__FILE__)->dirname, '..', 'server');
+
+my $q = qr!(?:\"|&quot;)!;
+
 my $t = Test::Mojo::WithRoles->new('Kalamar' => {
   Kalamar => {
     plugins => ['Auth']
@@ -23,9 +28,9 @@
   }
 });
 
+my $api_version = $t->app->config('Kalamar')->{api_version};
+
 # Mount fake backend
-# Get the fixture path
-my $fixtures_path = path(Mojo::File->new(__FILE__)->dirname, '..', 'server');
 my $fake_backend = $t->app->plugin(
   Mount => {
     $mount_point =>
@@ -97,11 +102,9 @@
   }
 );
 
-my $q = qr!(?:\"|&quot;)!;
-
-$t->get_ok('/realapi/v1.0')
+$t->get_ok("/realapi/v$api_version")
   ->status_is(200)
-  ->content_is('Fake server available: 1.0');
+  ->content_is("Fake server available: $api_version");
 
 $t->get_ok('/?q=Baum')
   ->status_is(200)
diff --git a/t/server/mock.pl b/t/server/mock.pl
index fd64d15..1c22624 100644
--- a/t/server/mock.pl
+++ b/t/server/mock.pl
@@ -116,13 +116,13 @@
   $c->render(text => 'Fake server available: ' . $c->stash('apiv'));
 };
 
-get '/v1.0/redirect-target-a' => sub {
+get '/v#apiv/redirect-target-a' => [apiv => ['1.0','1.1']] => sub {
   shift->render(text => 'Redirect Target!');
 } => 'redirect-target';
 
 
 # Base page
-get '/v1.0/redirect' => sub {
+get '/v#apiv/redirect' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   $c->res->code(308);
   $c->res->headers->location($c->url_for('redirect-target')->to_abs);
@@ -131,7 +131,7 @@
 
 
 # Search fixtures
-get '/v1.0/search' => sub {
+get '/v#apiv/search' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->optional('q');
@@ -247,7 +247,7 @@
 };
 
 # Textinfo fixtures
-get '/v1.0/corpus/#corpusId/#docId/#textId' => sub {
+get '/v#apiv/corpus/#corpusId/#docId/#textId' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->optional('response-pipes');
@@ -273,7 +273,7 @@
 
 
 # Matchinfo fixtures
-get '/v1.0/corpus/#corpusId/#docId/#textId/#matchId' => sub {
+get '/v#apiv/corpus/#corpusId/#docId/#textId/#matchId' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->optional('response-pipes');
@@ -300,7 +300,7 @@
 
 
 # Statistics endpoint
-get '/v1.0/statistics' => sub {
+get '/v#apiv/statistics' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->optional('cq');
@@ -329,7 +329,7 @@
 ############
 
 # Request API token
-get '/v1.0/auth/logout' => sub {
+get '/v#apiv/auth/logout' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   if (my $auth = $c->req->headers->header('Authorization')) {
@@ -345,7 +345,7 @@
 
 
 # Request API token
-get '/v1.0/auth/apiToken' => sub {
+get '/v#apiv/auth/apiToken' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   # Get auth header
@@ -391,7 +391,7 @@
 
 
 # Request API token
-post '/v1.0/oauth2/token' => sub {
+post '/v#apiv/oauth2/token' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   my $grant_type = $c->param('grant_type') // 'undefined';
@@ -520,7 +520,7 @@
 };
 
 # Revoke API token
-post '/v1.0/oauth2/revoke' => sub {
+post '/v#apiv/oauth2/revoke' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   my $refresh_token = $c->param('token');
@@ -541,7 +541,7 @@
 };
 
 # Register a client
-post '/v1.0/oauth2/client/register' => sub {
+post '/v#apiv/oauth2/client/register' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $json = $c->req->json;
 
@@ -611,7 +611,7 @@
 };
 
 # Mock API list plugins
-post '/v1.0/plugins' => sub {
+post '/v#apiv/plugins' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->required('super_client_id');
@@ -630,7 +630,7 @@
 };
 
 # Mock API list installed plugins
-post '/v1.0/plugins/installed' => sub {
+post '/v#apiv/plugins/installed' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->required('super_client_id');
@@ -651,7 +651,7 @@
 
 
 # Mock API plugin installation
-post '/v1.0/plugins/install' => sub {
+post '/v#apiv/plugins/install' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->required('super_client_id');
@@ -692,7 +692,7 @@
 };
 
 # Mock API plugin uninstallation
-post '/v1.0/plugins/uninstall' => sub {
+post '/v#apiv/plugins/uninstall' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $v = $c->validation;
   $v->required('super_client_id');
@@ -722,7 +722,7 @@
   };
 
 # Register a client
-post '/v1.0/oauth2/client/list' => sub {
+post '/v#apiv/oauth2/client/list' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   my $v = $c->validation;
@@ -749,7 +749,7 @@
 };
 
 # Get client info
-post '/v1.0/oauth2/client/:client_id' => sub {
+post '/v#apiv/oauth2/client/:client_id' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   # Validate input
@@ -791,7 +791,7 @@
 
 
 # Get token list
-post '/v1.0/oauth2/token/list' => sub {
+post '/v#apiv/oauth2/token/list' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   return $c->render(json => [
     {
@@ -812,7 +812,7 @@
   ]);
 };
 
-del '/v1.0/oauth2/client/deregister/:client_id' => sub {
+del '/v#apiv/oauth2/client/deregister/:client_id' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $client_id = $c->stash('client_id');
 
@@ -846,7 +846,7 @@
   );
 };
 
-get '/v1.0/oauth2/authorize' => sub {
+get '/v#apiv/oauth2/authorize' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $type = $c->param('response_type');
   my $client_id = $c->param('client_id');
@@ -913,7 +913,7 @@
 );
 
 # Store query
-put '/v1.0/query/~:user/:query_name' => sub {
+put '/v#apiv/query/~:user/:query_name' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $user = $c->stash('user');
   my $qname = $c->stash('query_name');
@@ -959,7 +959,7 @@
 };
 
 # Get query
-get '/v1.0/query/~:user/:query_name' => sub {
+get '/v#apiv/query/~:user/:query_name' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   my $user = $c->stash('user');
@@ -986,7 +986,7 @@
 
 
 # Get all queries
-get '/v1.0/query/~:user' => sub {
+get '/v#apiv/query/~:user' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $user = $c->stash('user');
   my $qs = $chi->get('~queries') // [];
@@ -998,8 +998,8 @@
 };
 
 
-# Store query
-del '/v1.0/query/~:user/:query_name' => sub {
+# Delete query
+del '/v#apiv/query/~:user/:query_name' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
   my $user = $c->stash('user');
   my $qname = $c->stash('query_name');
@@ -1021,7 +1021,7 @@
   );
 };
 
-post '/v1.0/oauth2/revoke/super' => sub {
+post '/v#apiv/oauth2/revoke/super' => [apiv => ['1.0','1.1']] => sub {
   my $c = shift;
 
   my $s_client_id = $c->param('super_client_id');
