Music Assistant Models

1.1.115 · active · verified Fri Apr 17

The `music-assistant-models` library provides the core Pydantic V2 data models used across the Music Assistant ecosystem. It defines structured representations for media items (tracks, artists, albums), player states, queues, and other common entities. As of version 1.1.115, it requires Python 3.11+ and Pydantic V2. Releases typically follow the main Music Assistant project's development, with frequent updates to align with new features and data structures.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to import and instantiate core media item models like `Artist`, `Album`, and `Track`, as well as interacting with common enums. It highlights the use of Pydantic V2 methods for serialization.

from music_assistant_models.metadata import Track, Artist, Album
from music_assistant_models.enums import MediaType
from music_assistant_models.player import PlayerState, RepeatMode

# Example: Create a simple Artist object
artist = Artist(
    item_id="artist_123",
    provider="spotify",
    name="The Example Band",
    media_type=MediaType.ARTIST
)

# Example: Create an Album object
album = Album(
    item_id="album_456",
    provider="spotify",
    name="Greatest Hits",
    artists=[artist],
    year=2023,
    media_type=MediaType.ALBUM
)

# Example: Create a Track object
track = Track(
    item_id="track_789",
    provider="spotify",
    name="Sample Song",
    version="Original Mix",
    duration=240, # seconds
    artists=[artist],
    album=album,
    media_type=MediaType.TRACK
)

print(f"Created Track: {track.name} by {', '.join(a.name for a in track.artists)}")
print(f"Track duration: {track.duration} seconds from album '{track.album.name}'")

# Accessing model attributes
print(f"Track media type: {track.media_type.value}")

# Using other enums
print(f"Current PlayerState options: {list(PlayerState)}")
print(f"Desired RepeatMode: {RepeatMode.ALL}")

# To serialize a model to JSON (Pydantic V2 style)
import json
print("\nSerialized Track (JSON):")
print(json.dumps(track.model_dump(), indent=2))

view raw JSON →