YouTube posting

Upload and schedule YouTube videos

Status 200 Uploads uploads your videos to YouTube with the title, description, privacy, category and tags you set, now or at a scheduled time. Send them from the dashboard, the REST API, Python, n8n or an AI app such as Claude. You sign in on Google, and the upload goes through our own YouTube app, so you never create a Google Cloud project or ask for an API quota.

  • Checked on

YouTube at a glance

What you can post
One video per post. YouTube itself decides whether a short vertical video is shown as a Short.
Largest video
5 GB per file. File limits of every network
Video length
As long as your channel allows: YouTube limits channels it has not verified to 15 minutes per video.
Title and description
A title of up to 100 characters on one line, and a description of up to 5,000 bytes (a letter with an accent takes 2, an emoji 4).
Tags
Up to 500 characters of tags in all, counted the way YouTube counts them (a tag with a space counts its quotes too).
After the upload
Every YouTube post answers 202 with the status processing: the upload goes on in the background, and reading the post back gives the video's link once YouTube has it.
Scheduling
Schedule a post up to 365 days ahead, or send it now.
Plans
YouTube is on every plan, Free included. Pricing
How it connects
You sign in on YouTube itself (OAuth), so we never see your YouTube password.
Your own Google project
Not needed. Uploads count against our YouTube app, not a quota of yours.

YouTube settings you control

Title · Description · Privacy · Category · Tags · Notify subscribers

What you can post to YouTube

Videos

One video per post, up to 5 GB. Without youtube.title the post text becomes the title; when the text is too long for one, its first line is the title and the whole text becomes the description, unless you send youtube.description. If neither text nor title is sent, the video is called "Untitled" and the answer says so.

Shorts

A Short is the same upload as any other video. Send a short vertical clip and YouTube shows it as a Short when it meets YouTube's own Shorts rules; there is no separate switch to set.

YouTube settings

Each setting by its name in the dashboard, its field in the REST API and its option in the AI connector. Every one here has been used in a real post or a dated live test.

YouTube settings in the dashboard, the REST API and the AI connector
SettingDashboardREST fieldAI connector optionWhat it does
TitleVideo title (optional)youtube.titletitleUp to 100 characters on one line. A longer title is shortened at the end of a word and the answer says so (title_shortened).
DescriptionVideo description (optional)youtube.descriptiondescriptionUp to 5,000 bytes; a longer one is shortened at the end of a word (description_shortened).
PrivacyPrivacyyoutube.privacyStatusprivacy_statusPublic, unlisted or private. Through the REST API a video sent without it is uploaded as private; the AI connector asks you every time.
CategoryCategoryyoutube.categoryIdcategory_idThe YouTube category id; the account's posting options list the categories by name.
TagsTags (comma-separated)youtube.tagstagsA list of tags, up to 500 characters in all as YouTube counts them. A longer list is refused before the upload starts.
Notify subscribersNotify Subscribersyoutube.notifySubscribersnotify_subscribersTurn it off to publish without YouTube telling your subscribers about the new video.

What we change for you, and tell you

When we change or flag something in a YouTube post, the answer (and History) names it with one of these codes. Your original file is never changed.

  • unknown_field: A field we do not read is not used, and the answer says so (with the field name we think you meant, when there is one). The post still goes out.

  • field_not_used: A field we read but could not use for this post (for example another network's block, or a setting that does not apply to this kind of post) is named in the answer. The post still goes out.

  • options_outside_post: An option sent next to "post" instead of inside it is not used, and the answer says where it belongs.

  • title_shortened: A title longer than YouTube allows is shortened at the end of a word, and the answer says to how many characters.

  • description_shortened: A description longer than YouTube allows is shortened at the end of a word, and the answer says so.

  • characters_removed: YouTube does not allow < or > in a title or a description, so they are removed, and the answer says how many.

  • text_partly_used: When the title is made from the post text and a description was sent, the rest of the text is not used, and the answer says how to keep it.

  • title_missing: A video sent with no text and no title is uploaded with the title "Untitled", and the answer says so.

  • media_url_not_kept: A scheduled post that names its media by web address fetches the file when it goes out, and we keep no copy: the answer reminds you the file must still be there then.

  • posts_close_together: The answer warns when another YouTube post of the account is scheduled within 20 seconds: leave at least a minute between them.

  • moved_to_next_day: When the daily limit of the profile is reached while a scheduled post is going out, the networks that did not fit move to the next day as a scheduled post of their own, and the post read back says so.

  • queued_for_next_day: On a plan with a daily limit, a post over the day's limit is queued for the next day instead of failing (answer 202), and the answer gives the time.

Post to YouTube your way

The same YouTube post from the dashboard, the REST API, Python, n8n or an AI app.

From the dashboard

  1. Under Connections, connect YouTube: you sign in with the Google account that owns the channel.
  2. In Schedule, add the video, then open the YouTube settings for the title, description, privacy, category and tags.
  3. Upload now or pick a date and time; History shows the video's link once YouTube has processed it.

Connect YouTube →

From the REST API

Upload a video as public, with a title and tags (POST /api/v2/posts)
curl -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -H 'Idempotency-Key: launch-video-youtube' \
  -d '{
    "post": {
      "accountId": "@yourchannel",
      "platform": "youtube",
      "content": {
        "text": "How we film our product videos",
        "mediaID": ["YOUR_FILE_ID"]
      },
      "youtube": {
        "title": "How we film our product videos",
        "privacyStatus": "public",
        "tags": ["behind the scenes", "filming"]
      }
    }
  }'

