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://status200uploads.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://status200uploads.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_idis what you'll pass to/api/v2/postsascontent.mediaID - URL and filename are intentionally hidden so you don't expose storage directly
Error Responses
cURL Example
curl -X POST https://status200uploads.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://status200uploads.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://status200uploads.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://status200uploads.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://status200uploads.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
isBrandedContentorisYourBrandand pick a compatibleprivacyLevel -
For photo music, either send
"autoAddMusic": trueor includeauto music: onincontent.text