diff --git a/AKModel/serializers.py b/AKModel/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..7993b6223e44cd219eb5317705a69a5b32e9f325
--- /dev/null
+++ b/AKModel/serializers.py
@@ -0,0 +1,39 @@
+from rest_framework import serializers
+
+from AKModel.models import AK, Room, AKSlot, AKTrack, AKCategory, AKOwner
+
+
+class AKOwnerSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = AKOwner
+        fields = '__all__'
+
+
+class AKCategorySerializer(serializers.ModelSerializer):
+    class Meta:
+        model = AKCategory
+        fields = '__all__'
+
+
+class AKTrackSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = AKTrack
+        fields = '__all__'
+
+
+class AKSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = AK
+        fields = '__all__'
+
+
+class RoomSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Room
+        fields = '__all__'
+
+
+class AKSlotSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = AKSlot
+        fields = '__all__'
diff --git a/AKModel/urls.py b/AKModel/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ed6404cbcef947a48f92ea6828989bcf7d3bc03
--- /dev/null
+++ b/AKModel/urls.py
@@ -0,0 +1,23 @@
+from django.urls import include, path
+from rest_framework.routers import DefaultRouter
+
+from AKModel import views
+
+api_router = DefaultRouter()
+api_router.register('akowner', views.AKOwnerViewSet, basename='AKOwner')
+api_router.register('akcategory', views.AKCategoryViewSet, basename='AKCategory')
+api_router.register('aktrack', views.AKTrackViewSet, basename='AKTrack')
+api_router.register('ak', views.AKViewSet, basename='AK')
+api_router.register('room', views.RoomViewSet, basename='Room')
+api_router.register('akslot', views.AKSlotViewSet, basename='AKSlot')
+
+app_name = 'model'
+
+urlpatterns = [
+    path(
+        '<slug:event_slug>/',
+        include([
+            path('api/', include(api_router.urls), name='api'),
+        ])
+    ),
+]
diff --git a/AKModel/views.py b/AKModel/views.py
index 1ef246355f8fa160d3b93577d4b5bfd03d5fbd25..88656ef7c9a7f6b32a75a777856344596f78575f 100644
--- a/AKModel/views.py
+++ b/AKModel/views.py
@@ -1,6 +1,9 @@
 from django.shortcuts import get_object_or_404
+from rest_framework import viewsets, permissions, mixins
 
-from AKModel.models import Event
+from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner
+from AKModel.serializers import AKSerializer, AKSlotSerializer, RoomSerializer, AKTrackSerializer, AKCategorySerializer, \
+    AKOwnerSerializer
 
 
 class EventSlugMixin:
@@ -21,6 +24,14 @@ class EventSlugMixin:
         self._load_event()
         return super().post(request, *args, **kwargs)
 
+    def list(self, request, *args, **kwargs):
+        self._load_event()
+        return super().list(request, *args, **kwargs)
+
+    def create(self, request, *args, **kwargs):
+        self._load_event()
+        return super().create(request, *args, **kwargs)
+
     def get_context_data(self, *, object_list=None, **kwargs):
         context = super().get_context_data(object_list=object_list, **kwargs)
         # Add event to context (to make it accessible in templates)
@@ -36,3 +47,51 @@ class FilterByEventSlugMixin(EventSlugMixin):
     def get_queryset(self):
         # Filter current queryset based on url event slug or return 404 if event slug is invalid
         return super().get_queryset().filter(event=self.event)
+
+
+class AKOwnerViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
+    permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,)
+    serializer_class = AKOwnerSerializer
+
+    def get_queryset(self):
+        return AKOwner.objects.filter(event=self.event)
+
+
+class AKCategoryViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
+    permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,)
+    serializer_class = AKCategorySerializer
+
+    def get_queryset(self):
+        return AKCategory.objects.filter(event=self.event)
+
+
+class AKTrackViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
+    permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,)
+    serializer_class = AKTrackSerializer
+
+    def get_queryset(self):
+        return AKTrack.objects.filter(event=self.event)
+
+
+class AKViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
+    permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,)
+    serializer_class = AKSerializer
+
+    def get_queryset(self):
+        return AK.objects.filter(event=self.event)
+
+
+class RoomViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
+    permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,)
+    serializer_class = RoomSerializer
+
+    def get_queryset(self):
+        return Room.objects.filter(event=self.event)
+
+
+class AKSlotViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
+    permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,)
+    serializer_class = AKSlotSerializer
+
+    def get_queryset(self):
+        return AKSlot.objects.filter(event=self.event)
diff --git a/AKPlanning/settings.py b/AKPlanning/settings.py
index 90d06a00bed3abe0273ea0d536f6e099aaef6c31..d3d55d88d2d2c693ef77ae58452468ae80745ab9 100644
--- a/AKPlanning/settings.py
+++ b/AKPlanning/settings.py
@@ -46,6 +46,7 @@ INSTALLED_APPS = [
     'bootstrap4',
     'fontawesome_5',
     'timezone_field',
+    'rest_framework',
 ]
 
 MIDDLEWARE = [
diff --git a/AKPlanning/urls.py b/AKPlanning/urls.py
index c7c04a384a1c7f6cd822b702048b00b667c3de07..aa5f4538314580bb4a638999a532ee222859d4eb 100644
--- a/AKPlanning/urls.py
+++ b/AKPlanning/urls.py
@@ -19,6 +19,7 @@ from django.urls import path, include
 
 urlpatterns = [
     path('admin/', admin.site.urls),
+    path('', include('AKModel.urls', namespace='model')),
     path('i18n/', include('django.conf.urls.i18n'))
 ]
 
diff --git a/requirements.txt b/requirements.txt
index 7620f5983cbdf3fb94e09e1807cd6ba34aa46cba..b06f587734372a2314a549e8e849c6028d723d2a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@ django-bootstrap4==1.1.1
 django-fontawesome-5==1.0.16
 django-split-settings==1.0.1
 django-timezone-field==4.0
+djangorestframework==3.11.0