Scheduling API Reference
Schedule your TikTok content for optimal posting times using our Scheduling API.
Base Endpoint
POST /api/v1/schedule
Authentication
Required : Bearer token (JWT or API key)
Feature : Available on Basic and Professional plans only
Endpoints
Create Scheduled Post
POST /api/v1/schedule/create
Schedule a video for future publication.
Upload ID of the video to schedule
TikTok account ID to publish to
ISO 8601 datetime string for publish time (e.g., “2025-10-21T14:30:00Z”)
curl -X POST 'https://api.d1g.qzz.io/api/v1/schedule/create' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"tiktokAccountId": "123e4567-e89b-12d3-a456-426614174000",
"scheduledPublishTime": "2025-10-21T14:30:00Z"
}'
import axios from 'axios' ;
const scheduleVideo = async () => {
try {
const response = await axios. post (
'https://api.d1g.qzz.io/api/v1/schedule/create' ,
{
videoId: '550e8400-e29b-41d4-a716-446655440000' ,
tiktokAccountId: '123e4567-e89b-12d3-a456-426614174000' ,
scheduledPublishTime: '2025-10-21T14:30:00Z' ,
title: 'Scheduled Amazing Video' ,
hashtags: '#trending #viral'
},
{
headers: {
'Authorization' : 'Bearer YOUR_API_KEY' ,
'Content-Type' : 'application/json'
}
}
);
console. log ( 'Schedule successful:' , response.data);
} catch (error) {
console. error ( 'Schedule failed:' , error.response?.data || error.message);
}
};
import requests
def schedule_video ():
url = "https://api.d1g.qzz.io/api/v1/schedule/create"
headers = {
"Authorization" : "Bearer YOUR_API_KEY" ,
"Content-Type" : "application/json"
}
data = {
"videoId" : "550e8400-e29b-41d4-a716-446655440000" ,
"tiktokAccountId" : "123e4567-e89b-12d3-a456-426614174000" ,
"scheduledPublishTime" : "2025-10-21T14:30:00Z" ,
"title" : "Scheduled Amazing Video" ,
"hashtags" : "#trending #viral"
}
response = requests.post(url, json = data, headers = headers)
if response.status_code == 200 :
print ( "Schedule successful:" , response.json())
else :
print ( "Schedule failed:" , response.json())
Success Response (201 Created)
{
"success" : true ,
"data" : {
"scheduleId" : "650e8400-e29b-41d4-a716-446655440000" ,
"scheduledTime" : "2025-10-21T14:30:00.000Z" ,
"status" : "pending" ,
"createdAt" : "2025-01-20T10:30:00.000Z"
}
}
Get Scheduled Videos
GET /api/v1/schedule/scheduled-videos
Get all scheduled videos for the authenticated user.
Scheduled Videos Response
{
"success" : true ,
"data" : [
{
"id" : "650e8400-e29b-41d4-a716-446655440000" ,
"scheduledPublishTime" : "2025-10-21T14:30:00.000Z" ,
"status" : "pending" ,
"video" : {
"id" : "550e8400-e29b-41d4-a716-446655440000" ,
"title" : "Amazing TikTok Video" ,
"description" : "Check out this content!"
},
"tiktokAccount" : {
"id" : "123e4567-e89b-12d3-a456-426614174000" ,
"username" : "my_tiktok_handle" ,
"displayName" : "My TikTok Name"
}
}
]
}
Update Scheduled Post
PUT /api/v1/schedule/{scheduleId}
Update a scheduled post before it publishes.
New publish time (ISO 8601 format)
Update status: “pending”, “executed”, or “cancelled”
curl -X PUT 'https://api.d1g.qzz.io/api/v1/schedule/650e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"scheduledPublishTime": "2025-10-22T10:00:00Z",
"status": "pending"
}'
Delete Scheduled Post
DELETE /api/v1/schedule/{scheduleId}
Delete a scheduled post.
Get Upcoming Scheduled Posts
GET /api/v1/schedule/upcoming
Get upcoming scheduled posts (public endpoint, no authentication required).
{
"success" : true ,
"data" : {
"upcomingPosts" : [
{
"scheduleId" : "650e8400-e29b-41d4-a716-446655440000" ,
"publishTime" : "2025-10-21T14:30:00Z" ,
"accountId" : "123e4567-e89b-12d3-a456-426614174000"
}
]
}
}
Scheduling Limits
Plan Scheduled Posts Limit Basic 10 Professional 50
Attempting to schedule beyond your plan limits will result in a 403 FORBIDDEN error with code SCHEDULING_LIMIT_EXCEEDED.
Time Zone Considerations
All scheduled times must be provided in UTC (ISO 8601 format). The system automatically handles time zone conversion for publishing.
Best Practice : Always validate your scheduled time is in the future (at least 15 minutes from current time) to avoid scheduling errors.
Common Errors
400 VALIDATION_ERROR : Invalid datetime format or missing required fields
403 FORBIDDEN : Scheduling feature not available or limit exceeded
404 NOT_FOUND : Invalid video ID or schedule ID
422 UNPROCESSABLE_ENTITY : Scheduled time too close to current time or in the past
409 CONFLICT : Video already scheduled or published
Scheduled posts are processed automatically at the specified time. Once the publish time is reached, the status changes to “executed” and the video is published to TikTok.