diff --git a/brian_polling_manager/api.py b/brian_polling_manager/api.py
index 9e7fbdade88ddf6e87127330aabace52bd55f8d2..424813f44665e73976f4681cf2b570d6d083c212 100644
--- a/brian_polling_manager/api.py
+++ b/brian_polling_manager/api.py
@@ -23,7 +23,7 @@ import pkg_resources
 from flask import Blueprint, current_app, request, Response, jsonify
 
 from brian_polling_manager import CONFIG_KEY
-from brian_polling_manager.main import refresh
+from brian_polling_manager import main
 
 routes = Blueprint("api-routes", __name__)
 logger = logging.getLogger(__name__)
@@ -159,5 +159,5 @@ def update():
 
     :return:
     """
-    response = refresh(config=current_app.config[CONFIG_KEY])
+    response = main.refresh(config=current_app.config[CONFIG_KEY])
     return jsonify(response)
diff --git a/test/conftest.py b/test/conftest.py
index 9244fd8cbceda2598cc8e7192a1cb1e9706e6d25..2553e8fcafecbeb13bf967ab4ae92e28ebe5f704 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -55,6 +55,14 @@ def config():
         }
 
 
+@pytest.fixture
+def config_filename(config):
+    with tempfile.NamedTemporaryFile(mode='w') as f:
+        f.write(json.dumps(config))
+        f.flush()
+        yield f.name
+
+
 @pytest.fixture
 def mocked_sensu():
 
diff --git a/test/test_api.py b/test/test_api.py
new file mode 100644
index 0000000000000000000000000000000000000000..c8df1ff2f1efebcd02baad0b4b6bd46d2274afd5
--- /dev/null
+++ b/test/test_api.py
@@ -0,0 +1,38 @@
+import json
+import os
+
+import jsonschema
+import pytest
+import responses
+
+import brian_polling_manager
+from brian_polling_manager.api import VERSION_SCHEMA
+from brian_polling_manager.main import REFRESH_RESULT_SCHEMA
+
+
+@pytest.fixture
+def client(config_filename, mocked_sensu, mocked_inventory):
+    os.environ['CONFIG_FILENAME'] = config_filename
+    with brian_polling_manager.create_app().test_client() as c:
+        yield c
+
+
+def test_version(client):
+    rv = client.get(
+        '/api/version',
+        headers={'Accept': ['application/json']})
+    assert rv.status_code == 200
+    assert rv.is_json
+    response_data = json.loads(rv.data.decode('utf-8'))
+    jsonschema.validate(response_data, VERSION_SCHEMA)
+
+@responses.activate
+def test_update(client):
+    rv = client.get(
+        '/api/update',
+        headers={'Accept': ['application/json']})
+    assert rv.status_code == 200
+    assert rv.is_json
+    response_data = json.loads(rv.data.decode('utf-8'))
+    jsonschema.validate(response_data, REFRESH_RESULT_SCHEMA)
+
diff --git a/test/test_e2e.py b/test/test_e2e.py
index 11b6d741cbc43f5249be9e1b0b870422ca7dbf6b..ae130cf69a2aafde621a1a858f0413f806e65c62 100644
--- a/test/test_e2e.py
+++ b/test/test_e2e.py
@@ -8,15 +8,11 @@ from brian_polling_manager import main
 
 
 @responses.activate
-def test_run_flashtest(config, mocked_sensu, mocked_inventory):
+def test_run_flashtest(config_filename, mocked_sensu, mocked_inventory):
 
-    with tempfile.NamedTemporaryFile(mode='w') as f:
-        f.write(json.dumps(config))
-        f.flush()
-
-        runner = CliRunner()
-        result = runner.invoke(
-            main.cli,
-            ['--config', f.name, '--force']
-        )
-        assert result.exit_code == 0
+    runner = CliRunner()
+    result = runner.invoke(
+        main.cli,
+        ['--config', config_filename, '--force']
+    )
+    assert result.exit_code == 0