The MCP that creates real TikTok accounts in any country - TokPortal

Published: (February 27, 2026 at 11:37 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

Overview

Most TikTok “automation” tools spin up a headless browser, route through a proxy, and hope the account isn’t banned within 48 hours.
TokPortal takes a different approach: a network of real operators in 16+ countries uses actual phones on local networks. The entire workflow is exposed via a REST API, so you can create genuine TikTok accounts and publish videos programmatically.

API Basics

  • Base URL: https://app.tokportal.com/api/ext
  • Authentication: Bearer token generated from the Developer Portal
import os
import requests

API_KEY = os.environ["TOKPORTAL_API_KEY"]
BASE = "https://app.tokportal.com/api/ext"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

Bundles

A bundle groups an account with a set of video slots. Create a bundle, upload videos, set metadata, then publish.

resp = requests.post(f"{BASE}/bundles", headers=HEADERS, json={
    "bundle_type": "account_and_videos",
    "platform": "tiktok",
    "country": "US",               # change to BR, DE, ID, GB, FR, etc.
    "videos_quantity": 3,
    "title": "My first campaign",
})
bundle = resp.json()["data"]
print(f"Bundle {bundle['bundle_id']} created — {bundle['status']}")

Uploading a Video

TokPortal provides presigned URLs, eliminating multipart‑form hassles.

# Get a presigned upload URL
upload = requests.post(f"{BASE}/upload/video", headers=HEADERS, json={
    "filename": "promo.mp4",
    "content_type": "video/mp4",
    "bundle_id": bundle["bundle_id"],
}).json()["data"]

# PUT the file directly (no auth header needed)
with open("promo.mp4", "rb") as f:
    requests.put(upload["upload_url"], data=f,
                 headers={"Content-Type": "video/mp4"})

video_url = upload["public_url"]

Setting Video Metadata

from datetime import datetime, timedelta

publish_date = (datetime.utcnow() + timedelta(days=5)).strftime("%Y-%m-%d")

requests.put(
    f"{BASE}/bundles/{bundle['bundle_id']}/videos/1",
    headers=HEADERS,
    json={
        "video_type": "video",
        "description": "This is wild 🔥 #fyp #tech",
        "target_publish_date": publish_date,
        "video_url": video_url,
    },
)

Publishing the Bundle

requests.post(
    f"{BASE}/bundles/{bundle['bundle_id']}/publish",
    headers=HEADERS,
)

Once published, a real operator in the selected country posts the video from their device on the scheduled date. Analytics are available via the API.

Retrieving Analytics

analytics = requests.get(
    f"{BASE}/accounts/{bundle['account_id']}/analytics",
    headers=HEADERS,
).json()["data"]

print(f"Followers: {analytics['followers_count']}")
print(f"Views: {analytics['total_views']}")
print(f"Engagement: {analytics['average_engagement_rate']}%")

Common Use Cases

  • Music labels: Create accounts in 5–10 markets, post a new track, and identify organic traction before spending on ads.
  • DTC brands: Seed 10–20 organic TikTok accounts in a new country, then launch paid campaigns.
  • Agencies: Manage 50+ client campaigns across different countries via a single n8n workflow. See the n8n integration guide.
  • AI agents: Plug TokPortal into Claude, Cursor, or other agents to automate account creation and posting.

Bulk Creation

For large‑scale deployments, use the bulk endpoint:

resp = requests.post(f"{BASE}/bundles/bulk", headers=HEADERS, json={
    "bundles": [
        {"platform": "tiktok", "country": "US", "videos_quantity": 3,
         "accounts_count": 10, "title": "US wave"},
        {"platform": "tiktok", "country": "BR", "videos_quantity": 3,
         "accounts_count": 10, "title": "Brazil wave"},
        {"platform": "tiktok", "country": "GB", "videos_quantity": 3,
         "accounts_count": 5, "title": "UK wave"},
    ]
})
# Creates 25 accounts across 3 countries in one call

Results to Date

  • 35,000+ accounts created
  • 2 B+ total views generated
  • 82 niches covered
  • 16 countries supported
  • Average engagement rate: 6–8 % (varies by niche & country)

The high retention stems from using real accounts—no shadow‑bans, no flags, just normal TikTok behavior.

Further Resources

If you’d like a personalized demo, schedule a call with the TokPortal team. Feel free to ask questions in the comments—the creator is happy to share edge‑case insights.

0 views
Back to Blog

Related posts

Read more »