diff --git a/greg/api/serializers/consent.py b/greg/api/serializers/consent.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c1663f2da723d94f477a82e3fb97d9351892e35
--- /dev/null
+++ b/greg/api/serializers/consent.py
@@ -0,0 +1,9 @@
+from rest_framework.serializers import ModelSerializer
+
+from greg.models import Consent
+
+
+class ConsentSerializer(ModelSerializer):
+    class Meta:
+        model = Consent
+        fields = "__all__"
diff --git a/greg/api/serializers/organizational_unit.py b/greg/api/serializers/organizational_unit.py
new file mode 100644
index 0000000000000000000000000000000000000000..12251bffff79f9119d76e9e1f7ddcc58c2984b68
--- /dev/null
+++ b/greg/api/serializers/organizational_unit.py
@@ -0,0 +1,9 @@
+from rest_framework.serializers import ModelSerializer
+
+from greg.models import OrganizationalUnit
+
+
+class OrganizationalUnitSerializer(ModelSerializer):
+    class Meta:
+        model = OrganizationalUnit
+        fields = "__all__"
diff --git a/greg/api/serializers/sponsor.py b/greg/api/serializers/sponsor.py
new file mode 100644
index 0000000000000000000000000000000000000000..57326558e9999d307412bed70d79665ae63c8821
--- /dev/null
+++ b/greg/api/serializers/sponsor.py
@@ -0,0 +1,9 @@
+from rest_framework import serializers
+
+from greg.models import Sponsor
+
+
+class SponsorSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Sponsor
+        fields = ["id", "feide_id"]
diff --git a/greg/api/urls.py b/greg/api/urls.py
index 9fa175b7c1dfec87d8e93a328cc2294961415350..69743c28704421b8128bbe25b19f66d3e7412a42 100644
--- a/greg/api/urls.py
+++ b/greg/api/urls.py
@@ -8,17 +8,23 @@ from drf_spectacular.views import (
     SpectacularSwaggerView,
 )
 
+from greg.api.views.consent import ConsentViewSet
+from greg.api.views.organizational_unit import OrganizationalUnitViewSet
 from greg.api.views.person import (
     PersonRoleViewSet,
     PersonViewSet,
 )
 from greg.api.views.role import RoleViewSet
 from greg.api.views.health import Health
-
+from greg.api.views.sponsor import SponsorViewSet
 
 router = DefaultRouter()
 router.register(r"persons", PersonViewSet, basename="person")
 router.register(r"roles", RoleViewSet, basename="role")
+router.register(r"consents", ConsentViewSet, basename="consent")
+router.register(r"sponsors", SponsorViewSet, basename="sponsor")
+router.register(r"orgunit", OrganizationalUnitViewSet, basename="orgunit")
+
 
 urlpatterns = router.urls
 
