DTC Multi-Market Launch
Plan a DTC launch across multiple countries with TokPortal: one bulk request per country, localized video configuration, publishing, webhooks, and analytics.
DTC Multi-Market Launch
DTC brands can use TokPortal to coordinate country-specific TikTok and Instagram workflows. The current API pattern is explicit: create bundles per market, configure localized content, publish each bundle, then compare analytics.
There is no countries array in the public bulk endpoint. Multi-market launches loop over countries.
1. Validate target countries
curl -X GET https://app.tokportal.com/api/ext/countries \
-H "X-API-Key: $TOKPORTAL_API_KEY"
Use the enabled country codes from the response. Most are ISO alpha-2 (FR, DE, BR), but the United States is USA and the United Kingdom is UK; the aliases US and GB are accepted and resolved to those. A full country name is rejected with INVALID_COUNTRY.
2. Create one bulk batch per country
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\", \"instagram\"],
\"country\": \"$country\",
\"videos_per_account\": 6,
\"wants_moderation\": true,
\"wants_advanced_warming\": true,
\"advanced_warming_terms\": [\"product demo\", \"honest review\", \"daily lifestyle vlog\"],
\"external_ref\": \"spring-launch-$country\"
}"
done
For each country, this creates 2 bundles per platform. One bundle per platform includes video slots.
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; the whole batch is rejected with ADVANCED_WARMING_FLAG_REQUIRED otherwise, and nothing is charged. Targets are charged per account at the standard rate of 5 credits each, so the 3 targets are 15 credits on each of the 4 accounts: (4 x 32) + (4 x 15) + (2 x 6 x 2) = 212 credits per country batch, before moderation.
Reference: Create Bulk
3. Configure localized content
Store your localized copy in your CMS or campaign database, then configure the correct bundle for each market:
curl -X PUT https://app.tokportal.com/api/ext/bundles/bnd_us_123/videos/batch \
-H "X-API-Key: $TOKPORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"videos": [
{
"position": 1,
"video_type": "video",
"description": "New drop is live. #newarrival #launch",
"target_publish_date": "2026-06-05",
"video_url": "https://cdn.example.com/launch/hero.mp4",
"external_ref": "spring-launch-us-hero"
}
]
}'
For an Instagram Reel, include instagram_content_type: "reel":
{
"position": 1,
"video_type": "video",
"instagram_content_type": "reel",
"description": "Nouvelle collection disponible. #nouveaute",
"target_publish_date": "2026-06-06",
"video_url": "https://cdn.example.com/launch/hero-fr.mp4",
"external_ref": "spring-launch-fr-hero"
}
Reference: Configure Videos
4. Publish per bundle
Publish each configured bundle:
curl -X POST https://app.tokportal.com/api/ext/bundles/bnd_us_123/publish \
-H "X-API-Key: $TOKPORTAL_API_KEY"
Before publishing at scale, check readiness:
curl -X GET https://app.tokportal.com/api/ext/bundles/bnd_us_123/publish-readiness \
-H "X-API-Key: $TOKPORTAL_API_KEY"
Reference: Publish & Unpublish
5. Monitor and compare
Use webhooks for lifecycle updates:
curl -X POST https://app.tokportal.com/api/ext/webhooks \
-H "X-API-Key: $TOKPORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/tokportal",
"events": ["bundle.published", "account.finalized", "video.finalized"],
"description": "DTC launch monitor"
}'
Use analytics after delivery:
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"
References: Webhooks, Analytics
Launch checklist
- Keep one internal
external_refper country/platform campaign. - Store returned bundle IDs immediately.
- Configure account profiles before publishing.
- Use public URLs or Media Upload for video assets.
- Localize captions manually; the API does not translate copy for you.
- Schedule no earlier than today + 3 days while an account is still being created (today + 1 once it is delivered or on an existing account), and no more than 3 videos per day per bundle.
- Review delivered videos within about 72 hours; anything left in review auto-finalizes regardless of
auto_finalize_videos. - Split larger launches across multiple requests and respect Rate Limits.
Related guides: Bulk TikTok Account Creation, UGC Distribution, Agency Management.