RTCDeveloper Docs Flyan Cloud
中文

Music Content Center

Song catalogue, charts, collections, lyrics, preview sources and cache metadata backing the SDK music capability.

Generated from the public REST API definitions

Version v1.1.0 · Updated 2026-10-26 · revision 1

Group overview

Generated at build time from the public REST API definition: tag music, 26 operations (out of 230). For authentication, envelope and pagination conventions see REST API overview.

MethodPathSummary
GET/v1/music/cache-policyRead the project cache policy
PUT/v1/music/cache-policyUpdate the project cache policy
GET/v1/music/cachesList player caches
DELETE/v1/music/cachesRemove all cache entries
PUT/v1/music/caches/{songCode}Report a cache entry
DELETE/v1/music/caches/{songCode}Remove one cache entry
GET/v1/music/chartsList music charts
GET/v1/music/charts/{chartId}Read one music chart with a page of its songs
GET/v1/music/collectionsList project music collections (playlists)
POST/v1/music/collectionsCreate a music collection
GET/v1/music/collections/{collectionId}Read a music collection with its songs
DELETE/v1/music/collections/{collectionId}Delete a music collection
POST/v1/music/collections/{collectionId}/songsAppend a song to a collection
DELETE/v1/music/collections/{collectionId}/songs/{songCode}Remove a song from a collection
GET/v1/music/mediaStream signed preview audio
GET/v1/music/songsSearch the song library
POST/v1/music/songsRegister a song in the project library
GET/v1/music/songs/{songCode}Read one song
PATCH/v1/music/songs/{songCode}Update a project-library song
DELETE/v1/music/songs/{songCode}Remove a project-library song
GET/v1/music/songs/{songCode}/lyricRead a song lyric
PUT/v1/music/songs/{songCode}/lyricUpload a lyric variant
GET/v1/music/songs/{songCode}/preloadRead the preload state
POST/v1/music/songs/{songCode}/preloadRecord a preload
GET/v1/music/songs/{songCode}/sourceResolve a playable source
POST/v1/music/tokensMint a Music Content Center access token

Operation details

GET /v1/music/cache-policy

Read the project cache policy

Agora IMediaPlayerCacheManager getters (getMaxCacheFileCount, getCacheDir, …).

Authentication: project credentials (Base64 of customerId:customerSecret)

Response

Status codesDescription / schema
200OK — MusicCachePolicy

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/cache-policy" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

PUT /v1/music/cache-policy

Update the project cache policy

Agora IMediaPlayerCacheManager setters. Omitted fields keep their current value.

Authentication: project credentials (Base64 of customerId:customerSecret)

Request body

FieldTypeRequiredDescription
maxCacheFileCountinteger1..10000
maxCacheFileSizeBytesinteger1024..10737418240
enableAutoRemoveCacheboolean
cacheDirstring
json
{
  "maxCacheFileCount": 1,
  "maxCacheFileSizeBytes": 1,
  "enableAutoRemoveCache": true
}

Response

Status codesDescription / schema
200OK — MusicCachePolicy
400Invalid parameter — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/v1/music/cache-policy" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"maxCacheFileCount":1,"maxCacheFileSizeBytes":1,"enableAutoRemoveCache":true}'

GET /v1/music/caches

List player caches

Agora getCaches. One row per cached song for the given device uid.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
uidqueryinteger>= 1

Response

Status codesDescription / schema
200OK — object{ count, caches }
400Invalid parameter — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/caches?uid=10001" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

DELETE /v1/music/caches

Remove all cache entries

Agora removeAllCaches / removeOldCache (the policy-driven trim runs automatically).

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
uidqueryinteger>= 1

Response

Status codesDescription / schema
200OK — object{ removed }
400Invalid parameter — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/music/caches?uid=10001" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

PUT /v1/music/caches/{songCode}

Report a cache entry

Client-side cache statistics (onPlayerCacheStats) become server facts here. Exceeding the cache policy while auto-remove is disabled fails with music_cache_quota_exceeded.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring

Request body

FieldTypeRequiredDescription
uidinteger>= 1
statusenum(cached | caching)
sizeBytesinteger>= 0
cacheUristring | null
json
{
  "uid": 1,
  "status": "cached",
  "sizeBytes": 1
}

Response

Status codesDescription / schema
200OK — MusicCacheInfo
400Invalid parameter — Error
409Cache quota exceeded (music_cache_quota_exceeded) — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/v1/music/caches/songCode" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"uid":1,"status":"cached","sizeBytes":1}'

DELETE /v1/music/caches/{songCode}

Remove one cache entry

Agora removeCache. 404 when that song is not cached for the uid.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring
uidqueryinteger>= 1

Response

Status codesDescription / schema
204cache entry removed
404Song not cached (music_cache_not_found) — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/music/caches/songCode?uid=10001" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/music/charts

