Postpone Logo
Scheduling Posts

TikTok

Schedule video content to TikTok

Mutation

Use the scheduleTikTokPost mutation to schedule video content to TikTok:

Mutation
mutation ScheduleTikTokPost($input: ScheduleTikTokPostInput!) {
  scheduleTikTokPost(input: $input) {
    success
    errors {
      field
      message
    }
    post {
      id
      socialAccount {
        id
        username
      }
      publishingStatus
      caption
      description
      privacyLevel
      allowUsersToComment
      allowUsersToDuet
      allowUsersToStitch
      isBrandContent
      isPaidPartnership
      isAiGeneratedContent
      gallery {
        id
        galleryMediaSet {
          id
          media {
            url
            mimeType
          }
        }
      }
      submissions {
        id
        postAt
        publishingMethod
      }
    }
  }
}

Input Parameters

ScheduleTikTokPostInput

username
String! required
The username of the connected TikTok account to post from
caption
String
The caption text for the video (optional)
description
String
The description text for the video (optional)
gallery
GalleryInput
Media gallery containing the video file
mediaName
String
Name of a file from your Content Library (case-insensitive)
mediaUrl
String
URL of a video file to upload and attach to the post
mediaUrls
[String!]
URLs of multiple media files for multi-image posts
privacyLevel
TikTokPrivacyLevel! required
Privacy setting for the video. Options: PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY
allowUsersToComment
Boolean! required
Whether users can comment on the video
allowUsersToDuet
Boolean! required
Whether users can create duets with the video
allowUsersToStitch
Boolean! required
Whether users can stitch with the video
autoAddMusic
Boolean
Whether to automatically add music to the video (default: false)
isBrandContent
Boolean! required
Whether this is branded content that needs disclosure
isPaidPartnership
Boolean! required
Whether this is a paid partnership that needs disclosure
isAiGeneratedContent
Boolean
Whether the content is AI-generated (default: false)
submissions
[TikTokPostSubmissionInputType!]! required
Array of submissions defining when to post (minimum 1 submission)
publishingStatus
PublishingStatusType
Publishing status. Options: READY_TO_PUBLISH, DRAFT (default: READY_TO_PUBLISH)
postTags
[ID!]
Array of post tag IDs to organize your content
id
ID
ID of existing post when updating (only for updates)

TikTokPostSubmissionInputType

Each submission defines a specific posting schedule:

postAt
DateTime! required
When to publish the video (must be in the future)
publishingMethod
PublishingMethodType
How to publish the content. Options: AUTOMATIC, MANUAL (default: AUTOMATIC)
id
ID
ID of existing submission when updating (only for updates)

Examples

Simple TikTok Video

Schedule a basic TikTok video with a video from URL.

{
  "input": {
    "username": "myhandle",
    "caption": "Check out this amazing dance! 💃 #dance #viral #fyp",
    "mediaUrl": "https://example.com/dance-video.mp4",
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "allowUsersToComment": true,
    "allowUsersToDuet": true,
    "allowUsersToStitch": false,
    "isBrandContent": false,
    "isPaidPartnership": false,
    "submissions": [
      {
        "postAt": "2025-12-01T18:00:00Z"
      }
    ]
  }
}

TikTok Video with Content Library Media

Schedule a video using media from your Content Library.

{
  "input": {
    "username": "myhandle",
    "caption": "Tutorial time! Save this for later 📚 #tutorial #howto #learn",
    "description": "Step-by-step guide to mastering this technique",
    "mediaName": "tutorial-video.mp4",
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "allowUsersToComment": true,
    "allowUsersToDuet": false,
    "allowUsersToStitch": true,
    "autoAddMusic": true,
    "isBrandContent": false,
    "isPaidPartnership": false,
    "submissions": [
      {
        "postAt": "2025-12-01T16:30:00Z"
      }
    ]
  }
}

Branded Content Video

Schedule a TikTok video with brand content disclosures.

{
  "input": {
    "username": "myhandle",
    "caption": "Loving this new product! #sponsored #brandpartner #ad",
    "mediaUrl": "https://example.com/brand-video.mp4",
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "allowUsersToComment": true,
    "allowUsersToDuet": true,
    "allowUsersToStitch": true,
    "isBrandContent": true,
    "isPaidPartnership": true,
    "isAiGeneratedContent": false,
    "submissions": [
      {
        "postAt": "2025-12-01T20:00:00Z"
      }
    ]
  }
}

AI-Generated Content Video

Schedule a video created with AI tools.

{
  "input": {
    "username": "myhandle",
    "caption": "AI-generated content experiment! What do you think? 🤖 #ai #tech #future",
    "mediaUrl": "https://example.com/ai-video.mp4",
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "allowUsersToComment": true,
    "allowUsersToDuet": false,
    "allowUsersToStitch": false,
    "isBrandContent": false,
    "isPaidPartnership": false,
    "isAiGeneratedContent": true,
    "submissions": [
      {
        "postAt": "2025-12-01T14:00:00Z"
      }
    ]
  }
}

Response Types

Success Response

{
  "data": {
    "scheduleTikTokPost": {
      "success": true,
      "errors": [],
      "post": {
        "id": "123",
        "socialAccount": {
          "id": "456",
          "username": "myhandle"
        },
        "publishingStatus": "READY_TO_PUBLISH",
        "caption": "Check out this amazing dance! 💃 #dance #viral #fyp",
        "description": null,
        "privacyLevel": "PUBLIC_TO_EVERYONE",
        "allowUsersToComment": true,
        "allowUsersToDuet": true,
        "allowUsersToStitch": false,
        "isBrandContent": false,
        "isPaidPartnership": false,
        "isAiGeneratedContent": false,
        "gallery": {
          "id": "789",
          "media": [
            {
              "id": "101",
              "url": "https://cdn.example.com/dance-video.mp4",
              "type": "video"
            }
          ]
        },
        "submissions": [
          {
            "id": "112",
            "postAt": "2025-12-01T18:00:00Z",
            "publishingMethod": "AUTOMATIC"
          }
        ]
      }
    }
  }
}

Error Response

{
  "data": {
    "scheduleTikTokPost": {
      "success": false,
      "errors": [
        {
          "field": "mediaUrl",
          "message": "TikTok videos must be between 3 seconds and 10 minutes long."
        }
      ],
      "post": null
    }
  }
}

Validation Rules

The API enforces TikTok's content policies and technical limitations:
  • Video Duration: Minimum 3 seconds, maximum 10 minutes
  • File Size: Maximum 287.6MB per video
  • Video Format: Supports MP4, MOV, MPEG, AVI, WMV, 3GPP, WEBM
  • Aspect Ratios: Vertical (9:16) recommended, also supports 1:1 and 16:9
  • Resolution: Minimum 540x960, maximum 1080x1920 for vertical videos
  • Frame Rate: Minimum 23fps, maximum 60fps
  • Audio: Required for video content
  • Caption Length: No strict limit, but shorter captions perform better
  • Hashtags: Use 3-5 relevant hashtags for better discoverability
  • Brand Content: Must be properly disclosed if sponsored
  • AI Content: Must be labeled if AI-generated
  • Scheduling: Posts must be scheduled for future dates only
  • Account Limits: Respects your plan's monthly post limits

Common Errors