diff --git a/api/backlog/index.php b/api/backlog/index.php
index cc397ee28a0c967cc9c08b13a087cd8779372205..ed3e8a28e1c7be0e8eb1e04d9904c74205cb3f2d 100644
--- a/api/backlog/index.php
+++ b/api/backlog/index.php
@@ -7,13 +7,27 @@ require_once '../../database/Database.php';
 require_once '../../database/helper/RendererHelper.php';
 require_once '../../database/helper/SessionHelper.php';
 
+$session = SessionHelper::getInstance();
 $config = Config::createFromGlobals();
 $renderer = new RendererHelper($config);
 $backend = Database::createFromConfig($config);
 
-try {
-    $backend->authenticateFromHeader($_SERVER['HTTP_AUTHORIZATION'] ?: "");
-    $renderer->renderJson($backend->context($_REQUEST['anchor'] ?: 0, $_REQUEST['buffer'] ?: 0, $_REQUEST['before'], $_REQUEST['after']));
-} catch (\Exception $e) {
-    $renderer->renderJson(["error" => $e->getMessage()]);
-}
\ No newline at end of file
+function param(string $key, $default = null)
+{
+    return array_key_exists($key, $_REQUEST) ? ($_REQUEST[$key] !== "" ? $_REQUEST[$key] : $default) : $default;
+}
+
+if (!$backend->authenticate(
+    $session->username ?: $_SERVER['PHP_AUTH_USER'] ?: '',
+    $session->password ?: $_SERVER['PHP_AUTH_PW'] ?: ''
+)) {
+    $session->destroy();
+    $renderer->renderJsonError(false);
+} else {
+    $renderer->renderJson($backend->context(
+        param('anchor', 0),
+        param('buffer', 0),
+        param('before', 4),
+        param('after', 4)
+    ));
+}
diff --git a/api/search/index.php b/api/search/index.php
index 1c58235f9b1b1ef17797afbcb9b274a70927a555..949088633825093c93e0718cd3e3113af44a13cb 100644
--- a/api/search/index.php
+++ b/api/search/index.php
@@ -7,13 +7,30 @@ require_once '../../database/Database.php';
 require_once '../../database/helper/RendererHelper.php';
 require_once '../../database/helper/SessionHelper.php';
 
+$session = SessionHelper::getInstance();
 $config = Config::createFromGlobals();
 $renderer = new RendererHelper($config);
 $backend = Database::createFromConfig($config);
 
-try {
-    $backend->authenticateFromHeader($_SERVER['HTTP_AUTHORIZATION'] ?: "");
-    $renderer->renderJson($backend->find($_REQUEST['query'] ?: "", $_REQUEST['since'] ?: null, $_REQUEST['before'] ?: null, $_REQUEST['buffer'] ?: null, $_REQUEST['network'] ?: null, $_REQUEST['sender'] ?: null, $_REQUEST['limit'] ?: null));
-} catch (\Exception $e) {
-    $renderer->renderJson(["error" => $e->getMessage()]);
-}
\ No newline at end of file
+function param(string $key, $default = null)
+{
+    return array_key_exists($key, $_REQUEST) ? ($_REQUEST[$key] !== "" ? $_REQUEST[$key] : $default) : $default;
+}
+
+if (!$backend->authenticate(
+    $session->username ?: $_SERVER['PHP_AUTH_USER'] ?: '',
+    $session->password ?: $_SERVER['PHP_AUTH_PW'] ?: ''
+)) {
+    $session->destroy();
+    $renderer->renderJsonError(false);
+} else {
+    $renderer->renderJson($backend->find(
+        param('query', ""),
+        param('since'),
+        param('before'),
+        param('buffer'),
+        param('network'),
+        param('sender'),
+        param('limit', 4)
+    ));
+}
diff --git a/api/searchbuffer/index.php b/api/searchbuffer/index.php
index 9d2f626dbf1763c739500f6aa5badc823f8ddaa9..7b9ade93dab3a45f3d97e4ad72f51fd0babbc2ef 100644
--- a/api/searchbuffer/index.php
+++ b/api/searchbuffer/index.php
@@ -7,13 +7,30 @@ require_once '../../database/Database.php';
 require_once '../../database/helper/RendererHelper.php';
 require_once '../../database/helper/SessionHelper.php';
 
