diff --git a/funkwhale_api/music/models.py b/funkwhale_api/music/models.py
index 90d369a7dd6e74afc60fbc705953c3b08a117513..770274bdfd00ba81bfd11009bbf2aab0581f4244 100644
--- a/funkwhale_api/music/models.py
+++ b/funkwhale_api/music/models.py
@@ -9,10 +9,10 @@ import markdown
 from django.conf import settings
 from django.db import models
 from django.contrib.staticfiles.templatetags.staticfiles import static
-from django.core.files import File
 from django.core.files.base import ContentFile
-from django.utils import timezone
 from django.core.files import File
+from django.core.urlresolvers import reverse
+from django.utils import timezone
 from taggit.managers import TaggableManager
 from versatileimagefield.fields import VersatileImageField
 
@@ -309,10 +309,13 @@ class Track(APIModelMixin):
         try:
             work_data = data['recording']['work-relation-list'][0]['work']
         except (IndexError, KeyError):
-            raise
+            return
         work, _ = Work.get_or_create_from_api(mbid=work_data['id'])
         return work
 
+    def get_lyrics_url(self):
+        return reverse('api:tracks-lyrics', kwargs={'pk': self.pk})
+
 class TrackFile(models.Model):
     track = models.ForeignKey(Track, related_name='files')
     audio_file = models.FileField(upload_to='tracks/%Y/%m/%d')
diff --git a/funkwhale_api/music/serializers.py b/funkwhale_api/music/serializers.py
index 98faa009963e8316d31f9915b973e1e5f05779a2..92806cf86f60cfc344798bf805b405a1f0dc1d5b 100644
--- a/funkwhale_api/music/serializers.py
+++ b/funkwhale_api/music/serializers.py
@@ -50,21 +50,28 @@ class AlbumSerializer(serializers.ModelSerializer):
         fields = ('id', 'mbid', 'title', 'cover', 'release_date', 'tags')
 
 
-class TrackSerializer(serializers.ModelSerializer):
+class LyricsMixin(serializers.ModelSerializer):
+    lyrics = serializers.SerializerMethodField()
+
+    def get_lyrics(self, obj):
+        return obj.get_lyrics_url()
+
+
+class TrackSerializer(LyricsMixin):
     files = TrackFileSerializer(many=True, read_only=True)
     tags = TagSerializer(many=True, read_only=True)
     class Meta:
         model = models.Track
-        fields = ('id', 'mbid', 'title', 'artist', 'files', 'tags')
+        fields = ('id', 'mbid', 'title', 'artist', 'files', 'tags', 'lyrics')
 
-class TrackSerializerNested(serializers.ModelSerializer):
+class TrackSerializerNested(LyricsMixin):
     artist = ArtistSerializer()
     files = TrackFileSerializer(many=True, read_only=True)
     album = SimpleAlbumSerializer(read_only=True)
     tags = TagSerializer(many=True, read_only=True)
     class Meta:
         model = models.Track
-        fields = ('id', 'mbid', 'title', 'artist', 'files', 'album', 'tags')
+        fields = ('id', 'mbid', 'title', 'artist', 'files', 'album', 'tags', 'lyrics')
 
 class AlbumSerializerNested(serializers.ModelSerializer):
     tracks = TrackSerializer(many=True, read_only=True)
diff --git a/funkwhale_api/music/views.py b/funkwhale_api/music/views.py
index 1656754214a70bfe57033554586d4bbfdf422049..ff771dc38cf2e5d90de7541b3112cdd2cd6aac62 100644
--- a/funkwhale_api/music/views.py
+++ b/funkwhale_api/music/views.py
@@ -106,6 +106,9 @@ class TrackViewSet(TagViewSetMixin, SearchMixin, viewsets.ReadOnlyModelViewSet):
         if not work:
             work = track.get_work()
 
+        if not work:
+            return Response({'error': 'unavailable work'}, status=404)
+
         lyrics = work.fetch_lyrics()
         try:
             if not lyrics.content: