The Endpoint
GET /api/v1/misc/tiktok/cml/trending-list
Returns up to 100 trending tracks. Filter by genre and time window.
Query Parameters
Response Shape
The response is a flat array of track objects.Supported Genres
A sample of what’s available:POP, ROCK, LATIN, METAL, ELECTRONIC, HIP_HOP/RAP, ALTERNATIVE/INDIE, R&B/SOUL, COUNTRY, CLASSICAL, JAZZ, CHILL_BEATS, CHILLOUT, LO-FI, EDM, HOUSE, TECHNO, K-POP, J-POP, DANCE_POP, INDIE_POP, and more. Check the Swagger spec for the full enum.
Using Music in Posts
When creating a post withdata.TIKTOK.musicSoundInfo, you pass the song_clip_id as musicSoundId. That’s it for the ID part.
Video vs Image: Different Rules
For IMAGE posts, pass only
musicSoundId. If you send musicSoundVolume, musicSoundStart, etc., TikTok’s API will reject the request. We strip those fields server-side for IMAGE type so you don’t have to remember. If you’re building a form, don’t show volume/trim controls for photo posts.Video: Volume & Trim
For videos, you get real control:musicSoundVolume(0-100): How loud the music is.videoOriginalSoundVolume(0-100): How loud the original video audio (your voice, etc.) is.musicSoundStart/musicSoundEnd(ms): Trim the track. Start at 100ms, end at 30000ms. IfmusicSoundEndis 0 or less than or equal tomusicSoundStart, we don’t send it (TikTok would reject it). Omit both for the full track.
The Draft Gotcha
Here’s the thing: draft uploads don’t persist your music choice. When you setuploadToDraft: true, TikTok uploads the post to the creator’s drafts. Success. But TikTok’s draft flow doesn’t store which track you picked.
INBOX status (Draft Success)
When you upload as draft, TikTok sometimes returns a different status instead ofPUBLISH_COMPLETE. That means: “we put it in the creator’s inbox as a draft, all good.” We treat that as success when uploadToDraft is true. If you’re not using drafts and you get this, something odd happened. Reach out.
Quick Reference
Need the full request/response schema? Check Swagger. The CML endpoint is under misc/tiktok.