diff --git a/greg/api/serializers/sponsor.py b/greg/api/serializers/sponsor.py
index 57326558e9999d307412bed70d79665ae63c8821..71f3655c9115346a9cf7be5d280f5496a0543d6b 100644
--- a/greg/api/serializers/sponsor.py
+++ b/greg/api/serializers/sponsor.py
@@ -6,4 +6,4 @@ from greg.models import Sponsor
 class SponsorSerializer(serializers.ModelSerializer):
     class Meta:
         model = Sponsor
-        fields = ["id", "feide_id"]
+        fields = ["id", "feide_id", "first_name", "last_name"]
diff --git a/greg/api/views/sponsor.py b/greg/api/views/sponsor.py
index d53c81aeb88cec160d6f1b73345bb2dd91f75a65..d88772b523da93de2e60eb1a6cf15c644a298111 100644
--- a/greg/api/views/sponsor.py
+++ b/greg/api/views/sponsor.py
@@ -1,6 +1,6 @@
 from drf_spectacular.utils import extend_schema, OpenApiParameter
 from rest_framework import mixins
-from rest_framework.viewsets import ReadOnlyModelViewSet, GenericViewSet
+from rest_framework.viewsets import GenericViewSet, ModelViewSet
 
 from greg.api.pagination import PrimaryKeyCursorPagination
 from greg.api.serializers import PersonSerializer
@@ -8,7 +8,7 @@ from greg.api.serializers.sponsor import SponsorSerializer
 from greg.models import Sponsor, Person
 
 
-class SponsorViewSet(ReadOnlyModelViewSet):
+class SponsorViewSet(ModelViewSet):
     """Sponsor API"""
 
     queryset = Sponsor.objects.all().order_by("id")
diff --git a/greg/migrations/0001_initial.py b/greg/migrations/0001_initial.py
index d8b1585be9caec4c236b9319a7e0ad9afa10013e..c709049503f01d9a909bfc347ac25993ff21a27c 100644
--- a/greg/migrations/0001_initial.py
+++ b/greg/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.2.5 on 2021-08-19 09:10
+# Generated by Django 3.2.5 on 2021-08-19 12:57
 
 import datetime
 import dirtyfields.dirtyfields
@@ -119,6 +119,8 @@ class Migration(migrations.Migration):
                 ('created', models.DateTimeField(auto_now_add=True)),
                 ('updated', models.DateTimeField(auto_now=True)),
                 ('feide_id', models.CharField(max_length=256)),
+                ('first_name', models.CharField(max_length=256)),
+                ('last_name', models.CharField(max_length=256)),
             ],
             bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model),
         ),
diff --git a/greg/models.py b/greg/models.py
index 9d5c7d75f572bcb6601b280805cabe5077886d3c..1f04cecfb982ba6878472daa7ab946f8e1bcadc2 100644
--- a/greg/models.py
+++ b/greg/models.py
@@ -262,6 +262,9 @@ class Sponsor(BaseModel):
     """
 
     feide_id = models.CharField(max_length=256)
+    first_name = models.CharField(max_length=256)
+    last_name = models.CharField(max_length=256)
+
     units = models.ManyToManyField(
         "OrganizationalUnit",
         through="SponsorOrganizationalUnit",
@@ -269,8 +272,12 @@ class Sponsor(BaseModel):
     )
 
     def __repr__(self):
-        return "{}(id={!r}, feide_id={!r})".format(
-            self.__class__.__name__, self.pk, self.feide_id
+        return "{}(id={!r}, feide_id={!r}, first_name={!r}, last_name={!r})".format(
+            self.__class__.__name__,
+            self.pk,
+            self.feide_id,
+            self.first_name,
+            self.last_name,
         )
 
     class Meta:
@@ -317,3 +324,8 @@ class ScheduleTask(models.Model):
 
     name = models.CharField(max_length=32)
     last_completed = models.DateTimeField(null=True)
+
+    def __repr__(self):
+        return "{}(id={!r}, name={!r}, last_completed={!r})".format(
+            self.__class__.__name__, self.pk, self.name, self.last_completed
+        )
diff --git a/greg/tests/api/test_sponsor.py b/greg/tests/api/test_sponsor.py
index 12c8518b031d5c4e8405927a5854808a484cefa6..06e5eb0c74045772401d143b3e2f7eb1171e88d4 100644
--- a/greg/tests/api/test_sponsor.py
+++ b/greg/tests/api/test_sponsor.py
@@ -1,8 +1,32 @@
 import pytest
+from rest_framework import status
 
 from rest_framework.reverse import reverse
 
 
+@pytest.mark.django_db
+def test_add_sponsor(client):
+    data = {
+        "feide_id": "sponsor@example.org",
+        "first_name": "Test",
+        "last_name": "Sponsor",
+    }
+
+    post_response = client.post(reverse("sponsor-list"), data=data)
+
+    assert post_response.status_code == status.HTTP_201_CREATED
+
+    response_data = post_response.json()
+    list_response = client.get(
+        reverse("sponsor-detail", kwargs={"id": response_data["id"]})
+    )
+    list_response_data = list_response.json()
+
+    assert list_response_data["feide_id"] == data["feide_id"]
+    assert list_response_data["first_name"] == data["first_name"]
+    assert list_response_data["last_name"] == data["last_name"]
+
+
 @pytest.mark.django_db
 def test_sponsor_guest_list(client, sponsor_guy, person_foo_role):
     url = reverse("sponsor_guests-list", kwargs={"sponsor_id": sponsor_guy.id})
diff --git a/greg/tests/conftest.py b/greg/tests/conftest.py
index fb56fb7d9dec8a8d5d0eec634b0516181d401159..63646efdd9947cd04f5ec31079c855447e8b73b2 100644
--- a/greg/tests/conftest.py
+++ b/greg/tests/conftest.py
@@ -53,7 +53,9 @@ def person_bar() -> Person:
 
 @pytest.fixture
 def sponsor_guy() -> Sponsor:
-    return Sponsor.objects.create(feide_id="guy@example.org")
+    return Sponsor.objects.create(
+        feide_id="guy@example.org", first_name="Sponsor", last_name="Guy"
+    )
 
 
 @pytest.fixture