Quick Navigation
RoboLabs Uploads — API v2
Powerful automation API for social media content management
What this API does
Upload media by URL
Get a file_id
you can reference later
Publish to TikTok
Using connected accounts via your file_id(s)
Both endpoints require an API key you generate in Dashboard → API
Authentication
Send your API key in the header:
Authorization: Bearer rl_XXXXXXXXXXXXXXXXXXXXXXXX
Important: If the key is missing, invalid, or revoked, you'll get 401 Unauthorized
.
Base URL
https://iboydroidtests.com
Available Endpoints
/api/v2/media
Upload media from URL and get a file_id for posting
/api/v2/posts
Publish posts to TikTok using file_id(s) from media upload
Privacy Levels & Media Types
Privacy Levels
PUBLIC_TO_EVERYONE
Visible to everyone
MUTUAL_FOLLOW_FRIENDS
Mutual followers
FOLLOWER_OF_CREATOR
Your followers
SELF_ONLY
Private / only you
Supported Media Types
Images
JPG (preferred), PNG, WebP ≤ 20MB
Videos
MP4, MOV ≤ 4GB, ≤ 10 minutes
1) Upload Media from URL
Store remote files and get file IDs for posting
https://iboydroidtests.com/api/v2/media
Uploads a remote file (image or video) into your project's storage and returns a file_id
.
The public URL is not returned (by design). Use file_id
with /api/v2/posts
.
Request
Headers
Authorization: Bearer YOUR_API_KEY (required) Content-Type: application/json (required)
Body
{ "url": "https://example.com/media.mp4" }
Field Reference
Field | Type | Required | Description |
---|---|---|---|
url |
string | yes | Direct, downloadable URL to an image or video. Redirects are followed. |
Supported File Types & Sizes
Type | Recommended Formats | TikTok Guidance | Notes |
---|---|---|---|
Image | JPG (preferred) |
≤ 20 MB; up to 1080 px | PNG/WebP might not work for TikTok "photo" posts; convert to JPG for best results. |
Video | MP4 , MOV |
≤ 4 GB; ≤ 10 minutes | Very large downloads may be rejected by hosting limits/timeouts. |
Response (200)
{ "success": true, "file_id": "3e9e3c84-6047-48a2-93bf-db3f73a34f25", "size": 1993928, "type": "video/mp4" }
Important Notes
-
file_id
is what you'll pass to/api/v2/posts
ascontent.mediaID
- URL and filename are intentionally hidden so you don't expose storage directly
Error Responses
cURL Example
curl -X POST https://iboydroidtests.com/api/v2/media \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/video.mp4"}'
2) Publish Post to TikTok
Create posts using your uploaded media files
https://iboydroidtests.com/api/v2/posts
Publishes to TikTok using your connected account. You should upload media first and pass the returned file_id(s)
as mediaID
.
Request Structure
Headers
Authorization: Bearer YOUR_API_KEY (required) Content-Type: application/json (required)
Body (top-level)
{ "post": { ... } }
post object
Field | Type | Required | Description |
---|---|---|---|
accountId |
string (UUID) | yes | The profile ID in your project (must belong to this API key's owner) |
content |
object | yes | Media + caption info |
target |
object | yes | TikTok posting options (privacy, toggles, etc.) |
scheduledTime |
string (ISO-8601) | no | Accepted but currently not executed (future use) |
post.content
Field | Type | Required | Description |
---|---|---|---|
text |
string | no | Caption/title (TikTok max ~2,200 characters) |
mediaID |
string[] | yes* | One or more file_id values returned by /media. Preferred. |
mediaIds |
string[] | no | Alias of mediaID (also supported) |
mediaUrls |
string[] | no | Legacy fallback (public URLs) |
platform |
string | no | "tiktok" (informational only) |
Post Type Selection
post.target
Field | Type | Required | Applies to | Description |
---|---|---|---|---|
privacyLevel |
enum | no | video & photo | Default: SELF_ONLY |
disabledComments |
boolean | no | video & photo | Disable comments |
disabledDuet |
boolean | no | video only | Disable duet |
disabledStitch |
boolean | no | video only | Disable stitch |
isBrandedContent |
boolean | no | video & photo | Mark as paid partnership |
isYourBrand |
boolean | no | video & photo | Mark as promotional/your own brand |
isAiGenerated |
boolean | no | video only | Mark as AI-generated |
autoAddMusic |
boolean | no | photo only | Auto-add music on photo slideshows |
Caption Trigger (Alternative)
If your caption contains auto music: on
, we treat it as
autoAddMusic: true
and strip that phrase before posting.
Responses
We forward the underlying result from your TikTok bridge. A typical success looks like:
[ { "data": { "publish_id": "v_pub_url~v2-1.7543484175937062917" }, "error": { "code": "ok", "message": "", "log_id": "2025082812124233675C6C19302C02AFED" } } ]
Common HTTP Errors
TikTok-Specific Failures
picture_size_check_failed
Image violates size/format
photo_pull_failed
TikTok couldn't fetch your photo URL
Examples
A
Video post (single mediaID)
curl -X POST https://iboydroidtests.com/api/v2/posts \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "accountId": "80f053fa-05e4-415c-a23d-9d53cd58b46b", "content": { "text": "Test video caption", "mediaID": ["3e9e3c84-6047-48a2-93bf-db3f73a34f25"], "platform": "tiktok" }, "target": { "targetType": "tiktok", "privacyLevel": "SELF_ONLY", "disabledComments": true, "disabledDuet": true, "disabledStitch": true, "isBrandedContent": false, "isYourBrand": false, "isAiGenerated": false } } }'
B
Photo slideshow (2+ mediaID) with auto music flag
curl -X POST https://iboydroidtests.com/api/v2/posts \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "accountId": "80f053fa-05e4-415c-a23d-9d53cd58b46b", "content": { "text": "Summer dump ☀️", "mediaID": [ "11111111-1111-1111-1111-111111111111", "22222222-2222-2222-2222-222222222222", "33333333-3333-3333-3333-333333333333" ], "platform": "tiktok" }, "target": { "targetType": "tiktok", "privacyLevel": "PUBLIC_TO_EVERYONE", "disabledComments": false, "disabledDuet": true, "disabledStitch": true, "isBrandedContent": false, "isYourBrand": false, "isAiGenerated": false, "autoAddMusic": true } } }'
C
Photo slideshow with caption directive
curl -X POST https://iboydroidtests.com/api/v2/posts \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "accountId": "80f053fa-05e4-415c-a23d-9d53cd58b46b", "content": { "text": "Weekend photos — auto music: on", "mediaID": [ "aaaaaaa1-bbbb-cccc-dddd-eeeeeeee0001", "aaaaaaa2-bbbb-cccc-dddd-eeeeeeee0002" ], "platform": "tiktok" }, "target": { "targetType": "tiktok", "privacyLevel": "FOLLOWER_OF_CREATOR", "disabledComments": false, "disabledDuet": true, "disabledStitch": true, "isBrandedContent": false, "isYourBrand": false, "isAiGenerated": false } } }'
Tips & Best Practices
Workflow
-
Always upload first to get
file_id
→ then post usingmediaID
- For photo slideshows, prefer JPG ≤ 20MB each, up to 1080px (TikTok-friendly)
Advanced Features
-
For branded content, set
isBrandedContent
orisYourBrand
and pick a compatibleprivacyLevel
-
For photo music, either send
"autoAddMusic": true
or includeauto music: on
incontent.text