diff --git a/funkwhale_api_client/api/uploads/uploads_audio_file_metadata_retrieve.py b/funkwhale_api_client/api/uploads/uploads_audio_file_metadata_retrieve.py
index 9980d2914e6c78fa4972414839621c2abb4e28c3..087e471c384b53a8c4087c2ec3d480fde0b55594 100644
--- a/funkwhale_api_client/api/uploads/uploads_audio_file_metadata_retrieve.py
+++ b/funkwhale_api_client/api/uploads/uploads_audio_file_metadata_retrieve.py
@@ -3,7 +3,7 @@ from typing import Any, Dict, Optional
 import httpx
 
 from ...client import AuthenticatedClient
-from ...models.upload_for_owner import UploadForOwner
+from ...models.track_metadata import TrackMetadata
 from ...types import Response
 
 
@@ -26,15 +26,15 @@ def _get_kwargs(
     }
 
 
-def _parse_response(*, response: httpx.Response) -> Optional[UploadForOwner]:
+def _parse_response(*, response: httpx.Response) -> Optional[TrackMetadata]:
     if response.status_code == 200:
-        response_200 = UploadForOwner.from_dict(response.json())
+        response_200 = TrackMetadata.from_dict(response.json())
 
         return response_200
     return None
 
 
-def _build_response(*, response: httpx.Response) -> Response[UploadForOwner]:
+def _build_response(*, response: httpx.Response) -> Response[TrackMetadata]:
     return Response(
         status_code=response.status_code,
         content=response.content,
@@ -47,13 +47,13 @@ def sync_detailed(
     uuid: str,
     *,
     client: AuthenticatedClient,
-) -> Response[UploadForOwner]:
+) -> Response[TrackMetadata]:
     """
     Args:
         uuid (str):
 
     Returns:
-        Response[UploadForOwner]
+        Response[TrackMetadata]
     """
 
     kwargs = _get_kwargs(
@@ -73,13 +73,13 @@ def sync(
     uuid: str,
     *,
     client: AuthenticatedClient,
-) -> Optional[UploadForOwner]:
+) -> Optional[TrackMetadata]:
     """
     Args:
         uuid (str):
 
     Returns:
-        Response[UploadForOwner]
+        Response[TrackMetadata]
     """
 
     return sync_detailed(
@@ -92,13 +92,13 @@ async def asyncio_detailed(
     uuid: str,
     *,
     client: AuthenticatedClient,
-) -> Response[UploadForOwner]:
+) -> Response[TrackMetadata]:
     """
     Args:
         uuid (str):
 
     Returns:
-        Response[UploadForOwner]
+        Response[TrackMetadata]
     """
 
     kwargs = _get_kwargs(
@@ -116,13 +116,13 @@ async def asyncio(
     uuid: str,
     *,
     client: AuthenticatedClient,
-) -> Optional[UploadForOwner]:
+) -> Optional[TrackMetadata]:
     """
     Args:
         uuid (str):
 
     Returns:
-        Response[UploadForOwner]
+        Response[TrackMetadata]
     """
 
     return (
diff --git a/funkwhale_api_client/models/__init__.py b/funkwhale_api_client/models/__init__.py
index 5e70da9da3757c8f5279e4e8bd2deb55a4558c0a..c2907d251f69d7b30baaf6946bbb175cfbaec81c 100644
--- a/funkwhale_api_client/models/__init__.py
+++ b/funkwhale_api_client/models/__init__.py
@@ -263,6 +263,7 @@ from .total_count import TotalCount
 from .track import Track
 from .track_album import TrackAlbum
 from .track_album_request import TrackAlbumRequest
+from .track_metadata import TrackMetadata
 from .track_request import TrackRequest
 from .track_uploads_item import TrackUploadsItem
 from .tracks_list_ordering_item import TracksListOrderingItem
diff --git a/funkwhale_api_client/models/track_metadata.py b/funkwhale_api_client/models/track_metadata.py
new file mode 100644
index 0000000000000000000000000000000000000000..8af570f05a93271df0e27529c5e0f8ef51985f48
--- /dev/null
+++ b/funkwhale_api_client/models/track_metadata.py
@@ -0,0 +1,138 @@
+from typing import Any, Dict, List, Type, TypeVar, Union
+
+import attr
+
+from ..types import UNSET, Unset
+
+T = TypeVar("T", bound="TrackMetadata")
+
+
+@attr.s(auto_attribs=True)
+class TrackMetadata:
+    """
+    Attributes:
+        album (str):
+        artists (str):
+        title (Union[Unset, None, str]):
+        position (Union[Unset, None, str]):
+        disc_number (Union[Unset, None, str]):
+        copyright_ (Union[Unset, None, str]):
+        license_ (Union[Unset, None, str]):
+        mbid (Union[Unset, None, str]):
+        tags (Union[Unset, None, str]):
+        description (Union[Unset, None, str]):
+        cover_data (Union[Unset, str]):
+    """
+
+    album: str
+    artists: str
+    title: Union[Unset, None, str] = UNSET
+    position: Union[Unset, None, str] = UNSET
+    disc_number: Union[Unset, None, str] = UNSET
+    copyright_: Union[Unset, None, str] = UNSET
+    license_: Union[Unset, None, str] = UNSET
+    mbid: Union[Unset, None, str] = UNSET
+    tags: Union[Unset, None, str] = UNSET
+    description: Union[Unset, None, str] = UNSET
+    cover_data: Union[Unset, str] = UNSET
+    additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
+
+    def to_dict(self) -> Dict[str, Any]:
+        album = self.album
+        artists = self.artists
+        title = self.title
+        position = self.position
+        disc_number = self.disc_number
+        copyright_ = self.copyright_
+        license_ = self.license_
+        mbid = self.mbid
+        tags = self.tags
+        description = self.description
+        cover_data = self.cover_data
+
+        field_dict: Dict[str, Any] = {}
+        field_dict.update(self.additional_properties)
+        field_dict.update(
+            {
+                "album": album,
+                "artists": artists,
+            }
+        )
+        if title is not UNSET:
+            field_dict["title"] = title
+        if position is not UNSET:
+            field_dict["position"] = position
+        if disc_number is not UNSET:
+            field_dict["disc_number"] = disc_number
+        if copyright_ is not UNSET:
+            field_dict["copyright"] = copyright_
+        if license_ is not UNSET:
+            field_dict["license"] = license_
+        if mbid is not UNSET:
+            field_dict["mbid"] = mbid
+        if tags is not UNSET:
+            field_dict["tags"] = tags
+        if description is not UNSET:
+            field_dict["description"] = description
+        if cover_data is not UNSET:
+            field_dict["cover_data"] = cover_data
+
+        return field_dict
+
+    @classmethod
+    def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
+        d = src_dict.copy()
+        album = d.pop("album")
+
+        artists = d.pop("artists")
+
+        title = d.pop("title", UNSET)
+
+        position = d.pop("position", UNSET)
+
+        disc_number = d.pop("disc_number", UNSET)
+
+        copyright_ = d.pop("copyright", UNSET)
+
+        license_ = d.pop("license", UNSET)
+
+        mbid = d.pop("mbid", UNSET)
+
+        tags = d.pop("tags", UNSET)
+
+        description = d.pop("description", UNSET)
+
+        cover_data = d.pop("cover_data", UNSET)
+
+        track_metadata = cls(
+            album=album,
+            artists=artists,
+            title=title,
+            position=position,
+            disc_number=disc_number,
+            copyright_=copyright_,
+            license_=license_,
+            mbid=mbid,
+            tags=tags,
+            description=description,
+            cover_data=cover_data,
+        )
+
+        track_metadata.additional_properties = d
+        return track_metadata
+
+    @property
+    def additional_keys(self) -> List[str]:
+        return list(self.additional_properties.keys())
+
+    def __getitem__(self, key: str) -> Any:
+        return self.additional_properties[key]
+
+    def __setitem__(self, key: str, value: Any) -> None:
+        self.additional_properties[key] = value
+
+    def __delitem__(self, key: str) -> None:
+        del self.additional_properties[key]
+
+    def __contains__(self, key: str) -> bool:
+        return key in self.additional_properties
diff --git a/tests/unit/test_model_track_metadata.py b/tests/unit/test_model_track_metadata.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e98c878f3be90b27409fb0afcec1e8e628a38ea
--- /dev/null
+++ b/tests/unit/test_model_track_metadata.py
@@ -0,0 +1,8 @@
+from funkwhale_api_client.models.track_metadata import TrackMetadata
+
+
+def test_UploadForOwnerMetadata(load_data):
+    response = load_data("upload_for_owner_metadata")
+    upload_metadata: TrackMetadata = TrackMetadata.from_dict(response)
+
+    assert isinstance(upload_metadata, TrackMetadata)
diff --git a/tests/unit/test_model_upload_for_owner.py b/tests/unit/test_model_upload_for_owner.py
index fc3151b951527996e2d7ebeaa47dcfd56cc49d84..9b6100646669101eab761f499efce911e55c1be7 100644
--- a/tests/unit/test_model_upload_for_owner.py
+++ b/tests/unit/test_model_upload_for_owner.py
@@ -6,9 +6,3 @@ def test_UploadForOwner(load_data):
     upload: UploadForOwner = UploadForOwner.from_dict(response)
 
     assert isinstance(upload, UploadForOwner)
-
-def test_UploadForOwnerMetadata(load_data):
-    response = load_data("upload_for_owner_metadata")
-    upload_metadata: UploadForOwner = UploadForOwner.from_dict(response)
-
-    assert isinstance(upload_metadata, UploadForOwner)
diff --git a/tests/unit/test_model_verify_email.py b/tests/unit/test_model_verify_email.py
index 72ec60a474e5d236eb651aaa06abdf1e2b511c85..895ee33a9c1c130dac38b79f23313098583cd10a 100644
--- a/tests/unit/test_model_verify_email.py
+++ b/tests/unit/test_model_verify_email.py
@@ -1,4 +1,5 @@
 import pytest
+
 from funkwhale_api_client.models.verify_email import VerifyEmail