diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index 0914943..34c7408 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -196,7 +196,7 @@
 
   # API is not yet set - define the default Kustvakt api endpoint
   $conf->{api_path} //= $ENV{KALAMAR_API} || 'https://korap.ids-mannheim.de/api/';
-  $conf->{api_version} //= $API_VERSION;
+  $conf->{api_version} //= $ENV{KALAMAR_API_VERSION} || $API_VERSION;
 
   # Add development path
   if ($self->mode eq 'development') {
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');
