diff --git a/api/funkwhale_api/common/models.py b/api/funkwhale_api/common/models.py
index 35f64406e296cc7a54ab7098127c067a70847567..1a31b2dcda00b9bd735cb2860e6deef2df79ca9e 100644
--- a/api/funkwhale_api/common/models.py
+++ b/api/funkwhale_api/common/models.py
@@ -256,14 +256,14 @@ class Attachment(models.Model):
     @property
     def download_url_original(self):
         if self.file:
-            return federation_utils.full_url(self.file.url)
+            return utils.media_url(self.file.url)
         proxy_url = reverse("api:v1:attachments-proxy", kwargs={"uuid": self.uuid})
         return federation_utils.full_url(proxy_url + "?next=original")
 
     @property
     def download_url_medium_square_crop(self):
         if self.file:
-            return federation_utils.full_url(self.file.crop["200x200"].url)
+            return utils.media_url(self.file.crop["200x200"].url)
         proxy_url = reverse("api:v1:attachments-proxy", kwargs={"uuid": self.uuid})
         return federation_utils.full_url(proxy_url + "?next=medium_square_crop")
 
diff --git a/api/funkwhale_api/common/utils.py b/api/funkwhale_api/common/utils.py
index 6c4238fc4ecc5d9165976a8af44c2c3e84c36c56..b721bdf7b24c4219c330719a7e4e8679f9c4f34e 100644
--- a/api/funkwhale_api/common/utils.py
+++ b/api/funkwhale_api/common/utils.py
@@ -134,6 +134,17 @@ def join_url(start, end):
     return start + end
 
 
+def media_url(path):
+    if settings.MEDIA_URL.startswith("http://") or settings.MEDIA_URL.startswith(
+        "https://"
+    ):
+        return join_url(settings.MEDIA_URL, path)
+
+    from funkwhale_api.federation import utils as federation_utils
+
+    return federation_utils.full_url(path)
+
+
 def spa_reverse(name, args=[], kwargs={}):
     return urls.reverse(name, urlconf=settings.SPA_URLCONF, args=args, kwargs=kwargs)