diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py
index 62a4500db5f39e92bc9d9dc316deedcca2ab5d76..6e3754203133db56afd44485f45f721ecf61adda 100644
--- a/api/funkwhale_api/federation/serializers.py
+++ b/api/funkwhale_api/federation/serializers.py
@@ -1,6 +1,8 @@
 from django.urls import reverse
 from django.conf import settings
 
+from dynamic_preferences.registries import global_preferences_registry
+
 from . import utils
 
 
@@ -8,6 +10,10 @@ def repr_instance_actor():
     """
     We do not use a serializer here, since it's pretty static
     """
+    actor_url = utils.full_url(reverse('federation:instance-actor'))
+    preferences = global_preferences_registry.manager()
+    public_key = preferences['federation__public_key']
+
     return {
         '@context': [
             'https://www.w3.org/ns/activitystreams',
@@ -18,4 +24,15 @@ def repr_instance_actor():
         'type': 'Service',
         'inbox': utils.full_url(reverse('federation:instance-inbox')),
         'outbox': utils.full_url(reverse('federation:instance-outbox')),
+        'preferredUsername': 'service',
+        'name': 'Service Bot - {}'.format(settings.FEDERATION_HOSTNAME),
+        'summary': 'Bot account for federating with {}'.format(
+            settings.FEDERATION_HOSTNAME
+        ),
+        'publicKey': {
+            'id': '{}#main-key'.format(actor_url),
+            'owner': actor_url,
+            'publicKeyPem': public_key
+        },
+
     }
diff --git a/api/tests/federation/test_serializers.py b/api/tests/federation/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..68672e6b404977bcac18603960605691e87874d7
--- /dev/null
+++ b/api/tests/federation/test_serializers.py
@@ -0,0 +1,36 @@
+from django.urls import reverse
+
+from funkwhale_api.federation import keys
+from funkwhale_api.federation import serializers
+
+
+def test_repr_instance_actor(db, preferences, settings):
+    _, public_key = keys.get_key_pair()
+    preferences['federation__public_key'] = public_key.decode('utf-8')
+    settings.FEDERATION_HOSTNAME = 'test.federation'
+    settings.FUNKWHALE_URL = 'https://test.federation'
+    actor_url = settings.FUNKWHALE_URL + reverse('federation:instance-actor')
+    inbox_url = settings.FUNKWHALE_URL + reverse('federation:instance-inbox')
+    outbox_url = settings.FUNKWHALE_URL + reverse('federation:instance-outbox')
+
+    expected = {
+        '@context': [
+            'https://www.w3.org/ns/activitystreams',
+            'https://w3id.org/security/v1',
+            {},
+        ],
+        'id': actor_url,
+        'type': 'Service',
+        'preferredUsername': 'service',
+        'name': 'Service Bot - test.federation',
+        'summary': 'Bot account for federating with test.federation',
+        'inbox': inbox_url,
+        'outbox': outbox_url,
+        'publicKey': {
+            'id': '{}#main-key'.format(actor_url),
+            'owner': actor_url,
+            'publicKeyPem': public_key.decode('utf-8')
+        },
+    }
+
+    assert expected == serializers.repr_instance_actor()
diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py
index 3d8218c230293211f45b16594d32cdbdc131f2f4..6a8de8c14a8af9944e23860feb2951f07c0a4fc1 100644
--- a/api/tests/federation/test_views.py
+++ b/api/tests/federation/test_views.py
@@ -2,6 +2,7 @@ from django.urls import reverse
 
 import pytest
 
+from funkwhale_api.federation import serializers
 from funkwhale_api.federation import webfinger
 
 
@@ -9,21 +10,9 @@ def test_instance_actor(db, settings, api_client):
     settings.FUNKWHALE_URL = 'http://test.com'
     url = reverse('federation:instance-actor')
     response = api_client.get(url)
-    assert response.data['id'] == (
-      settings.FUNKWHALE_URL + url
-    )
-    assert response.data['type'] == 'Service'
-    assert response.data['inbox'] == (
-      settings.FUNKWHALE_URL + reverse('federation:instance-inbox')
-    )
-    assert response.data['outbox'] == (
-      settings.FUNKWHALE_URL + reverse('federation:instance-outbox')
-    )
-    assert response.data['@context'] == [
-      'https://www.w3.org/ns/activitystreams',
-      'https://w3id.org/security/v1',
-      {},
-    ]
+
+    assert response.status_code == 200
+    assert response.data == serializers.repr_instance_actor()
 
 
 @pytest.mark.parametrize('route', [
diff --git a/api/tests/federation/test_webfinger.py b/api/tests/federation/test_webfinger.py
index 4cee9c8c71083798e8f0156140e0ca5303d358e3..d2b00f8f1c61afee1133c31749f25af1ce6522a4 100644
--- a/api/tests/federation/test_webfinger.py
+++ b/api/tests/federation/test_webfinger.py
@@ -54,12 +54,12 @@ def test_service_serializer(settings):
         'links': [
             {
                 'rel': 'self',
-                'href': 'https://test.federation/instance/actor',
+                'href': 'https://test.federation/federation/instance/actor',
                 'type': 'application/activity+json',
             }
         ],
         'aliases': [
-            'https://test.federation/instance/actor',
+            'https://test.federation/federation/instance/actor',
         ]
     }