List music charts

Agora getMusicCharts. Platform-owned reference data visible to every project.

Authentication: project credentials (Base64 of customerId:customerSecret)

Response

Status codesDescription / schema
200OK — object{ charts }
401Missing/invalid credentials — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/charts" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/music/charts/{chartId}

Read one music chart with a page of its songs

Agora getMusicCollectionByMusicChartId. Only songs visible to the authenticated project are returned (the platform catalog plus the project library).

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
chartIdpathisstring
limitqueryinteger1..200,default 50
offsetqueryinteger>= 0,default 0

Response

Status codesDescription / schema
200OK — MusicChartDetail
400Invalid parameter — Error
404Unknown chart (music_chart_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/charts/chartId?limit=50&offset=0" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/music/collections

List project music collections (playlists)

Authentication: project credentials (Base64 of customerId:customerSecret)

Response

Status codesDescription / schema
200OK — object{ collections }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/collections" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/music/collections

Create a music collection

Names are unique per project (case-insensitive); duplicates answer music_collection_conflict.

Authentication: project credentials (Base64 of customerId:customerSecret)

Request body

FieldTypeRequiredDescription
namestringis
descriptionstring
json
{
  "name": "demo",
  "description": "string"
}

Response

Status codesDescription / schema
201OK — MusicCollectionRecord
400Invalid parameter — Error
409Duplicate collection name (music_collection_conflict) — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/music/collections" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"name":"demo","description":"string"}'

GET /v1/music/collections/{collectionId}

Read a music collection with its songs

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
collectionIdpathisstring

Response

Status codesDescription / schema
200OK — MusicCollectionDetail
404Unknown collection (music_collection_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/collections/collectionId" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

DELETE /v1/music/collections/{collectionId}

Delete a music collection

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
collectionIdpathisstring

Response

Status codesDescription / schema
204collection removed
404Unknown collection (music_collection_not_found) — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/music/collections/collectionId" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/music/collections/{collectionId}/songs

Append a song to a collection

Idempotent per song: adding the same song twice reports music_collection_conflict.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
collectionIdpathisstring

Request body

FieldTypeRequiredDescription
songCodestringis
positioninteger>= 0
json
{
  "songCode": "string",
  "position": 1
}

Response

Status codesDescription / schema
200OK — MusicCollectionDetail
400Invalid parameter — Error
404Unknown collection or song — Error
409Song already in the collection (music_collection_conflict) — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/music/collections/collectionId/songs" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"songCode":"string","position":1}'

DELETE /v1/music/collections/{collectionId}/songs/{songCode}

Remove a song from a collection

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
collectionIdpathisstring
songCodepathisstring

Response

Status codesDescription / schema
204song removed from the collection
404Collection or membership not found — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/music/collections/collectionId/songs/songCode" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/music/media

Stream signed preview audio

Self-authorizing media endpoint: the signed token carries projectId, songCode and an expiry, so a player fetches it without credentials (the same model as a pre-signed CDN URL). The body is server-rendered 8 kHz/16-bit mono WAV.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
tokenqueryisstring

Response

Status codesDescription / schema
200WAV audio stream
401Invalid or expired media token (music_token_invalid / music_token_expired) — Error
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/media?token=%24RTC_TOKEN" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/music/songs

Search the song library

Agora searchMusic. Matches name / singer / composer / tags within the platform catalog and the caller project library. Empty keyword lists the newest songs.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
keywordquerystring
singerquerystring
tagquerystring
limitqueryinteger1..200,default 50
offsetqueryinteger>= 0,default 0

Response

Status codesDescription / schema
200OK — MusicCollection
400Invalid parameter — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/songs?keyword=value&singer=value&tag=value&limit=50&offset=0" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/music/songs

Register a song in the project library

Adds a tenant-owned song. songCode is allocated by the platform (int64). Attach either playUrl or melody (MIDI notes) so that a playable source exists; a song without one answers music_source_unavailable on the source endpoint instead of returning a fake URL.

Authentication: project credentials (Base64 of customerId:customerSecret)

Request body

FieldTypeRequiredDescription
namestringis
singerstringis
composerstring | null
posterstring | null
releaseTimestringformat date-time
durationSecondsinteger1..86400
pitchTypeenum(0 | 1 | 2)
tagsarray<string>
playUrlstring | nullTenant-owned media URL served as-is.
melodyarray<integer>MIDI note numbers; the preview audio is rendered from them server-side.;up to 128 items
licensestring
json
{
  "name": "demo",
  "singer": "string",
  "composer": "string",
  "poster": "string"
}

Response

Status codesDescription / schema
201the registered song — MusicSongDetail
400Invalid parameter — Error
401Missing/invalid credentials — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/music/songs" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"name":"demo","singer":"string","composer":"string","poster":"string"}'

GET /v1/music/songs/{songCode}

Read one song

Agora getSongSimpleInfo + getInternalSongCode. Returns the metadata plus the signed preview / lyric URLs.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstringpattern ^[1-9][0-9]{0,15}$
uidqueryinteger>= 1

Response

Status codesDescription / schema
200OK — MusicSongDetail
400Invalid parameter — Error
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/songs/songCode?uid=10001" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

PATCH /v1/music/songs/{songCode}

Update a project-library song

Platform-catalog songs are read-only; editing one is rejected with music_invalid_parameter.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring

Request body

FieldTypeRequiredDescription
namestring
singerstring
composerstring | null
posterstring | null
tagsarray<string>
statusenum(active | disabled)
playUrlstring | null
melodyarray<integer>up to 128 items
json
{
  "name": "demo",
  "singer": "string",
  "composer": "string"
}

Response

Status codesDescription / schema
200OK — MusicSongDetail
400Invalid parameter — Error
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/v1/music/songs/songCode" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"name":"demo","singer":"string","composer":"string"}'

DELETE /v1/music/songs/{songCode}

Remove a project-library song

Soft delete (the row keeps its audit trail; deleted_at hides it from every read).

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring

Response

Status codesDescription / schema
204song removed
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/music/songs/songCode" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/music/songs/{songCode}/lyric

Read a song lyric

Agora getLyric. lyricType defaults to lrc.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring
lyricTypequeryenum(lrc | txt | json)default "lrc"

Response

Status codesDescription / schema
200OK — MusicLyric
404Song or lyric variant not found (music_lyric_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/songs/songCode/lyric?lyricType=lrc" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

PUT /v1/music/songs/{songCode}/lyric

Upload a lyric variant

Writes one lyric variant of a project-library song and reflects it in lyricTypes.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring

Request body

FieldTypeRequiredDescription
lyricTypeenum(lrc | txt | json)is
contentstringis
json
{
  "lyricType": "lrc",
  "content": "string"
}

Response

Status codesDescription / schema
200OK — MusicLyric
400Invalid parameter — Error
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/v1/music/songs/songCode/lyric" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"lyricType":"lrc","content":"string"}'

GET /v1/music/songs/{songCode}/preload

Read the preload state

Agora isPreloaded. uid is required when authenticating with project credentials.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring
uidqueryinteger>= 1

Response

Status codesDescription / schema
200OK — object{ songCode, uid, isPreloaded, state, percent }
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/songs/songCode/preload?uid=10001" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/music/songs/{songCode}/preload

Record a preload

Agora preload. Persists the preload facts (state, percent, lyric/pitch URLs) for one device uid; the same call is idempotent.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring

Request body

FieldTypeRequiredDescription
uidinteger>= 1
json
{
  "uid": 1
}

Response

Status codesDescription / schema
201OK — MusicPreloadState
400Invalid parameter — Error
404Unknown song (music_song_not_found) — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/music/songs/songCode/preload" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"uid":1}'

GET /v1/music/songs/{songCode}/source

Resolve a playable source

Agora IMusicPlayer.open(url). Returns the tenant-attached media URL when present, otherwise a signed expiring URL to the server-rendered preview audio. No playable source is reported as 404 music_source_unavailable — never a stand-in URL.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
songCodepathisstring
uidqueryinteger>= 1

Response

Status codesDescription / schema
200OK — MusicPlaySource
404Unknown song (music_song_not_found) or no source (music_source_unavailable) — Error
409Song is disabled (music_song_disabled) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/music/songs/songCode/source?uid=10001" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/music/tokens

Mint a Music Content Center access token

Issues an mcc1.<payload>.<signature> bearer token bound to the authenticated project, one uid, the scopes music.read + music.cache.write and an expiry. SDK callers put it in MusicContentCenterConfiguration.token and renew it with the same call.

Authentication: project credentials (Base64 of customerId:customerSecret)

Request body

FieldTypeRequiredDescription
uidintegerisMCC uid (Agora mccUid); scoped to this project only.;1..2147483647
ttlSecondsinteger60..86400
json
{
  "uid": 1,
  "ttlSeconds": 1
}

Response

Status codesDescription / schema
201the signed access token — MusicAccessToken
400Invalid parameter — Error
401Missing/invalid credentials — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/music/tokens" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"uid":1,"ttlSeconds":1}'

Schemas used by this group

Error — object{ code, message, reason, sdkCode, details }
FieldTypeRequiredDescription
codestringisstable machine code, see errors.json
messagestringis
reasonstring
sdkCodeintegerAgora-aligned client error number
detailsobject
Music — object
FieldTypeRequiredDescription
songCodeintegerisint64 song code (JS-safe range);>= 1
namestringis
singerstringis
composerstring | nullis
posterstring | nullis
releaseTimestringisformat date-time
durationSecondsnumberis>= 0
typeintegeris1 = original, 2 = instrumental
pitchTypeenum(0 | 1 | 2)is
lyricTypesarray<enum(lrc | txt | json)>is
audioTracksarray<object{ index, language, bitrateKbps }>is
tagsarray<string>is
climaxSegmentsarray<object{ startMs, endMs }>is
MusicAccessToken — object{ token, appId, uid, scopes, expiresAt }
FieldTypeRequiredDescription
tokenstringismcc1.<payload>.<signature> bearer token.
appIdstringis
uidintegeris>= 1
scopesarray<enum(music.read | music.cache.write)>is
expiresAtstringisformat date-time
MusicAudioTrack — object{ index, language, bitrateKbps }
FieldTypeRequiredDescription
indexintegeris>= 0
languagestringis
bitrateKbpsintegeris>= 1
MusicCacheInfo — object{ songCode, status, sizeBytes, cacheUri, updatedAt }
FieldTypeRequiredDescription
songCodeintegeris>= 1
statusenum(cached | caching)is
sizeBytesintegeris>= 0
cacheUristring | nullis
updatedAtstringisformat date-time
MusicCachePolicy — object{ maxCacheFileCount, maxCacheFileSizeBytes, enableAutoRemoveCache, cacheDir, updatedAt }
FieldTypeRequiredDescription
maxCacheFileCountintegeris>= 1
maxCacheFileSizeBytesintegeris>= 1
enableAutoRemoveCachebooleanis
cacheDirstringis
updatedAtstringisformat date-time
MusicChartDetail — object{ chart, collection }
FieldTypeRequiredDescription
chartobjectis
collectionobject{ count, total, limit, offset, songs }is
MusicChartInfo — object
FieldTypeRequiredDescription
chartIdintegeris>= 1
namestringis
typeintegeris
descriptionstring
sortOrderintegeris
songCountintegeris>= 0
updatedAtstringformat date-time
MusicClimaxSegment — object{ startMs, endMs }
FieldTypeRequiredDescription
startMsintegeris>= 0
endMsintegeris>= 0
MusicCollection — object{ count, total, limit, offset, songs }
FieldTypeRequiredDescription
countintegeris>= 0
totalintegeris>= 0
limitintegeris>= 1
offsetintegeris>= 0
songsarray<object>is
MusicCollectionDetail — object
FieldTypeRequiredDescription
collectionIdstringis
namestringis
descriptionstring
songCountintegeris>= 0
createdAtstringformat date-time
updatedAtstringformat date-time
songsarray<object>is
MusicCollectionRecord — object{ collectionId, name, description, songCount, createdAt, updatedAt }
FieldTypeRequiredDescription
collectionIdstringis
namestringis
descriptionstringis
songCountintegeris>= 0
createdAtstringisformat date-time
updatedAtstringisformat date-time
MusicLyric — object{ songCode, lyricType, content, updatedAt }
FieldTypeRequiredDescription
songCodeintegeris>= 1
lyricTypeenum(lrc | txt | json)isLyric payload format (Agora lyricType).
contentstringis
updatedAtstringisformat date-time
MusicLyricType — enum(lrc | txt | json)

No field declarations.

MusicPlaySource — object{ songCode, playUrl, format, durationSeconds, audioTracks, expiresAt }
FieldTypeRequiredDescription
songCodeintegeris>= 1
playUrlstringisSigned absolute or relative playback URL.
formatstringis
durationSecondsnumberis>= 0
audioTracksarray<object{ index, language, bitrateKbps }>is
expiresAtstringisformat date-time
MusicPreloadState — object
FieldTypeRequiredDescription
songCodeintegeris>= 1
uidintegeris>= 1
stateenum(idle | preloading | success | failed)is
percentintegeris0..100
lyricUrlstring | nullis
pitchUrlstring | nullis
updatedAtstringisformat date-time
MusicSongDetail — object
FieldTypeRequiredDescription
songCodeintegeris>= 1
namestringis
singerstringis
composerstring | null
posterstring | null
releaseTimestringformat date-time
durationSecondsnumber>= 0
typeinteger
pitchTypeenum(0 | 1 | 2)
lyricTypesarray<enum(lrc | txt | json)>
audioTracksarray<object{ index, language, bitrateKbps }>
tagsarray<string>
climaxSegmentsarray<object{ startMs, endMs }>
projectIdstring
sourceenum(platform | project)is
statusenum(active | disabled)is
previewUrlstring | nullisSigned, expiring preview URL (relative path or tenant-owned absolute URL).
lyricUrlstring | null
pitchUrlstring | null
internalSongCodeintegeris
playUrlstring | nullTenant-attached media URL, if any.
licensestring
createdAtstringformat date-time
updatedAtstringformat date-time

Generated by the documentation build pipeline · 2026-11-05 14:43:28 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.