Full page →

From Python

Schedule an unlisted upload with the status200uploads package
from datetime import datetime, timezone
from status200uploads import Status200

s200 = Status200()  # STATUS200_API_KEY holds your rl_ key

video = {
    "accountId": "@yourchannel",
    "platform": "youtube",
    "content": {"text": "Weekly update", "mediaID": ["YOUR_FILE_ID"]},
    "youtube": {"privacyStatus": "unlisted", "categoryId": "26"},
}
result = s200.publish(video, scheduled_for=datetime(2026, 11, 2, 15, 0, tzinfo=timezone.utc))
print(result.code)  # "scheduled"

s200.cancel(result.status200.scheduled_post_id)  # only if you change your mind

Full page →

From n8n

  1. Use an HTTP Request node with the method POST and the address https://status200uploads.com/api/v2/posts.
  2. Add the headers Authorization (Bearer rl_your_key) and Content-Type (application/json), plus an Idempotency-Key such as {{ $json.id }}-youtube so a retried run uploads once.
  3. Send the body below. The answer is 202 processing: add a Wait node and a GET of /api/v2/posts/{id} if a later step needs the video link.
The HTTP Request body
{
  "post": {
    "accountId": "@yourchannel",
    "platform": "youtube",
    "content": {
      "text": "{{ $json.title }}",
      "mediaID": ["{{ $json.fileId }}"]
    },
    "youtube": {
      "privacyStatus": "private",
      "description": "{{ $json.description }}"
    }
  }
}

Full page →

From an AI app

Upload my latest video to YouTube tomorrow at 9:00 with the title "Studio tour" and the tags studio and tour.

The app finds the video with status200_list_media and asks whether it should be public, unlisted or private: the connector refuses a YouTube post without a privacy status, before anything is sent. It then schedules the upload with status200_schedule_post and gives you the scheduled post's id, which status200_update_scheduled_post or status200_cancel_scheduled_post can change or stop.

Full page →

YouTube errors you may see

The code in the answer, what it means and what to do. Each one is in the API reference.

YouTube error codes
HTTPCodeWhat it meansWhat to do
400youtube_tags_too_longThe tags add up to more than 500 characters as YouTube counts them. Nothing was uploaded.Remove the tags the answer lists in remove_tags, or shorten them, and send it again.
413MEDIA_TOO_LARGEThe video is larger than YouTube takes through us.Use a file of at most 5 GB.
404media_not_foundThe mediaID is not a file of your account: never uploaded, deleted, or removed after 7 days.Upload or import the video again and send its new mediaID.
409media_processingThe video you imported is still being fetched.Wait the seconds in Retry-After and send the post again.
400scheduled_for_invalidpost.scheduledFor has no time zone, cannot be read as a date and time, or is more than 365 days ahead.Send an ISO 8601 time with its zone, such as 2026-11-02T15:00:00Z.
500platform_errorYouTube answered with an error of its own that named no code.Send it again once, with the same Idempotency-Key.

YouTube questions

Start posting to YouTube

YouTube is on every plan, Free included. Everything on this page was checked on 26 October 2026.