+$session = SessionHelper::getInstance();
 $config = Config::createFromGlobals();
 $renderer = new RendererHelper($config);
 $backend = Database::createFromConfig($config);
 
-try {
-    $backend->authenticateFromHeader($_SERVER['HTTP_AUTHORIZATION'] ?: "");
-    $renderer->renderJson($backend->findInBuffer($_REQUEST['query'] ?: "", $_REQUEST['since'] ?: null, $_REQUEST['before'] ?: null, $_REQUEST['buffer'] ?: 0, $_REQUEST['offset'] ?: 0, $_REQUEST['limit'] ?: 20));
-} catch (\Exception $e) {
-    $renderer->renderJson(["error" => $e->getMessage()]);
-}
\ No newline at end of file
+function param(string $key, $default = null)
+{
+    return array_key_exists($key, $_REQUEST) ? ($_REQUEST[$key] !== "" ? $_REQUEST[$key] : $default) : $default;
+}
+
+if (!$backend->authenticate(
+    $session->username ?: $_SERVER['PHP_AUTH_USER'] ?: '',
+    $session->password ?: $_SERVER['PHP_AUTH_PW'] ?: ''
+)) {
+    $session->destroy();
+    $renderer->renderJsonError(false);
+} else {
+    $renderer->renderJson($backend->findInBuffer(
+        param('query', ""),
+        param('since'),
+        param('before'),
+        param('sender'),
+        param('buffer', 0),
+        param('offset', 0),
+        param('limit', 20)
+    ));
+}
diff --git a/res/js/component/app.js b/res/js/component/app.js
index 72d047a517381bde9f651c5bd7c103ac25389ea2..74c3e956dbae34d7587eb5b27f38de4fada1196d 100644
--- a/res/js/component/app.js
+++ b/res/js/component/app.js
@@ -42,7 +42,7 @@ class App {
             return;
         this.loadingQuery++;
         const queryId = this.loadingQuery;
-        load('web/search/', statehandler.parse()).then(result => {
+        load('api/search/', statehandler.parse()).then(result => {
             if (this.loadingQuery !== queryId)
                 return;
             this.navigation.loading.hide();
@@ -95,7 +95,7 @@ class App {
         buffer.setLoading(true);
         const offset = buffer.count();
         console.log(offset);
-        load('web/searchbuffer/', statehandler.parse({
+        load('api/searchbuffer/', statehandler.parse({
             buffer: buffer.id,
             offset: offset
         })).then(result => {
@@ -121,7 +121,7 @@ class App {
         if (context.loading)
             return;
         context.setLoading(true);
-        load('web/backlog/', statehandler.parse({
+        load('api/backlog/', statehandler.parse({
             buffer: buffer.id,
             anchor: context.anchorAfter,
             after: 10,
diff --git a/res/js/component/app.jsx b/res/js/component/app.jsx
index 589d0496b4ab62a7baa7e89d68d20f437178156a..36863eaee956936b3c5656789d4f52a6b0c775e5 100644
--- a/res/js/component/app.jsx
+++ b/res/js/component/app.jsx
@@ -46,7 +46,7 @@ class App {
 
         this.loadingQuery++;
         const queryId = this.loadingQuery;
-        load("web/search/", statehandler.parse()).then((result) => {
+        load("api/search/", statehandler.parse()).then((result) => {
             if (this.loadingQuery !== queryId)
                 return;
 
@@ -107,7 +107,7 @@ class App {
         buffer.setLoading(true);
         const offset = buffer.count();
         console.log(offset);
-        load("web/searchbuffer/", statehandler.parse({buffer: buffer.id, offset: offset})).then((result) => {
+        load("api/searchbuffer/", statehandler.parse({buffer: buffer.id, offset: offset})).then((result) => {
             buffer.load(result);
             buffer.setLoading(false);
         });
@@ -134,7 +134,7 @@ class App {
             return;
 
         context.setLoading(true);
-        load("web/backlog/", statehandler.parse({
+        load("api/backlog/", statehandler.parse({
             buffer: buffer.id,
             anchor: context.anchorAfter,
             after: 10,
@@ -167,4 +167,4 @@ class App {
 }
 
 const app = new App();
-document.body.insertBefore(app.elem, document.body.firstChild);
\ No newline at end of file
+document.body.insertBefore(app.elem, document.body.firstChild);
diff --git a/web/backlog/index.php b/web/backlog/index.php
deleted file mode 100644
index eba903b2cdaf4aaf3cea4f43c6f1239ccf13a345..0000000000000000000000000000000000000000
--- a/web/backlog/index.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace QuasselRestSearch;
-
-require_once '../../qrs_config.php';
-require_once '../../database/Database.php';
-require_once '../../database/helper/RendererHelper.php';
-require_once '../../database/helper/SessionHelper.php';
-
-$session = SessionHelper::getInstance();
-$config = Config::createFromGlobals();
-$renderer = new RendererHelper($config);
-$backend = Database::createFromConfig($config);
-
-if (!$backend->authenticate($session->username ?: '', $session->password ?: '')) {
-    $session->destroy();
-    $renderer->renderJsonError(false);
-} else {
-    syslog(LOG_INFO, json_encode($_GET));
-    $renderer->renderJson($backend->context($_REQUEST['anchor'] ?: 0, $_REQUEST['buffer'] ?: 0, $_REQUEST['before'], $_REQUEST['after']));
-}
\ No newline at end of file
diff --git a/web/search/index.php b/web/search/index.php
deleted file mode 100644
index be9210471e99ab63e2b601bb47bd79557bfd5cee..0000000000000000000000000000000000000000
--- a/web/search/index.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace QuasselRestSearch;
-
-require_once '../../qrs_config.php';
-require_once '../../database/Database.php';
-require_once '../../database/helper/RendererHelper.php';
-require_once '../../database/helper/SessionHelper.php';
-
-$session = SessionHelper::getInstance();
-$config = Config::createFromGlobals();
-$renderer = new RendererHelper($config);
-$backend = Database::createFromConfig($config);
-
-function param(string $key, $default = null)
-{
-    return array_key_exists($key, $_REQUEST) ? ($_REQUEST[$key] !== "" ? $_REQUEST[$key] : $default) : $default;
-}
-
-if (!$backend->authenticate($session->username ?: '', $session->password ?: '')) {
-    $session->destroy();
-    $renderer->renderJsonError(false);
-} else {
-    $renderer->renderJson($backend->find(
-        param('query', ""),
-        param('since'),
-        param('before'),
-        param('buffer'),
-        param('network'),
-        param('sender'),
-        param('limit', 4)
-    ));
-}
\ No newline at end of file
diff --git a/web/searchbuffer/index.php b/web/searchbuffer/index.php
deleted file mode 100644
index 539433590406c70a4b58e87931568b7127e386a9..0000000000000000000000000000000000000000
--- a/web/searchbuffer/index.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace QuasselRestSearch;
-
-require_once '../../qrs_config.php';
-require_once '../../database/Database.php';
-require_once '../../database/helper/RendererHelper.php';
-require_once '../../database/helper/SessionHelper.php';
-
-$session = SessionHelper::getInstance();
-$config = Config::createFromGlobals();
-$renderer = new RendererHelper($config);
-$backend = Database::createFromConfig($config);
-
-function param(string $key, $default = null)
-{
-    return array_key_exists($key, $_REQUEST) ? ($_REQUEST[$key] !== "" ? $_REQUEST[$key] : $default) : $default;
-}
-
-if (!$backend->authenticate($session->username ?: '', $session->password ?: '')) {
-    $session->destroy();
-    $renderer->renderJsonError(false);
-} else {
-    $renderer->renderJson($backend->findInBuffer(
-        param('query', ""),
-        param('since'),
-        param('before'),
-        param('sender'),
-        param('buffer', 0),
-        param('offset', 0),
-        param('limit', 20)
-    ));
-}
\ No newline at end of file