diff --git a/greg/api/views/consent.py b/greg/api/views/consent.py
new file mode 100644
index 0000000000000000000000000000000000000000..4996325e7cb9b40ffb64fde25a8d6b374e81d3e6
--- /dev/null
+++ b/greg/api/views/consent.py
@@ -0,0 +1,14 @@
+from rest_framework import viewsets
+
+from greg.api.pagination import PrimaryKeyCursorPagination
+from greg.api.serializers.consent import ConsentSerializer
+from greg.models import Consent
+
+
+class ConsentViewSet(viewsets.ModelViewSet):
+    """Consent API"""
+
+    queryset = Consent.objects.all().order_by("id")
+    serializer_class = ConsentSerializer
+    pagination_class = PrimaryKeyCursorPagination
+    lookup_field = "id"
diff --git a/greg/api/views/organizational_unit.py b/greg/api/views/organizational_unit.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6d2236cd68f3318629a4595f4ee6d3f1755918e
--- /dev/null
+++ b/greg/api/views/organizational_unit.py
@@ -0,0 +1,14 @@
+from rest_framework import viewsets
+
+from greg.api.pagination import PrimaryKeyCursorPagination
+from greg.api.serializers.organizational_unit import OrganizationalUnitSerializer
+from greg.models import OrganizationalUnit
+
+
+class OrganizationalUnitViewSet(viewsets.ModelViewSet):
+    """OrganizationalUnit API"""
+
+    queryset = OrganizationalUnit.objects.all().order_by("id")
+    serializer_class = OrganizationalUnitSerializer
+    pagination_class = PrimaryKeyCursorPagination
+    lookup_field = "id"
diff --git a/greg/api/views/sponsor.py b/greg/api/views/sponsor.py
new file mode 100644
index 0000000000000000000000000000000000000000..0251a2e86274d368d61508c2c937b1205e8ea6e3
--- /dev/null
+++ b/greg/api/views/sponsor.py
@@ -0,0 +1,14 @@
+from rest_framework.viewsets import ReadOnlyModelViewSet
+
+from greg.api.pagination import PrimaryKeyCursorPagination
+from greg.api.serializers.sponsor import SponsorSerializer
+from greg.models import Sponsor
+
+
+class SponsorViewSet(ReadOnlyModelViewSet):
+    """Sponsor API"""
+
+    queryset = Sponsor.objects.all().order_by("id")
+    serializer_class = SponsorSerializer
+    pagination_class = PrimaryKeyCursorPagination
+    lookup_field = "id"
diff --git a/greg/tests/api/test_consent.py b/greg/tests/api/test_consent.py
new file mode 100644
index 0000000000000000000000000000000000000000..24ae8c837c73054d8edcad98abcefa1f39624e59
--- /dev/null
+++ b/greg/tests/api/test_consent.py
@@ -0,0 +1,30 @@
+import pytest
+from rest_framework import status
+from rest_framework.reverse import reverse
+
+from greg.models import Consent
+
+
+@pytest.fixture
+def consent_foo() -> Consent:
+    return Consent.objects.create(
+        type="test_consent",
+        consent_name_en="Test1",
+        consent_name_nb="Test2",
+        consent_description_en="Test description",
+        consent_description_nb="Test beskrivelse",
+        consent_link_en="https://example.org",
+        consent_link_nb="https://example.org",
+        valid_from="2018-01-20",
+        user_allowed_to_change=True,
+    )
+
+
+@pytest.mark.django_db
+def test_get_consent(client, consent_foo):
+    resp = client.get(reverse("consent-detail", kwargs={"id": consent_foo.id}))
+    assert resp.status_code == status.HTTP_200_OK
+    data = resp.json()
+    assert data.get("id") == consent_foo.id
+    assert data.get("type") == consent_foo.type
+    assert data.get("consent_name_en") == consent_foo.consent_name_en
diff --git a/greg/tests/api/test_person.py b/greg/tests/api/test_person.py
index 1f40ad5f4cd4210fc5768d9ceaf88fad286fc0b3..f79d9d26a2475b542cc22dda4c9dbb7ed7104ce4 100644
--- a/greg/tests/api/test_person.py
+++ b/greg/tests/api/test_person.py
@@ -1,24 +1,12 @@
 import pytest
 
-from django.contrib.auth import get_user_model
 from rest_framework import status
-from rest_framework.authtoken.models import Token
 from rest_framework.reverse import reverse
 from rest_framework.status import HTTP_200_OK
-from rest_framework.test import APIClient
 
 from greg.models import Person
 
 
-@pytest.fixture
-def client() -> APIClient:
-    user, _ = get_user_model().objects.get_or_create(username="test")
-    token, _ = Token.objects.get_or_create(user=user)
-    client = APIClient()
-    client.credentials(HTTP_AUTHORIZATION=f"Token {token.key}")
-    return client
-
-
 @pytest.fixture
 def person_foo() -> Person:
     return Person.objects.create(
diff --git a/greg/tests/conftest.py b/greg/tests/conftest.py
index 290c0a14a871798caed88c5157ac86b2d20a7122..bbdf24d3973f2d452e7e45e22ae1a81e2bcda7b5 100644
--- a/greg/tests/conftest.py
+++ b/greg/tests/conftest.py
@@ -1,5 +1,9 @@
 import logging
 
+from rest_framework.authtoken.models import Token
+from rest_framework.test import APIClient
+from django.contrib.auth import get_user_model
+
 
 # faker spams the logs with localisation warnings
 # see https://github.com/joke2k/faker/issues/753
@@ -19,3 +23,12 @@ def setup_db_test_data(django_db_setup, django_db_blocker):
     with django_db_blocker.unblock():
         database_seeder = DatabasePopulation()
         database_seeder.populate_database()
+
+
+@pytest.fixture
+def client() -> APIClient:
+    user, _ = get_user_model().objects.get_or_create(username="test")
+    token, _ = Token.objects.get_or_create(user=user)
+    client = APIClient()
+    client.credentials(HTTP_AUTHORIZATION=f"Token {token.key}")
+    return client