diff --git a/server/src/routers/nameserver-router.ts b/server/src/routers/nameserver-router.ts
new file mode 100644
index 0000000..6e49b52
--- /dev/null
+++ b/server/src/routers/nameserver-router.ts
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.  If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+import { Router } from 'express';
+import asyncHandler from 'express-async-handler';
+import { HttpStatusCode } from 'jami-web-common';
+import { Container } from 'typedi';
+
+import { Jamid } from '../jamid/jamid.js';
+import { authenticateOptionalToken } from '../middleware/auth.js';
+
+const jamid = Container.get(Jamid);
+
+export const nameserverRouter = Router();
+
+nameserverRouter.use(authenticateOptionalToken);
+
+nameserverRouter.get(
+  '/username/:username',
+  asyncHandler(async (req, res) => {
+    const result = await jamid.lookupUsername(req.params.username, res.locals.accountId);
+    switch (result.state) {
+      case 0:
+        res.json(result);
+        break;
+      case 1:
+        res.sendStatus(HttpStatusCode.BadRequest);
+        break;
+      default:
+        res.sendStatus(HttpStatusCode.NotFound);
+        break;
+    }
+  })
+);
+
+nameserverRouter.get(
+  '/address/:address',
+  asyncHandler(async (req, res) => {
+    const result = await jamid.lookupAddress(req.params.address, res.locals.accountId);
+    switch (result.state) {
+      case 0:
+        res.json(result);
+        break;
+      case 1:
+        res.sendStatus(HttpStatusCode.BadRequest);
+        break;
+      default:
+        res.sendStatus(HttpStatusCode.NotFound);
+        break;
+    }
+  })
+);
