diff --git a/backend/metagenedb/api/catalog/urls.py b/backend/metagenedb/api/catalog/urls.py
index bf224cdd3d86f37ab8535005c0973303e89287a3..da5e3c9d53c9173f1c3cbc05769a804ed26ebabe 100644
--- a/backend/metagenedb/api/catalog/urls.py
+++ b/backend/metagenedb/api/catalog/urls.py
@@ -1,11 +1,13 @@
 from django.conf.urls import url, include
 from rest_framework.routers import DefaultRouter
 
-from metagenedb.api.catalog.views import GeneViewSet
+from metagenedb.api.catalog.views import FunctionViewSet, GeneViewSet, TaxonomyViewSet
 
 
 api_router = DefaultRouter()
+api_router.register(r'functions', FunctionViewSet, base_name='functions')
 api_router.register(r'genes', GeneViewSet, base_name='genes')
+api_router.register(r'taxonomy', TaxonomyViewSet, base_name='taxonomy')
 
 
 urlpatterns = [
diff --git a/backend/metagenedb/api/catalog/views/__init__.py b/backend/metagenedb/api/catalog/views/__init__.py
index 627996c6dd3dcd1b6fe0ef009fb256aa41b8d6cb..bb3631dd6bf906165e58e8091ab28ab29ef6a661 100644
--- a/backend/metagenedb/api/catalog/views/__init__.py
+++ b/backend/metagenedb/api/catalog/views/__init__.py
@@ -1 +1,3 @@
+from .function import FunctionViewSet  # noqa
 from .gene import GeneViewSet  # noqa
+from .taxonomy import TaxonomyViewSet  # noqa
diff --git a/backend/metagenedb/api/catalog/views/function.py b/backend/metagenedb/api/catalog/views/function.py
new file mode 100644
index 0000000000000000000000000000000000000000..f69e92c97725ab9a70c7c4c1675bd22df5ce5313
--- /dev/null
+++ b/backend/metagenedb/api/catalog/views/function.py
@@ -0,0 +1,10 @@
+from rest_framework.viewsets import ModelViewSet
+
+from metagenedb.apps.catalog.models import Function
+from metagenedb.apps.catalog.serializers import FunctionSerializer
+
+
+class FunctionViewSet(ModelViewSet):
+    queryset = Function.objects.all()
+    serializer_class = FunctionSerializer
+    lookup_field = 'function_id'
diff --git a/backend/metagenedb/api/catalog/views/taxonomy.py b/backend/metagenedb/api/catalog/views/taxonomy.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c83f5da4eb215a134d6cbae25fd027571dccc95
--- /dev/null
+++ b/backend/metagenedb/api/catalog/views/taxonomy.py
@@ -0,0 +1,10 @@
+from rest_framework.viewsets import ModelViewSet
+
+from metagenedb.apps.catalog.models import Taxonomy
+from metagenedb.apps.catalog.serializers import TaxonomySerializer
+
+
+class TaxonomyViewSet(ModelViewSet):
+    queryset = Taxonomy.objects.all()
+    serializer_class = TaxonomySerializer
+    lookup_field = 'tax_id'