Postpone Logo
Scheduling Posts

YouTube Shorts

Schedule short-form video content to YouTube

Mutation

Use the scheduleYouTubePost mutation to schedule video content to YouTube:

Mutation
mutation ScheduleYouTubePost($input: ScheduleYouTubePostInput!) {
  scheduleYouTubePost(input: $input) {
    success
    errors {
      field
      message
    }
    post {
      id
      socialAccount {
        id
        username
      }
      publishingStatus
      title
      description
      tags
      madeForKids
      containsSyntheticMedia
      privacyStatus
      gallery {
        id
        galleryMediaSet {
          id
          media {
            url
            mimeType
          }
        }
      }
      submissions {
        id
        postAt
        publishingMethod
      }
    }
  }
}

Input Parameters

ScheduleYouTubePostInput

username
String! required
The username of the connected YouTube account to post from
title
String! required
The title of the video (max 100 characters)
description
String
The description of the video (max 5,000 characters)
tags
[String!]
Array of tags for the video (max 500 characters total)
madeForKids
Boolean! required
Whether the content is made for kids (COPPA compliance)
containsSyntheticMedia
Boolean
Whether the video contains synthetic or altered media (default: false)
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
privacyStatus
YouTubePrivacyStatus! required
Privacy setting for the video. Options: PUBLIC, UNLISTED, PRIVATE
submissions
[YouTubePostSubmissionInputType!]! 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)

YouTubePostSubmissionInputType

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 YouTube Short

Schedule a basic YouTube Short with a video from URL.

{
  "input": {
    "username": "mychannel",
    "title": "Amazing Dance Tutorial #Shorts",
    "description": "Learn this viral dance in just 60 seconds! Follow for more tutorials.\n\n#dance #tutorial #shorts #viral",
    "tags": ["dance", "tutorial", "shorts", "viral", "howto"],
    "mediaUrl": "https://example.com/dance-short.mp4",
    "madeForKids": false,
    "privacyStatus": "PUBLIC",
    "submissions": [
      {
        "postAt": "2025-12-01T18:00:00Z"
      }
    ]
  }
}

YouTube Short with Content Library Media

Schedule a video using media from your Content Library.

{
  "input": {
    "username": "mychannel",
    "title": "Quick Cooking Hack You Need to Try!",
    "description": "This cooking hack will change your life! Save this for later and try it today.\n\nIngredients mentioned:\n- Ingredient 1\n- Ingredient 2\n\n#cooking #foodhacks #shorts #recipe",
    "tags": ["cooking", "food", "hacks", "recipe", "kitchen"],
    "mediaName": "cooking-hack-video.mp4",
    "madeForKids": false,
    "privacyStatus": "PUBLIC",
    "submissions": [
      {
        "postAt": "2025-12-01T16:30:00Z"
      }
    ]
  }
}

Kids Content Video

Schedule a YouTube video appropriate for children.

{
  "input": {
    "username": "kidschannel",
    "title": "Fun Learning Song for Kids",
    "description": "Educational and fun song for children to learn colors and shapes!\n\nSafe content for kids with no ads or external links.",
    "tags": ["kids", "education", "learning", "songs", "colors"],
    "mediaUrl": "https://example.com/kids-song.mp4",
    "madeForKids": true,
    "privacyStatus": "PUBLIC",
    "submissions": [
      {
        "postAt": "2025-12-01T14:00:00Z"
      }
    ]
  }
}

Synthetic Media Content

Schedule a video containing AI-generated or altered content.

{
  "input": {
    "username": "techchannel",
    "title": "AI-Generated Video Experiment",
    "description": "Testing out the latest AI video generation tools. This video contains synthetic media created using AI.\n\n#ai #technology #synthetic #experiment",
    "tags": ["ai", "technology", "synthetic", "experiment", "future"],
    "mediaUrl": "https://example.com/ai-generated-video.mp4",
    "madeForKids": false,
    "containsSyntheticMedia": true,
    "privacyStatus": "PUBLIC",
    "submissions": [
      {
        "postAt": "2025-12-01T20:00:00Z"
      }
    ]
  }
}

Unlisted Video

Schedule an unlisted video that won't appear in search results.

{
  "input": {
    "username": "mychannel",
    "title": "Behind the Scenes - Unlisted",
    "description": "Exclusive behind-the-scenes content for our community. This video is unlisted and only accessible via direct link.",
    "tags": ["behind-the-scenes", "exclusive", "community"],
    "mediaUrl": "https://example.com/bts-video.mp4",
    "madeForKids": false,
    "privacyStatus": "UNLISTED",
    "submissions": [
      {
        "postAt": "2025-12-01T12:00:00Z"
      }
    ]
  }
}

Response Types

Success Response

{
  "data": {
    "scheduleYouTubePost": {
      "success": true,
      "errors": [],
      "post": {
        "id": "123",
        "socialAccount": {
          "id": "456",
          "username": "mychannel"
        },
        "publishingStatus": "READY_TO_PUBLISH",
        "title": "Amazing Dance Tutorial #Shorts",
        "description": "Learn this viral dance in just 60 seconds! Follow for more tutorials.\n\n#dance #tutorial #shorts #viral",
        "tags": ["dance", "tutorial", "shorts", "viral", "howto"],
        "madeForKids": false,
        "containsSyntheticMedia": false,
        "privacyStatus": "PUBLIC",
        "gallery": {
          "id": "789",
          "media": [
            {
              "id": "101",
              "url": "https://cdn.example.com/dance-short.mp4",
              "type": "video"
            }
          ]
        },
        "submissions": [
          {
            "id": "112",
            "postAt": "2025-12-01T18:00:00Z",
            "publishingMethod": "AUTOMATIC"
          }
        ]
      }
    }
  }
}

Error Response

{
  "data": {
    "scheduleYouTubePost": {
      "success": false,
      "errors": [
        {
          "field": "title",
          "message": "YouTube video titles cannot exceed 100 characters."
        }
      ],
      "post": null
    }
  }
}

Validation Rules

The API enforces YouTube's content policies and technical limitations:
  • Video Duration: Maximum 60 seconds for YouTube Shorts, up to 12 hours for regular videos
  • File Size: Maximum 256GB per video
  • Video Format: Supports MP4, MOV, AVI, WMV, FLV, 3GPP, WEBM
  • Aspect Ratios: Vertical (9:16) recommended for Shorts, also supports 16:9 and 1:1
  • Resolution: Up to 4K (3840x2160) supported
  • Frame Rate: Up to 60fps supported
  • Title Length: Maximum 100 characters
  • Description Length: Maximum 5,000 characters
  • Tags: Maximum 500 characters total across all tags
  • COPPA Compliance: Must correctly identify content made for kids
  • Synthetic Media: Must be disclosed if content is AI-generated or altered
  • Scheduling: Posts must be scheduled for future dates only
  • Account Limits: Respects your plan's monthly post limits

Common Errors