---
title: "🛡️ Save playback history."
method: PATCH
path: "/api/v1/music/history"
tags: ["Music"]
---

# 🛡️ Save playback history.

`PATCH /api/v1/music/history`

<h3>🛡️ Requires Capabilities: <code>MusicHistory.Create</code></h3>

## Request body

- CreateMusicHistoryEntryDto
  - `seconds` number, required
  - `trackId` string, required
  - `queueItemId` string, required

## Response `200`

- MusicHistory
  - `playbackEntryId` string, required
  - `progress` number, required
  - `track` MusicTrack, required
    - `file` File, required
      - `user` User, required
        - `userId` string, required
        - `cardinalId` string
        - `cachedCloudUser` object, required
          - `subscription` 'free' | 'early_adopter' | 'starter' | 'pro' | 'ultimate'
        - `cachedCloudUserAt` string, date-time
        - `enabled` boolean
        - `role` string, required
        - `designation` string
        - `activityStatus` string
        - `activityStatusUpdatedAt` string, date-time
        - `roles` RoleAssignment[], required
          - `id` number, required
          - `user` User, required — recursive
          - `role` string, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `username` string
        - `password` string
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `run` Run, required
        - `runId` string, required
        - `file` File[]
        - `status` string, required
        - `completedAt` string, date-time, required
        - `type` string, required
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `musicTrack` MusicTrack[]
      - `photo` Photo
        - `photoId` string, required
        - `file` File, required — recursive
        - `metadata` PhotoMetadata[], required
          - `photo` Photo, required — recursive
          - `metadataType` string
          - `metadataFormat` string
          - `metaKey` string, required
          - `metaValue` string
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `thumbnail` PhotoThumbnail[], required
          - `thumbnailId` string, required
          - `absolutePath` string, nullable, required
          - `relativeSrc` string, nullable, required
          - `size` string, required
          - `format` string, required
          - `width` number, required
          - `height` number, required
          - `bytes` number, required
          - `photo` Photo, required — recursive
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `variations` PhotoVariation[], required
          - `variationId` string, required
          - `absolutePath` string, nullable, required
          - `relativeSrc` string, nullable, required
          - `format` string, required
          - `bytes` number, required
          - `photo` Photo, required — recursive
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `photoAlbumEntries` PhotoAlbumEntry[], required
          - `photoAlbumEntryId` string, required
          - `photo` Photo, required — recursive
          - `photoAlbum` PhotoAlbum, required
            - `user` User
              - …
            - `photoAlbumId` string, required
            - `name` string, required
            - `entries` PhotoAlbumEntry[], required
            - `metadata` PhotoAlbumMetadata[], required
              - …
            - `id` number, required
            - `createdAt` string, date-time, required
            - `updatedAt` string, date-time, required
            - `deletedAt` string, date-time, required
          - `featured` boolean, required
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `timestamp` number, required
        - `takenAt` string, date-time, required
        - `takenOnDay` string, required
        - `modifiedAt` string, date-time, required
        - `width` number, required
        - `height` number, required
        - `orientation` string, required
        - `deviceMake` string, required
        - `deviceModel` string, required
        - `gpsLat` number, required
        - `gpsLng` number, required
        - `gpsLatRef` string, required
        - `gpsLngRef` string, required
        - `gpsAltitude` string, required
        - `gpsTime` string, required
        - `gpsDate` string, required
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `fileId` string, required
      - `jobTasks` JobTask[], required
        - `jobTaskId` string, required
        - `job` Job
          - `jobId` string, required
          - `user` User
            - `userId` string, required
            - `cardinalId` string
            - `cachedCloudUser` object, required
              - …
            - `cachedCloudUserAt` string, date-time
            - `enabled` boolean
            - `role` string, required
            - `designation` string
            - `activityStatus` string
            - `activityStatusUpdatedAt` string, date-time
            - `roles` RoleAssignment[], required
              - …
            - `username` string
            - `password` string
            - `id` number, required
            - `createdAt` string, date-time, required
            - `updatedAt` string, date-time, required
            - `deletedAt` string, date-time, required
          - `run` Run, required
            - `runId` string, required
            - `file` File[]
            - `status` string, required
            - `completedAt` string, date-time, required
            - `type` string, required
            - `id` number, required
            - `createdAt` string, date-time, required
            - `updatedAt` string, date-time, required
            - `deletedAt` string, date-time, required
          - `type` 'album_art_thumbnails' | 'photo_variations' | 'photo_thumbnails' | 'generate_waveforms', required
          - `status` 'draft' | 'preparing' | 'in_queue' | 'running' | 'paused' | 'canceled' | 'completed' | 'errored', required
          - `parameters` object
          - `tasks` JobTask[]
          - `completedTasks` number, required
          - `remainingTasks` number, required
          - `totalTasks` number, required
          - `completedAt` string, date-time, required
          - `errorMessage` string, required
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `file` File — recursive
        - `type` 'create_album_artwork_thumbnail' | 'create_photo_thumbnail' | 'heic_to_jpeg' | 'generate_track_waveform', required
        - `target` string, required
        - `status` 'draft' | 'in_queue' | 'running' | 'paused' | 'canceled' | 'completed' | 'errored', required
        - `completedAt` string, date-time, required
        - `errorMessage` string, required
        - `results` object
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `absolutePath` string, required
      - `relativePath` string, required
      - `mimeType` string
      - `extension` string, required
      - `app` string, required
      - `mediaType` string, required
      - `size` number, required
      - `mtime` string, date-time
      - `lastSeen` string, date-time, required
      - `id` number, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `artists` MusicArtist[], required
      - `tracks` MusicTrack[]
      - `releases` MusicRelease[]
        - `tracks` MusicTrack[]
        - `artist` MusicArtist — recursive
        - `artists` MusicArtist[]
        - `genres` MusicGenre[]
          - `releases` MusicRelease[]
          - `musicGenreId` string, required
          - `name` string
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `musicReleaseId` string, required
        - `title` string
        - `sortTitle` string
        - `releaseType` 'album' | 'ep' | 'single' | 'compilation' | 'soundtrack' | 'live' | 'remix' | 'dj-mix' | 'broadcast' | 'demo'
        - `metadata` MusicReleaseMetadata[]
          - `release` MusicRelease, required — recursive
          - `metadataType` object
          - `metadataFormat` object
          - `metaKey` string, required
          - `metaValue` string
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `thumbnails` MusicReleaseThumbnail[]
          - `thumbnailId` string, required
          - `absolutePath` string, nullable, required
          - `relativeSrc` string, nullable, required
          - `size` string, required
          - `format` string, required
          - `width` number, required
          - `height` number, required
          - `bytes` number, required
          - `release` MusicRelease, required — recursive
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `musicArtistId` string, required
      - `name` string
      - `sortName` string
      - `metadata` MusicArtistMetadata[]
        - `musicTrack` MusicArtist, required — recursive
        - `metadataType` object
        - `metadataFormat` object
        - `metaKey` string, required
        - `metaValue` string
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `id` number, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `release` MusicRelease, required
      - `tracks` MusicTrack[]
      - `artist` MusicArtist
        - `tracks` MusicTrack[]
        - `releases` MusicRelease[]
        - `musicArtistId` string, required
        - `name` string
        - `sortName` string
        - `metadata` MusicArtistMetadata[]
          - `musicTrack` MusicArtist, required — recursive
          - `metadataType` object
          - `metadataFormat` object
          - `metaKey` string, required
          - `metaValue` string
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `artists` MusicArtist[]
        - `tracks` MusicTrack[]
        - `releases` MusicRelease[]
        - `musicArtistId` string, required
        - `name` string
        - `sortName` string
        - `metadata` MusicArtistMetadata[]
          - `musicTrack` MusicArtist, required — recursive
          - `metadataType` object
          - `metadataFormat` object
          - `metaKey` string, required
          - `metaValue` string
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `genres` MusicGenre[]
        - `releases` MusicRelease[]
        - `musicGenreId` string, required
        - `name` string
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `musicReleaseId` string, required
      - `title` string
      - `sortTitle` string
      - `releaseType` 'album' | 'ep' | 'single' | 'compilation' | 'soundtrack' | 'live' | 'remix' | 'dj-mix' | 'broadcast' | 'demo'
      - `metadata` MusicReleaseMetadata[]
        - `release` MusicRelease, required — recursive
        - `metadataType` object
        - `metadataFormat` object
        - `metaKey` string, required
        - `metaValue` string
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `thumbnails` MusicReleaseThumbnail[]
        - `thumbnailId` string, required
        - `absolutePath` string, nullable, required
        - `relativeSrc` string, nullable, required
        - `size` string, required
        - `format` string, required
        - `width` number, required
        - `height` number, required
        - `bytes` number, required
        - `release` MusicRelease, required — recursive
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `id` number, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `musicTrackId` string, required
    - `title` string
    - `sortTitle` string
    - `trackNumber` number
    - `discNumber` number
    - `duration` number
    - `bitrate` number
    - `metadata` MusicTrackMetadata[]
      - `track` MusicTrack, required — recursive
      - `metadataType` object
      - `metadataFormat` object
      - `metaKey` string, required
      - `metaValue` string
      - `id` number, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `history` MusicHistory[]
    - `waveform` MusicTrackWaveform
      - `track` MusicTrack, required — recursive
      - `version` number, required
      - `binCount` number, required
      - `data` object, required
      - `integratedLufs` number
      - `truePeakDb` number
      - `silenceLeadIn` number
      - `silenceLeadOut` number
      - `id` number, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `id` number, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `deletedAt` string, date-time, required
  - `queueItem` PlaybackQueueItem
    - `queueItemId` string, required
    - `queue` PlaybackQueue, required
      - `queueId` string, required
      - `user` User, required
        - `userId` string, required
        - `cardinalId` string
        - `cachedCloudUser` object, required
          - `subscription` 'free' | 'early_adopter' | 'starter' | 'pro' | 'ultimate'
        - `cachedCloudUserAt` string, date-time
        - `enabled` boolean
        - `role` string, required
        - `designation` string
        - `activityStatus` string
        - `activityStatusUpdatedAt` string, date-time
        - `roles` RoleAssignment[], required
          - `id` number, required
          - `user` User, required — recursive
          - `role` string, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `username` string
        - `password` string
        - `id` number, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `type` object, required
      - `dynamicType` object, required
      - `seedMediaType` string
      - `seedMediaId` string
      - `libraries` Library[], required
        - `id` number, required
        - `libraryId` string, required
        - `name` string, required
        - `paths` string[], required
        - `user` User, required
          - `userId` string, required
          - `cardinalId` string
          - `cachedCloudUser` object, required
            - `subscription` 'free' | 'early_adopter' | 'starter' | 'pro' | 'ultimate'
          - `cachedCloudUserAt` string, date-time
          - `enabled` boolean
          - `role` string, required
          - `designation` string
          - `activityStatus` string
          - `activityStatusUpdatedAt` string, date-time
          - `roles` RoleAssignment[], required
            - `id` number, required
            - `user` User, required — recursive
            - `role` string, required
            - `createdAt` string, date-time, required
            - `updatedAt` string, date-time, required
            - `deletedAt` string, date-time, required
          - `username` string
          - `password` string
          - `id` number, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `deletedAt` string, date-time, required
        - `playbackQueues` PlaybackQueue[], required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `deletedAt` string, date-time, required
      - `items` PlaybackQueueItem[]
      - `id` number, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `history` MusicHistory — recursive
    - `mediaType` string, required
    - `mediaId` string, required
    - `position` number, required
    - `id` number, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `deletedAt` string, date-time, required
  - `user` User, required
    - `userId` string, required
    - `cardinalId` string
    - `cachedCloudUser` object, required
      - `subscription` 'free' | 'early_adopter' | 'starter' | 'pro' | 'ultimate'
    - `cachedCloudUserAt` string, date-time
    - `enabled` boolean
    - `role` string, required
    - `designation` string
    - `activityStatus` string
    - `activityStatusUpdatedAt` string, date-time
    - `roles` RoleAssignment[], required
      - `id` number, required
      - `user` User, required — recursive
      - `role` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, required
    - `username` string
    - `password` string
    - `id` number, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `deletedAt` string, date-time, required
  - `id` number, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `deletedAt` string, date-time, required

## Other responses

- `401` — Possible reasons: The authorization token is invalid.
- `403` — Possible reasons: The user does not have sufficent capabilities.

---

[API](https://skmtc.net/cardinalapps/apis/cardinal-media-server-api.md) · [All operations](https://skmtc.net/cardinalapps/apis/cardinal-media-server-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cardinalapps/cardinal-media-server-api/versions/0c30e5146acd/schema)
