Music Promotion on TikTok
Use TokPortal API to create country-specific TikTok bundles, configure videos with captions and TikTok sound URLs, publish, and compare analytics.
Music Promotion on TikTok
Labels and artists can use TokPortal to organize TikTok content workflows by country. The API can create bundles, configure videos, include a TikTok sound URL, publish, and read analytics. It does not guarantee trending, virality, sound attribution outcomes, or reach.
Create a music-focused bundle
curl -X POST https://app.tokportal.com/api/ext/bundles \
-H "X-API-Key: $TOKPORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"bundle_type": "account_and_videos",
"platform": "tiktok",
"country": "US",
"videos_quantity": 10,
"title": "Track seed - US",
"wants_advanced_warming": true,
"advanced_warming_terms": [
"new music friday",
"dance challenge",
"song lyrics",
"indie pop",
"studio session",
"playlist recommendations"
],
"external_ref": "track-summer-vibes-us"
}'
wants_advanced_warming: true is mandatory whenever advanced_warming_terms (3-30 targets, count a multiple of 3, each 2-50 characters) or advanced_warming_terms_count is sent; without it the call fails with ADVANCED_WARMING_FLAG_REQUIRED and nothing is charged. At the standard rate of 5 credits per target, the 6 targets above are 30 credits, so this bundle is 32 for the account + 10 x 2 for the video slots + 30 = 82 credits.
Reference: Create Bundle
Configure videos with a TikTok sound URL
curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_abc123/videos/batch \
-H "X-API-Key: $TOKPORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"videos": [
{
"position": 1,
"video_type": "video",
"description": "Studio clip from the new track #newmusic",
"target_publish_date": "2026-06-05",
"video_url": "https://cdn.example.com/music/studio-clip.mp4",
"tiktok_sound_url": "https://www.tiktok.com/music/example-sound-123456789",
"external_ref": "summer-vibes-studio-us"
},
{
"position": 2,
"video_type": "video",
"description": "Dance idea for the chorus #dance",
"target_publish_date": "2026-06-07",
"video_url": "https://cdn.example.com/music/dance-idea.mp4",
"tiktok_sound_url": "https://www.tiktok.com/music/example-sound-123456789",
"external_ref": "summer-vibes-dance-us"
}
]
}'
For TikTok videos, tiktok_sound_url is optional. For TikTok carousels, it is required. See the field reference in Configure Videos.
target_publish_date cannot be earlier than today + 3 days while the account is still being created, or today + 1 once it is delivered or when the bundle runs on an existing account, and a bundle takes at most 3 videos per day — so a 10-slot seeding plan spans at least 4 dates.
Roll out by country
POST /bundles/bulk handles one country per request:
for country in US UK FR DE; do
curl -X POST https://app.tokportal.com/api/ext/bundles/bulk \
-H "X-API-Key: $TOKPORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"accounts_count\": 2,
\"upload_accounts_count\": 1,
\"platforms\": [\"tiktok\"],
\"country\": \"$country\",
\"videos_per_account\": 8,
\"wants_advanced_warming\": true,
\"advanced_warming_terms\": [\"new music friday\", \"dance challenge\", \"song lyrics\"],
\"external_ref\": \"track-summer-vibes-$country\"
}"
done
country is the code from GET /countries (the United States is USA and the United Kingdom is UK; US and GB are accepted aliases); a country name fails with INVALID_COUNTRY. Warming targets are charged per account, so the 3 targets are 3 x 5 = 15 credits on each of the 2 accounts: (2 x 32) + (2 x 15) + (1 x 8 x 2) = 110 credits per country batch.
Reference: Create Bulk
Content ideas that fit the API
- Lyric clips uploaded as
video_url - Dance prompts with
tiktok_sound_url - Behind-the-scenes videos
- Short artist messages localized by country
- Carousel posts where supported by the video configuration contract
Track performance
curl -X GET "https://app.tokportal.com/api/ext/accounts/acc_abc123/analytics/videos?sort_by=views&sort_order=desc" \
-H "X-API-Key: $TOKPORTAL_API_KEY"
Compare markets with the same metric definitions from Analytics. Treat analytics as measurement, not as a guarantee of future reach.
Related docs: Media Upload, Configure Videos, Analytics, MCP Server.