Music Content Center
Song catalogue, charts, collections, lyrics, preview sources and cache metadata backing the SDK music capability.
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.
| Method | Path | Summary |
|---|---|---|
GET | /v1/music/cache-policy | Read the project cache policy |
PUT | /v1/music/cache-policy | Update the project cache policy |
GET | /v1/music/caches | List player caches |
DELETE | /v1/music/caches | Remove all cache entries |
PUT | /v1/music/caches/{songCode} | Report a cache entry |
DELETE | /v1/music/caches/{songCode} | Remove one cache entry |
GET | /v1/music/charts | List music charts |
GET | /v1/music/charts/{chartId} | Read one music chart with a page of its songs |
GET | /v1/music/collections | List project music collections (playlists) |
POST | /v1/music/collections | Create 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}/songs | Append a song to a collection |
DELETE | /v1/music/collections/{collectionId}/songs/{songCode} | Remove a song from a collection |
GET | /v1/music/media | Stream signed preview audio |
GET | /v1/music/songs | Search the song library |
POST | /v1/music/songs | Register 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}/lyric | Read a song lyric |
PUT | /v1/music/songs/{songCode}/lyric | Upload a lyric variant |
GET | /v1/music/songs/{songCode}/preload | Read the preload state |
POST | /v1/music/songs/{songCode}/preload | Record a preload |
GET | /v1/music/songs/{songCode}/source | Resolve a playable source |
POST | /v1/music/tokens | Mint 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 codes | Description / schema |
|---|---|
200 | OK — MusicCachePolicy |
Example call
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
| Field | Type | Required | Description |
|---|---|---|---|
maxCacheFileCount | integer | 1..10000 | |
maxCacheFileSizeBytes | integer | 1024..10737418240 | |
enableAutoRemoveCache | boolean | ||
cacheDir | string |
{
"maxCacheFileCount": 1,
"maxCacheFileSizeBytes": 1,
"enableAutoRemoveCache": true
}Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicCachePolicy |
400 | Invalid parameter — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
uid | query | integer | >= 1 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — object{ count, caches } |
400 | Invalid parameter — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
uid | query | integer | >= 1 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — object{ removed } |
400 | Invalid parameter — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
uid | integer | >= 1 | |
status | enum(cached | caching) | ||
sizeBytes | integer | >= 0 | |
cacheUri | string | null |
{
"uid": 1,
"status": "cached",
"sizeBytes": 1
}Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicCacheInfo |
400 | Invalid parameter — Error |
409 | Cache quota exceeded (music_cache_quota_exceeded) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string | |
uid | query | integer | >= 1 |
Response
| Status codes | Description / schema |
|---|---|
204 | cache entry removed |
404 | Song not cached (music_cache_not_found) — Error |
Example call
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 codes | Description / schema |
|---|---|
200 | OK — object{ charts } |
401 | Missing/invalid credentials — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
chartId | path | is | string | |
limit | query | integer | 1..200,default 50 | |
offset | query | integer | >= 0,default 0 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicChartDetail |
400 | Invalid parameter — Error |
404 | Unknown chart (music_chart_not_found) — Error |
Example call
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 codes | Description / schema |
|---|---|
200 | OK — object{ collections } |
Example call
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
| Field | Type | Required | Description |
|---|---|---|---|
name | string | is | |
description | string |
{
"name": "demo",
"description": "string"
}Response
| Status codes | Description / schema |
|---|---|
201 | OK — MusicCollectionRecord |
400 | Invalid parameter — Error |
409 | Duplicate collection name (music_collection_conflict) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
collectionId | path | is | string |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicCollectionDetail |
404 | Unknown collection (music_collection_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
collectionId | path | is | string |
Response
| Status codes | Description / schema |
|---|---|
204 | collection removed |
404 | Unknown collection (music_collection_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
collectionId | path | is | string |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
songCode | string | is | |
position | integer | >= 0 |
{
"songCode": "string",
"position": 1
}Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicCollectionDetail |
400 | Invalid parameter — Error |
404 | Unknown collection or song — Error |
409 | Song already in the collection (music_collection_conflict) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
collectionId | path | is | string | |
songCode | path | is | string |
Response
| Status codes | Description / schema |
|---|---|
204 | song removed from the collection |
404 | Collection or membership not found — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
token | query | is | string |
Response
| Status codes | Description / schema |
|---|---|
200 | WAV audio stream |
401 | Invalid or expired media token (music_token_invalid / music_token_expired) — Error |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
keyword | query | string | ||
singer | query | string | ||
tag | query | string | ||
limit | query | integer | 1..200,default 50 | |
offset | query | integer | >= 0,default 0 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicCollection |
400 | Invalid parameter — Error |
Example call
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
| Field | Type | Required | Description |
|---|---|---|---|
name | string | is | |
singer | string | is | |
composer | string | null | ||
poster | string | null | ||
releaseTime | string | format date-time | |
durationSeconds | integer | 1..86400 | |
pitchType | enum(0 | 1 | 2) | ||
tags | array<string> | ||
playUrl | string | null | Tenant-owned media URL served as-is. | |
melody | array<integer> | MIDI note numbers; the preview audio is rendered from them server-side.;up to 128 items | |
license | string |
{
"name": "demo",
"singer": "string",
"composer": "string",
"poster": "string"
}Response
| Status codes | Description / schema |
|---|---|
201 | the registered song — MusicSongDetail |
400 | Invalid parameter — Error |
401 | Missing/invalid credentials — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string | pattern ^[1-9][0-9]{0,15}$ |
uid | query | integer | >= 1 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicSongDetail |
400 | Invalid parameter — Error |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ||
singer | string | ||
composer | string | null | ||
poster | string | null | ||
tags | array<string> | ||
status | enum(active | disabled) | ||
playUrl | string | null | ||
melody | array<integer> | up to 128 items |
{
"name": "demo",
"singer": "string",
"composer": "string"
}Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicSongDetail |
400 | Invalid parameter — Error |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string |
Response
| Status codes | Description / schema |
|---|---|
204 | song removed |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string | |
lyricType | query | enum(lrc | txt | json) | default "lrc" |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicLyric |
404 | Song or lyric variant not found (music_lyric_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
lyricType | enum(lrc | txt | json) | is | |
content | string | is |
{
"lyricType": "lrc",
"content": "string"
}Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicLyric |
400 | Invalid parameter — Error |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string | |
uid | query | integer | >= 1 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — object{ songCode, uid, isPreloaded, state, percent } |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
uid | integer | >= 1 |
{
"uid": 1
}Response
| Status codes | Description / schema |
|---|---|
201 | OK — MusicPreloadState |
400 | Invalid parameter — Error |
404 | Unknown song (music_song_not_found) — Error |
Example call
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
| Name | Location | Required | Type | Description |
|---|---|---|---|---|
songCode | path | is | string | |
uid | query | integer | >= 1 |
Response
| Status codes | Description / schema |
|---|---|
200 | OK — MusicPlaySource |
404 | Unknown song (music_song_not_found) or no source (music_source_unavailable) — Error |
409 | Song is disabled (music_song_disabled) — Error |
Example call
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
| Field | Type | Required | Description |
|---|---|---|---|
uid | integer | is | MCC uid (Agora mccUid); scoped to this project only.;1..2147483647 |
ttlSeconds | integer | 60..86400 |
{
"uid": 1,
"ttlSeconds": 1
}Response
| Status codes | Description / schema |
|---|---|
201 | the signed access token — MusicAccessToken |
400 | Invalid parameter — Error |
401 | Missing/invalid credentials — Error |
Example call
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 }
| Field | Type | Required | Description |
|---|---|---|---|
code | string | is | stable machine code, see errors.json |
message | string | is | |
reason | string | ||
sdkCode | integer | Agora-aligned client error number | |
details | object |
Music — object
| Field | Type | Required | Description |
|---|---|---|---|
songCode | integer | is | int64 song code (JS-safe range);>= 1 |
name | string | is | |
singer | string | is | |
composer | string | null | is | |
poster | string | null | is | |
releaseTime | string | is | format date-time |
durationSeconds | number | is | >= 0 |
type | integer | is | 1 = original, 2 = instrumental |
pitchType | enum(0 | 1 | 2) | is | |
lyricTypes | array<enum(lrc | txt | json)> | is | |
audioTracks | array<object{ index, language, bitrateKbps }> | is | |
tags | array<string> | is | |
climaxSegments | array<object{ startMs, endMs }> | is |
MusicAccessToken — object{ token, appId, uid, scopes, expiresAt }
| Field | Type | Required | Description |
|---|---|---|---|
token | string | is | mcc1.<payload>.<signature> bearer token. |
appId | string | is | |
uid | integer | is | >= 1 |
scopes | array<enum(music.read | music.cache.write)> | is | |
expiresAt | string | is | format date-time |
MusicAudioTrack — object{ index, language, bitrateKbps }
| Field | Type | Required | Description |
|---|---|---|---|
index | integer | is | >= 0 |
language | string | is | |
bitrateKbps | integer | is | >= 1 |
MusicCacheInfo — object{ songCode, status, sizeBytes, cacheUri, updatedAt }
| Field | Type | Required | Description |
|---|---|---|---|
songCode | integer | is | >= 1 |
status | enum(cached | caching) | is | |
sizeBytes | integer | is | >= 0 |
cacheUri | string | null | is | |
updatedAt | string | is | format date-time |
MusicCachePolicy — object{ maxCacheFileCount, maxCacheFileSizeBytes, enableAutoRemoveCache, cacheDir, updatedAt }
| Field | Type | Required | Description |
|---|---|---|---|
maxCacheFileCount | integer | is | >= 1 |
maxCacheFileSizeBytes | integer | is | >= 1 |
enableAutoRemoveCache | boolean | is | |
cacheDir | string | is | |
updatedAt | string | is | format date-time |
MusicChartDetail — object{ chart, collection }
| Field | Type | Required | Description |
|---|---|---|---|
chart | object | is | |
collection | object{ count, total, limit, offset, songs } | is |
MusicChartInfo — object
| Field | Type | Required | Description |
|---|---|---|---|
chartId | integer | is | >= 1 |
name | string | is | |
type | integer | is | |
description | string | ||
sortOrder | integer | is | |
songCount | integer | is | >= 0 |
updatedAt | string | format date-time |
MusicClimaxSegment — object{ startMs, endMs }
| Field | Type | Required | Description |
|---|---|---|---|
startMs | integer | is | >= 0 |
endMs | integer | is | >= 0 |
MusicCollection — object{ count, total, limit, offset, songs }
| Field | Type | Required | Description |
|---|---|---|---|
count | integer | is | >= 0 |
total | integer | is | >= 0 |
limit | integer | is | >= 1 |
offset | integer | is | >= 0 |
songs | array<object> | is |
MusicCollectionDetail — object
| Field | Type | Required | Description |
|---|---|---|---|
collectionId | string | is | |
name | string | is | |
description | string | ||
songCount | integer | is | >= 0 |
createdAt | string | format date-time | |
updatedAt | string | format date-time | |
songs | array<object> | is |
MusicCollectionRecord — object{ collectionId, name, description, songCount, createdAt, updatedAt }
| Field | Type | Required | Description |
|---|---|---|---|
collectionId | string | is | |
name | string | is | |
description | string | is | |
songCount | integer | is | >= 0 |
createdAt | string | is | format date-time |
updatedAt | string | is | format date-time |
MusicLyric — object{ songCode, lyricType, content, updatedAt }
| Field | Type | Required | Description |
|---|---|---|---|
songCode | integer | is | >= 1 |
lyricType | enum(lrc | txt | json) | is | Lyric payload format (Agora lyricType). |
content | string | is | |
updatedAt | string | is | format date-time |
MusicLyricType — enum(lrc | txt | json)
No field declarations.
MusicPlaySource — object{ songCode, playUrl, format, durationSeconds, audioTracks, expiresAt }
| Field | Type | Required | Description |
|---|---|---|---|
songCode | integer | is | >= 1 |
playUrl | string | is | Signed absolute or relative playback URL. |
format | string | is | |
durationSeconds | number | is | >= 0 |
audioTracks | array<object{ index, language, bitrateKbps }> | is | |
expiresAt | string | is | format date-time |
MusicPreloadState — object
| Field | Type | Required | Description |
|---|---|---|---|
songCode | integer | is | >= 1 |
uid | integer | is | >= 1 |
state | enum(idle | preloading | success | failed) | is | |
percent | integer | is | 0..100 |
lyricUrl | string | null | is | |
pitchUrl | string | null | is | |
updatedAt | string | is | format date-time |
MusicSongDetail — object
| Field | Type | Required | Description |
|---|---|---|---|
songCode | integer | is | >= 1 |
name | string | is | |
singer | string | is | |
composer | string | null | ||
poster | string | null | ||
releaseTime | string | format date-time | |
durationSeconds | number | >= 0 | |
type | integer | ||
pitchType | enum(0 | 1 | 2) | ||
lyricTypes | array<enum(lrc | txt | json)> | ||
audioTracks | array<object{ index, language, bitrateKbps }> | ||
tags | array<string> | ||
climaxSegments | array<object{ startMs, endMs }> | ||
projectId | string | ||
source | enum(platform | project) | is | |
status | enum(active | disabled) | is | |
previewUrl | string | null | is | Signed, expiring preview URL (relative path or tenant-owned absolute URL). |
lyricUrl | string | null | ||
pitchUrl | string | null | ||
internalSongCode | integer | is | |
playUrl | string | null | Tenant-attached media URL, if any. | |
license | string | ||
createdAt | string | format date-time | |
updatedAt | string | format date-time |