diff --git a/api/config/settings/common.py b/api/config/settings/common.py
index e45f6c2567171be8da9105a186112d8e046971e5..7b7f6e64c8d0d6a966484dd7f24aad028814a8a4 100644
--- a/api/config/settings/common.py
+++ b/api/config/settings/common.py
@@ -149,16 +149,6 @@ FIXTURE_DIRS = (
 # ------------------------------------------------------------------------------
 EMAIL_BACKEND = env('DJANGO_EMAIL_BACKEND', default='django.core.mail.backends.smtp.EmailBackend')
 
-# MANAGER CONFIGURATION
-# ------------------------------------------------------------------------------
-# See: https://docs.djangoproject.com/en/dev/ref/settings/#admins
-ADMINS = (
-    ("""Eliot Berriot""", 'contact@eliotberriot.om'),
-)
-
-# See: https://docs.djangoproject.com/en/dev/ref/settings/#managers
-MANAGERS = ADMINS
-
 # DATABASE CONFIGURATION
 # ------------------------------------------------------------------------------
 # See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
diff --git a/api/funkwhale_api/common/session.py b/api/funkwhale_api/common/session.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f5584bd1cdbe465605d719d164ba468024160ed
--- /dev/null
+++ b/api/funkwhale_api/common/session.py
@@ -0,0 +1,18 @@
+import requests
+
+from django.conf import settings
+
+import funkwhale_api
+
+
+def get_user_agent():
+    return 'python-requests (funkwhale/{}; +{})'.format(
+        funkwhale_api.__version__,
+        settings.FUNKWHALE_URL
+    )
+
+
+def get_session():
+    s = requests.Session()
+    s.headers['User-Agent'] = get_user_agent()
+    return s
diff --git a/api/funkwhale_api/downloader/downloader.py b/api/funkwhale_api/downloader/downloader.py
index b35ed6f7d1c73ab99b9d0b0676e77743c80c10d3..7fc237b089a748ccb9555da9a52e0eaf1c506a4e 100644
--- a/api/funkwhale_api/downloader/downloader.py
+++ b/api/funkwhale_api/downloader/downloader.py
@@ -1,5 +1,4 @@
 import os
-import requests
 import json
 from urllib.parse import quote_plus
 import youtube_dl
diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py
index 7502bd739546bae6b4fc2305ca782db9dd3e0413..7d20d7f9ccdd8755618dee6da0869c4419b74f0b 100644
--- a/api/funkwhale_api/federation/activity.py
+++ b/api/funkwhale_api/federation/activity.py
@@ -1,9 +1,10 @@
 import logging
 import json
-import requests
 import requests_http_signature
 import uuid
 
+from funkwhale_api.common import session
+
 from . import models
 from . import signing
 
@@ -68,7 +69,7 @@ def deliver(activity, on_behalf_of, to=[]):
         recipient_actor = actors.get_actor(url)
         logger.debug('delivering to %s', recipient_actor.inbox_url)
         logger.debug('activity content: %s', json.dumps(activity))
-        response = requests.post(
+        response = session.get_session().post(
             auth=auth,
             json=activity,
             url=recipient_actor.inbox_url,
diff --git a/api/funkwhale_api/federation/actors.py b/api/funkwhale_api/federation/actors.py
index 54d78d9ffd37888e5aac1d59db87693d73eabda7..a461eb76aaa0c4fd6e687c246fa51006d5878ae2 100644
--- a/api/funkwhale_api/federation/actors.py
+++ b/api/funkwhale_api/federation/actors.py
@@ -1,5 +1,4 @@
 import logging
-import requests
 import uuid
 import xml
 
@@ -12,6 +11,8 @@ from rest_framework.exceptions import PermissionDenied
 
 from dynamic_preferences.registries import global_preferences_registry
 
+from funkwhale_api.common import session
+
 from . import activity
 from . import keys
 from . import models
@@ -28,7 +29,7 @@ def remove_tags(text):
 
 
 def get_actor_data(actor_url):
-    response = requests.get(
+    response = session.get_session().get(
         actor_url,
         headers={
             'Accept': 'application/activity+json',
diff --git a/api/funkwhale_api/federation/keys.py b/api/funkwhale_api/federation/keys.py
index 08d4034ea347a6a17bb5d5701217d54cc1c57fa0..7e9d316c2582fa4535147265175bbea23e354ecf 100644
--- a/api/funkwhale_api/federation/keys.py
+++ b/api/funkwhale_api/federation/keys.py
@@ -3,7 +3,6 @@ from cryptography.hazmat.primitives.asymmetric import rsa
 from cryptography.hazmat.backends import default_backend as crypto_default_backend
 
 import re
-import requests
 import urllib.parse
 
 from . import exceptions
diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py
index 5f8fc1736379da74eedd3c482bd57944b586cce0..0870d98163f99879f0902e017b194c7ced1c33f2 100644
--- a/api/funkwhale_api/music/views.py
+++ b/api/funkwhale_api/music/views.py
@@ -1,7 +1,6 @@
 import ffmpeg
 import os
 import json
-import requests
 import subprocess
 import unicodedata
 import urllib
@@ -23,6 +22,7 @@ from rest_framework import permissions
 from musicbrainzngs import ResponseError
 
 from funkwhale_api.common import utils as funkwhale_utils
+from funkwhale_api.common import session
 from funkwhale_api.federation import actors
 from funkwhale_api.requests.models import ImportRequest
 from funkwhale_api.musicbrainz import api
@@ -214,7 +214,7 @@ class TrackFileViewSet(viewsets.ReadOnlyModelViewSet):
             file_extension = utils.get_ext_from_type(mt)
             filename = '{}.{}'.format(f.track.full_name, file_extension)
             auth = actors.SYSTEM_ACTORS['library'].get_request_auth()
-            remote_response = requests.get(
+            remote_response = session.get_session().get(
                 library_track.audio_url,
                 auth=auth,
                 stream=True,
diff --git a/api/funkwhale_api/musicbrainz/client.py b/api/funkwhale_api/musicbrainz/client.py
index 049ed298c7b22cb6f717ee3b571f1153d47f3c2f..8e7076a78b1ae25f47c521c1360d98f077576813 100644
--- a/api/funkwhale_api/musicbrainz/client.py
+++ b/api/funkwhale_api/musicbrainz/client.py
@@ -5,7 +5,7 @@ from django.conf import settings
 from funkwhale_api import __version__
 
 _api = musicbrainzngs
-_api.set_useragent('funkwhale', str(__version__), 'contact@eliotberriot.com')
+_api.set_useragent('funkwhale', str(__version__), settings.FUNKWHALE_URL)
 
 
 store = memoize.djangocache.Cache('default')
diff --git a/api/tests/common/test_session.py b/api/tests/common/test_session.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ff1e660bc74936ce945c968bad919871b14ad21
--- /dev/null
+++ b/api/tests/common/test_session.py
@@ -0,0 +1,18 @@
+import funkwhale_api
+
+from funkwhale_api.common import session
+
+
+def test_get_user_agent(settings):
+    settings.FUNKWHALE_URL = 'https://test.com'
+    'http.rb/3.0.0 (Mastodon/2.2.0; +https://mastodon.eliotberriot.com/)'
+    expected = 'python-requests (funkwhale/{}; +{})'.format(
+        funkwhale_api.__version__,
+        settings.FUNKWHALE_URL
+    )
+    assert session.get_user_agent() == expected
+
+
+def test_get_session():
+    expected = session.get_user_agent()
+    assert session.get_session().headers['User-Agent'] == expected
diff --git a/changes/changelog.d/user-agent.enhancement b/changes/changelog.d/user-agent.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..605e1f6a7d411124a01bfe9216baa9099e040733
--- /dev/null
+++ b/changes/changelog.d/user-agent.enhancement
@@ -0,0 +1,2 @@
+We now use a proper user agent including instance version and url during
+outgoing requests