The MCP that creates real TikTok accounts in any country - TokPortal
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
- Full API reference: https://developers.tokportal.com
- Python quick‑start guide (gets you from zero to a published TikTok in ~10 minutes)
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.