Base URL: https://shortsblink.com
Authenticate every API request with the X-API-Key header.
X-API-Key: sk_v2_...
POST /api/v2/schedules returns 402.POST /api/v2/schedules accepts either JSON or multipart/form-data.POST /api/v2/schedules/{schedule_id}/publish publishes immediately.GET /api/v2/schedules/{schedule_id}/status refreshes the latest TikTok publish status.{
"channels_list": {
"method": "GET",
"path": "/api/v2/channels"
},
"channels_create": {
"method": "POST",
"path": "/api/v2/channels",
"json": {
"platform": "tiktok",
"name": "Brand TikTok",
"handle": "@brand"
}
},
"channel_delete": {
"method": "DELETE",
"path": "/api/v2/channels/CHANNEL_ID"
},
"schedules_list": {
"method": "GET",
"path": "/api/v2/schedules"
},
"schedules_create_json": {
"method": "POST",
"path": "/api/v2/schedules",
"json": {
"channel_id": "1",
"title": "Morning launch",
"caption": "Queued by API",
"content_type": "video",
"delivery_mode": "inbox",
"asset_urls": [
"https://cdn.example.com/video.mp4"
],
"scheduled_for": "2026-04-11T10:00:00Z"
}
},
"schedules_publish_now": {
"method": "POST",
"path": "/api/v2/schedules/SCHEDULE_ID/publish"
},
"schedules_refresh_status": {
"method": "GET",
"path": "/api/v2/schedules/SCHEDULE_ID/status"
},
"posts_list": {
"method": "GET",
"path": "/api/v2/posts"
}
}
platform: youtube | tiktok content_type: video | slideshow delivery_mode: direct | inbox
curl -X POST "https://shortsblink.com/api/v2/channels" \
-H "X-API-Key: sk_v2_..." \
-H "Content-Type: application/json" \
-d '{
"platform": "tiktok",
"name": "Brand TikTok",
"handle": "@brand"
}'
curl -X POST "https://shortsblink.com/api/v2/schedules" \
-H "X-API-Key: sk_v2_..." \
-H "Content-Type: application/json" \
-d '{
"channel_id": "1",
"title": "Launch teaser",
"caption": "First look at the new drop.",
"content_type": "video",
"delivery_mode": "inbox",
"asset_urls": ["https://cdn.example.com/videos/launch.mp4"],
"scheduled_for": "2026-04-11T10:00:00Z"
}'
curl -X POST "https://shortsblink.com/api/v2/schedules" \
-H "X-API-Key: sk_v2_..." \
-F "channel_id=1" \
-F "title=AI History in 3 Photos" \
-F "caption=Upload photos directly" \
-F "content_type=slideshow" \
-F "delivery_mode=inbox" \
-F "scheduled_for=2026-04-11T15:00:00Z" \
-F "assets=@slide1.jpg" \
-F "assets=@slide2.jpg"
curl -X POST "https://shortsblink.com/api/v2/schedules/SCHEDULE_ID/publish" \
-H "X-API-Key: sk_v2_..."
curl "https://shortsblink.com/api/v2/schedules/SCHEDULE_ID/status" \
-H "X-API-Key: sk_v2_..."
{
"schedule_created": {
"schedule": {
"id": "12",
"channel_id": "1",
"platform": "tiktok",
"title": "Launch teaser",
"status": "scheduled",
"credits_remaining": 49
}
},
"publish_success": {
"status": "posted",
"result": {
"status": "posted"
}
},
"tiktok_status_refresh": {
"status": "uploaded",
"schedule": {
"status": "uploaded",
"publish_result": {
"publish_status": {
"data": {
"status": "PROCESSING_DOWNLOAD"
}
}
}
}
}
}
{
"400": {
"error": "channel_id is invalid"
},
"402": {
"error": "Insufficient credits. Please purchase credits to create a schedule."
},
"404": {
"error": "schedule not found"
}
}
For the canonical schema, see OpenAPI YAML or Swagger UI. The TikTok status refresh endpoint is listed there too.