TokPortal + Make - TikTok Workflow via HTTP
Use Make HTTP modules to call TokPortal: create bundles, configure account/video fields, publish, and monitor statuses.
TokPortal + Make
TokPortal does not currently ship a native Make app. Use Make's HTTP module to call the REST API with X-API-Key.
The realistic flow is:
- Trigger from a row, webhook, schedule, or Airtable record.
- Create a TokPortal bundle.
- Configure the required account fields.
- Configure one or more video slots.
- Publish the bundle.
- Optionally monitor with webhooks or status polling.
Prerequisites
- A TokPortal account with credits
- A TokPortal API key from the Developer Portal
- A Make account
- Public media URLs or files uploaded through Media Upload
1. Create the scenario trigger
Common trigger data:
| Field | Example |
|---|---|
country | US, USA, UK, FR |
username | mybrand_us |
visible_name | My Brand |
biography | Daily product videos. |
profile_picture_url | https://cdn.example.com/profile.jpg |
video_url | https://cdn.example.com/video.mp4 |
description | New drop is live #newarrival |
target_publish_date | 2026-06-05 |
Use GET /countries if you need to validate enabled countries before creating bundles.
2. Create bundle
Add HTTP > Make a request:
| Setting | Value |
|---|---|
| URL | https://app.tokportal.com/api/ext/bundles |
| Method | POST |
| Body type | Raw |
| Content type | JSON |
Headers:
| Name | Value |
|---|---|
X-API-Key | sk_your_key_here |
Content-Type | application/json |
Request body:
{
"bundle_type": "account_and_videos",
"platform": "tiktok",
"country": "{{1.country}}",
"videos_quantity": 1,
"title": "Make workflow {{1.row_id}}",
"external_ref": "make-{{1.row_id}}"
}
Store data.bundle_id from the response for the next modules. Do not use Authorization: Bearer; TokPortal API keys are sent in X-API-Key.
Reference: Create Bundle
3. Configure account
Add another HTTP module:
| Setting | Value |
|---|---|
| URL | https://app.tokportal.com/api/ext/bundles/{{2.data.bundle_id}}/account |
| Method | PUT |
| Body type | Raw JSON |
{
"username": "{{1.username}}",
"visible_name": "{{1.visible_name}}",
"biography": "{{1.biography}}",
"profile_picture_url": "{{1.profile_picture_url}}"
}
Reference: Account Configuration
4. Configure video
If the source app provides a public file URL, pass it directly:
{
"video_type": "video",
"description": "{{1.description}}",
"target_publish_date": "{{1.target_publish_date}}",
"video_url": "{{1.video_url}}",
"external_ref": "make-{{1.row_id}}-video-1"
}
Module URL:
https://app.tokportal.com/api/ext/bundles/{{2.data.bundle_id}}/videos/1
Method: PUT
TokPortal can also ingest media uploaded through Media Upload. If Make's file handling becomes the bottleneck for large files, upload by public URL or presigned URL and pass the returned public_url as video_url.
Reference: Configure Videos
5. Publish
Add a final HTTP module:
| Setting | Value |
|---|---|
| URL | https://app.tokportal.com/api/ext/bundles/{{2.data.bundle_id}}/publish |
| Method | POST |
No JSON body is required.
Reference: Publish & Unpublish
Error handling
Add Make error routes for common responses:
| Status | Meaning |
|---|---|
400 | Missing/invalid fields; inspect error.details |
401 | Missing, invalid, or revoked API key |
402 | Not enough credits |
429 | Rate limit; retry after the returned delay |
For publish issues, call:
GET https://app.tokportal.com/api/ext/bundles/{{bundle_id}}/publish-readiness
Multi-country scenarios
The bulk endpoint accepts one country per request. For multiple countries, use an Iterator in Make:
{
"platforms": ["tiktok", "instagram"],
"country": "{{iterator.country}}",
"accounts_count": 3,
"upload_accounts_count": 1,
"videos_per_account": 5,
"external_ref": "make-launch-{{iterator.country}}"
}
This creates 3 bundles per platform in the current country; 1 bundle per platform receives video slots.
Related docs: Create Bulk, Webhooks, Analytics, SDKs & CLI.