Source: https://developers.tokportal.com/use-cases/industry/tiktok-shop-product-seeding/
Markdown: https://developers.tokportal.com/use-cases/industry/tiktok-shop-product-seeding.md

# Product Seeding Workflows for TikTok

E-commerce teams can use TokPortal to coordinate product demo, unboxing, and UGC-style TikTok workflows. The current public video configuration API supports captions, publish dates, media URLs, TikTok sound URLs, carousels, and moderation/warming options.

TokPortal does not currently document a public API field for native TikTok Shop product tagging. If your workflow requires product tags, manage that separately from the current TokPortal public API.

## Create a product-focused bundle

```bash
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": 8,
    "title": "Skincare demo - US",
    "wants_advanced_warming": true,
    "advanced_warming_terms": [
      "skincare routine",
      "serum review",
      "beauty unboxing",
      "glass skin",
      "sensitive skin tips",
      "clean beauty haul"
    ],
    "wants_moderation": true,
    "moderation_notice": "Check for required disclosure language and avoid unsupported claims.",
    "external_ref": "skincare-demo-us"
  }'
```

`wants_advanced_warming: true` must accompany `advanced_warming_terms` (3-30 targets, count a multiple of 3, each 2-50 characters) or `advanced_warming_terms_count`; the API never infers it and rejects the call with `ADVANCED_WARMING_FLAG_REQUIRED`. At the standard rate of 5 credits per target, the 6 targets above are 30 credits, so this bundle is 32 for the account + 8 x 2 for the video slots + 30 = 78 credits before moderation.

Reference: [Create Bundle](https://developers.tokportal.com/create-bundle)

## Configure product content

```bash
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": "Unboxing the new serum. Results vary. #skincare #unboxing",
        "target_publish_date": "2026-06-05",
        "video_url": "https://cdn.example.com/skincare/unboxing-01.mp4",
        "external_ref": "serum-unboxing-us-01"
      },
      {
        "position": 2,
        "video_type": "video",
        "description": "How it fits into a morning routine #grwm",
        "target_publish_date": "2026-06-07",
        "video_url": "https://cdn.example.com/skincare/routine-01.mp4",
        "external_ref": "serum-routine-us-01"
      }
    ]
  }'
```

Publish dates start at today + 3 days while the account is still being created, and at today + 1 once it is delivered or when the bundle runs on an existing account. Keep to 3 videos per day per bundle at most. Delivered videos sit in review and auto-finalize about 72 hours later, regardless of `auto_finalize_videos`, so review seeding content inside that window.

Reference: [Configure Videos](https://developers.tokportal.com/configure-videos)

## Scale across buyer markets

Create one bulk batch per country:

```bash
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\": 6,
      \"wants_moderation\": true,
      \"wants_advanced_warming\": true,
      \"advanced_warming_terms\": [\"skincare routine\", \"beauty unboxing\", \"clean beauty haul\"],
      \"external_ref\": \"skincare-demo-$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 above are 3 x 5 = 15 credits on each of the 2 accounts per country: (2 x 32) + (2 x 15) + (1 x 6 x 2) = 106 credits per country batch.

Reference: [Create Bulk](https://developers.tokportal.com/create-bulk)

## Content that fits the current API

- Product demos using `video_url`
- Unboxings and first impressions
- Before/after-style content only where substantiated and compliant
- UGC reposts where you have usage rights
- Localized captions per country

## Measure results

```bash
curl -X GET "https://app.tokportal.com/api/ext/accounts/acc_abc123/analytics" \
  -H "X-API-Key: $TOKPORTAL_API_KEY"
```

For post-level rows:

```bash
curl -X GET "https://app.tokportal.com/api/ext/accounts/acc_abc123/analytics/videos" \
  -H "X-API-Key: $TOKPORTAL_API_KEY"
```

Reference: [Analytics](https://developers.tokportal.com/analytics)

Related docs: [Media Upload](https://developers.tokportal.com/media-upload), [CSV Import](https://developers.tokportal.com/csv-import), [Webhooks](https://developers.tokportal.com/webhooks), [UGC Distribution](https://developers.tokportal.com/use-cases/industry/ugc-distribution-at-scale).
