diff --git a/nomad/app/optimade/api.py b/nomad/app/optimade/api.py
index 5f84d82509e64362553cd1409379c15abe015216..567ec3d5ea2aa1a340341d9145384764e59d36b6 100644
--- a/nomad/app/optimade/api.py
+++ b/nomad/app/optimade/api.py
@@ -25,7 +25,7 @@ base_url = 'https://%s/%s/optimade' % (
     config.services.api_base_path.strip('/'))
 
 
-def url(endpoint: str = None, version='v0', prefix=None, **kwargs):
+def url(endpoint: str = None, version='v1', prefix=None, **kwargs):
     ''' Returns the full optimade api url (for a given endpoint) including query parameters. '''
     if endpoint is not None:
         url = '/' + endpoint
@@ -49,7 +49,7 @@ def url(endpoint: str = None, version='v0', prefix=None, **kwargs):
 api = Api(
     blueprint,
     version='1.0', title='NOMAD\'s OPTiMaDe API implementation',
-    description='NOMAD\'s OPTiMaDe API implementation, version 0.10.1.',
+    description='NOMAD\'s OPTiMaDe API implementation, version 1.0.0.',
     validate=True)
 ''' Provides the flask restplust api instance for the optimade api'''
 
diff --git a/nomad/app/optimade/common.py b/nomad/app/optimade/common.py
index c96a3e21284cbd1dd404e6f2437af44c406d61e3..aa791b878433e1761a2c74ed9f1d8bae9e4a0eea 100644
--- a/nomad/app/optimade/common.py
+++ b/nomad/app/optimade/common.py
@@ -22,7 +22,7 @@ from nomad import search
 from .api import api
 
 
-ns = api.namespace('v0', description='The version v0 API namespace with all OPTiMaDe endpoints.')
+ns = api.namespace('v1', description='The version v1 API namespace with all OPTiMaDe endpoints.')
 
 
 # TODO replace with decorator that filters response_fields
diff --git a/nomad/app/optimade/index.py b/nomad/app/optimade/index.py
index 77a50e3b2eb55f0c9e087933b33acd6446eb8061..6d0112b67f7139f9f497bd042d75b8720bb7e150 100644
--- a/nomad/app/optimade/index.py
+++ b/nomad/app/optimade/index.py
@@ -21,7 +21,7 @@ from .api import api, url
 from .common import base_request_args
 from .models import json_api_single_response_model, base_endpoint_parser, json_api_single_response_model, Meta, json_api_list_response_model
 
-ns = api.namespace('index/v0', description='This is the OPTiMaDe index for NOMAD\' implementations.')
+ns = api.namespace('index/v1', description='This is the OPTiMaDe index for NOMAD\' implementations.')
 
 
 @ns.route('/info')
@@ -38,10 +38,10 @@ class Info(Resource):
             'type': 'info',
             'id': '/',
             'attributes': {
-                'api_version': '0.10.1',
+                'api_version': '1.0.0',
                 'available_api_versions': [{
                     'url': url(prefix='index'),
-                    'version': '0.10.1'
+                    'version': '1.0.0'
                 }],
                 'formats': ['json'],
                 'entry_types_by_format': {
@@ -53,7 +53,7 @@ class Info(Resource):
             'relationships': {
                 'default': {
                     'data': {
-                        'id': 'v0',
+                        'id': 'v1',
                         'type': 'links'
                     }
                 }
@@ -79,7 +79,7 @@ class Links(Resource):
         result = [
             {
                 "type": "child",
-                "id": "v0",
+                "id": "v1",
                 "attributes": {
                     "name": config.meta.name,
                     "description": config.meta.description,
diff --git a/nomad/app/optimade/infolinks.py b/nomad/app/optimade/infolinks.py
index 85c40828bdf2814364b9c99f9d93cb108acd6e72..3df79a94a3cb742704b14f41ab2552fcbed39613 100644
--- a/nomad/app/optimade/infolinks.py
+++ b/nomad/app/optimade/infolinks.py
@@ -37,10 +37,10 @@ class Info(Resource):
             'type': 'info',
             'id': '/',
             'attributes': {
-                'api_version': '0.10.1',
+                'api_version': '1.0.0',
                 'available_api_versions': [{
                     'url': url(),
-                    'version': '0.10.1'
+                    'version': '1.0.0'
                 }],
                 'formats': ['json'],
                 'entry_types_by_format': {
diff --git a/nomad/app/optimade/models.py b/nomad/app/optimade/models.py
index 32ed1e6a37b2a1d2e2495c54e295aaf4e96c13d4..00235571d85b22e6165e5bca9e0abf107b9c4a1a 100644
--- a/nomad/app/optimade/models.py
+++ b/nomad/app/optimade/models.py
@@ -117,7 +117,7 @@ class Meta():
             self, query: str, returned: int, available: int = None, last_id: str = None):
 
         self.query = dict(representation=query)
-        self.api_version = '0.10.1'
+        self.api_version = '1.0.0'
         self.time_stamp = datetime.datetime.now()
         self.data_returned = returned
         self.more_data_available = available > returned if available is not None else False
diff --git a/tests/app/test_optimade.py b/tests/app/test_optimade.py
index 327ce3232828e7f1841d69955cfefe16c5613f2e..da18bb842c93103e2c63a3a95175e778f385b4e7 100644
--- a/tests/app/test_optimade.py
+++ b/tests/app/test_optimade.py
@@ -26,12 +26,12 @@ from tests.conftest import clear_elastic, clear_raw_files
 
 @pytest.fixture(scope='session')
 def api(session_client):
-    return BlueprintClient(session_client, '/optimade/v0')
+    return BlueprintClient(session_client, '/optimade/v1')
 
 
 @pytest.fixture(scope='session')
 def index_api(session_client):
-    return BlueprintClient(session_client, '/optimade/index/v0')
+    return BlueprintClient(session_client, '/optimade/index/v1')
 
 
 def test_index(index_api):
@@ -156,7 +156,7 @@ def test_optimade_parser(example_structures, query, results):
 
 
 def test_url():
-    assert url('endpoint', param='value').endswith('/optimade/v0/endpoint?param=value')
+    assert url('endpoint', param='value').endswith('/optimade/v1/endpoint?param=value')
 
 
 def test_list_endpoint(api, example_structures):