---
title: "Titles, Tags, Privacy: Upload YouTube Video Through API"
description: "Shorts or long-form: upload YouTube video through API with videoTitle, tags, privacyStatus, categoryId and playlistId on one POST /social-posts call."
url: "https://adaptlypost.com/en/usages/upload-youtube-video-through-api"
---

# Titles, tags, privacy and Shorts: upload YouTube video through API

One authenticated POST lets you upload YouTube video through API with a title, up to 20 tags, a privacy status and an existing playlist id attached. YouTube is video-only here - no Community posts, no image or text posts - so the payload is small and the rules are strict.

[Get an API key](https://adaptlypost.com/en/signup)

![A POST /social-posts payload with a youtubeConfigs object containing videoTitle, tags, privacyStatus and playlistId](https://cdn.adaptlypost.com/public/adaptlypost_dashboard.png)

### Every YouTube-specific option sits in one object

youtubeConfigs carries postType, videoTitle, tags, categoryId, privacyStatus, playlistId and the notify/embed/kids/license flags, and it rides on the same POST /social-posts request that references the uploaded file.

[ManagePost to all your platforms at onceShare to Instagram, TikTok, YouTube, X, and more with one click. Each post auto-adapts to fit the platform.](https://adaptlypost.com/en/features/post-multiple-social-media-accounts-once)

[ScheduleVisual content calendarPlan your week at a glance and never miss your best posting times.](https://adaptlypost.com/en/features/social-media-content-calendar)

[IntegrateAPI access & OpenClaw skillConnect via API or let your OpenClaw AI agent manage posts for you. Automate social media with natural language commands.](https://adaptlypost.com/en/features/openclaw-integration)

[GenerateAI image generator for social mediaGenerate scroll-stopping images in seconds. Just describe your vision and let AI bring it to life.](https://adaptlypost.com/en/features/ai-social-media-image-generator)

[CreateAI caption generator for every platformGet caption ideas, rewrite for different platforms, and add trending hashtags, all with one prompt.](https://adaptlypost.com/en/features/ai-caption-writer)

[OrganizeSocial media content plannerSee drafts, scheduled posts, and published content in one place. Know exactly what's going live and when.](https://adaptlypost.com/en/features/ai-social-media-scheduler)

## Trusted by Creators and Teams

See how creators, marketers, and small businesses use AdaptlyPost to stay consistent and save hours every week.

I'm a software engineer, not a marketer. My partner runs a TikTok page, so I help out by scheduling her posts, I batch everything in one sitting and let the AI handle the captions. Takes me about 20 minutes a week now.

[![Denys Zinych](https://cdn.adaptlypost.com/public/denys.jpg)Denys ZinychSoftware Engineer](https://www.linkedin.com/in/denys-zinych-b75543287/)

I run my nail art page and a personal brand. Scheduling both from one dashboard changed everything, I actually post consistently now and my engagement went up pretty noticeably within a month.

[![Irena](https://cdn.adaptlypost.com/public/irena.jpg)IrenaContent Creator](https://www.instagram.com/iirennails/)

I'm an SWE and honestly terrible at posting consistently. I just line up a week of updates for my personal brand whenever I have a spare minute, and the AI drafts captions per platform so I'm not rewriting the same thing five different ways.

[![Dorian Opacki](https://cdn.adaptlypost.com/public/dorian.jpg)Dorian OpackiSoftware Engineer](https://www.linkedin.com/in/dorianopacki/)

I'm a software engineer, not a marketer. My partner runs a TikTok page, so I help out by scheduling her posts, I batch everything in one sitting and let the AI handle the captions. Takes me about 20 minutes a week now.

[![Denys Zinych](https://cdn.adaptlypost.com/public/denys.jpg)Denys ZinychSoftware Engineer](https://www.linkedin.com/in/denys-zinych-b75543287/)

I run my nail art page and a personal brand. Scheduling both from one dashboard changed everything, I actually post consistently now and my engagement went up pretty noticeably within a month.

[![Irena](https://cdn.adaptlypost.com/public/irena.jpg)IrenaContent Creator](https://www.instagram.com/iirennails/)

I'm an SWE and honestly terrible at posting consistently. I just line up a week of updates for my personal brand whenever I have a spare minute, and the AI drafts captions per platform so I'm not rewriting the same thing five different ways.

[![Dorian Opacki](https://cdn.adaptlypost.com/public/dorian.jpg)Dorian OpackiSoftware Engineer](https://www.linkedin.com/in/dorianopacki/)

I'm a software engineer, not a marketer. My partner runs a TikTok page, so I help out by scheduling her posts, I batch everything in one sitting and let the AI handle the captions. Takes me about 20 minutes a week now.

[![Denys Zinych](https://cdn.adaptlypost.com/public/denys.jpg)Denys ZinychSoftware Engineer](https://www.linkedin.com/in/denys-zinych-b75543287/)

I run my nail art page and a personal brand. Scheduling both from one dashboard changed everything, I actually post consistently now and my engagement went up pretty noticeably within a month.

[![Irena](https://cdn.adaptlypost.com/public/irena.jpg)IrenaContent Creator](https://www.instagram.com/iirennails/)

I'm an SWE and honestly terrible at posting consistently. I just line up a week of updates for my personal brand whenever I have a spare minute, and the AI drafts captions per platform so I'm not rewriting the same thing five different ways.

[![Dorian Opacki](https://cdn.adaptlypost.com/public/dorian.jpg)Dorian OpackiSoftware Engineer](https://www.linkedin.com/in/dorianopacki/)

I'm not a social media person but I need to post my work somewhere. The AI writer drafts something decent, I tweak it a bit, schedule it, done. Went from posting once a month to three times a week.

[![Denys Kholin](https://cdn.adaptlypost.com/public/denysK.jpg)Denys KholinFreelance Designer](https://www.linkedin.com/in/denys-kholin/)

We connected our OpenClaw agent to AdaptlyPost and now our AI posts product updates across all channels automatically. It sounds futuristic but honestly it just works. The API integration was straightforward.

[![Taras Shynkarenko](https://cdn.adaptlypost.com/public/taras.jpg)Taras ShynkarenkoStartup Founder](https://www.linkedin.com/in/taras-shynkarenko/)

I'm not a social media person but I need to post my work somewhere. The AI writer drafts something decent, I tweak it a bit, schedule it, done. Went from posting once a month to three times a week.

[![Denys Kholin](https://cdn.adaptlypost.com/public/denysK.jpg)Denys KholinFreelance Designer](https://www.linkedin.com/in/denys-kholin/)

We connected our OpenClaw agent to AdaptlyPost and now our AI posts product updates across all channels automatically. It sounds futuristic but honestly it just works. The API integration was straightforward.

[![Taras Shynkarenko](https://cdn.adaptlypost.com/public/taras.jpg)Taras ShynkarenkoStartup Founder](https://www.linkedin.com/in/taras-shynkarenko/)

I'm not a social media person but I need to post my work somewhere. The AI writer drafts something decent, I tweak it a bit, schedule it, done. Went from posting once a month to three times a week.

[![Denys Kholin](https://cdn.adaptlypost.com/public/denysK.jpg)Denys KholinFreelance Designer](https://www.linkedin.com/in/denys-kholin/)

We connected our OpenClaw agent to AdaptlyPost and now our AI posts product updates across all channels automatically. It sounds futuristic but honestly it just works. The API integration was straightforward.

[![Taras Shynkarenko](https://cdn.adaptlypost.com/public/taras.jpg)Taras ShynkarenkoStartup Founder](https://www.linkedin.com/in/taras-shynkarenko/)

## From empty terminal to published upload

Step 1

### Create a key, then look up the channel

Keys are issued in the dashboard under Settings > API Tokens and start with adaptly\_. Send them as \`Authorization: Bearer <key>\` against https://post.adaptlypost.com/post/api/v1\. The channel itself is connected over OAuth in the dashboard - there is no endpoint that connects, disconnects or health-checks a YouTube channel - and then \`GET /social-accounts\` returns its id, platform and displayName to reference in the post. One call targets one YouTube channel: a second channel is a second call, and sending two YouTube accounts in one payload is rejected with a 400.

Step 2

### Push the file, then POST /social-posts with youtubeConfigs

Only video/mp4 and video/quicktime are accepted, and \`POST /upload-urls\` rejects any other mime type outright, so request presigned URLs there (1-20 files, valid for one hour), PUT the file, and create the post with \`text\`, \`platforms: \["YOUTUBE"\]\`, \`timezone\` (IANA, e.g. "Europe/Berlin"), \`contentType: "VIDEO"\` and a \`youtubeConfigs\` object. YouTube's supported content type list is VIDEO and its max images per post is 0, so an IMAGE or TEXT post that includes YouTube never reaches the channel. The request body is validated synchronously: \`videoTitle\` past 100 characters, more than 20 \`tags\`, a missing required field or an unsupported content type all come back as a 400 on the create call itself, with no post record written and nothing to retry. \`postType: "SHORTS"\` requires a 9:16 file of 60 seconds or less, so check aspect ratio and duration before you call. Add \`scheduledAt\` to schedule instead of publishing immediately.

Step 3

### Read platformPostId, or fix and retry

\`GET /social-posts/:id/results\` returns the YouTube entry with \`status\`, \`publishedAt\`, \`errorMessage\` and \`platformPostId\` - the raw YouTube video id. No watch URL is ever returned, so build the link yourself from that id. This endpoint reports what YouTube did after we accepted and dispatched the upload, not whether the payload was well formed - malformed payloads never get this far, because they failed with a 400 at create. What shows up in \`errorMessage\` is channel-side: a \`playlistId\` that does not exist on the connected channel, an OAuth grant the channel owner revoked, or an upload YouTube refused or throttled during its own processing. Fix the underlying cause and call \`POST /social-posts/:id/retry\` with the failed \`platformIds\` rather than recreating the post. There is no sandbox anywhere in the API, so the closest thing to a dry run is publishing with \`privacyStatus: "PRIVATE"\` and flipping it in YouTube Studio afterwards.

## Simple, transparent pricing

Choose the perfect plan for your needs

### Creator

Perfect for individuals and solopreneurs

## $19

/month

[Start 7-day Trial](https://adaptlypost.com/en/signup)

* 30 connected social accounts
* Unlimited scheduled posts
* 1 team member
* 3 workspaces
* 150 credits/month
* AI Captions
* AI Image Studio
* API access & OpenClaw integration
* Image, video & carousel posts

Most Popular

### Pro

For professionals and growing teams

## $39

/month

[Start 7-day Trial](https://adaptlypost.com/en/signup)

* 60 connected social accounts
* Unlimited scheduled posts
* 5 team members
* 15 workspaces
* 400 credits/month
* AI Captions
* AI Image Studio
* API access & OpenClaw integration
* Image, video & carousel posts

### Enterprise

For agencies and enterprises ready to scale

## $89

/month

[Start 7-day Trial](https://adaptlypost.com/en/signup)

* 100 connected social accounts
* Unlimited scheduled posts
* 20 team members
* 50 workspaces
* 1000 credits/month
* AI Captions
* AI Image Studio
* API access & OpenClaw integration
* Image, video & carousel posts

All plans include a 7-day free trial

Want to see the full feature comparison? [View pricing page](https://adaptlypost.com/en/pricing)

## What you can actually set on a YouTube upload

### Long-form uploads with metadata attached

\`postType: "VIDEO"\` publishes a standard upload. \`videoTitle\` sets the title with a 100-character ceiling, \`tags\` takes up to 20 strings, \`categoryId\` takes YouTube's numeric category id, and the post \`text\` travels with the video as its body copy. Nothing beyond that object is settable: there are no thumbnail, chapter, end-screen, caption or premiere fields in this API.

### Shorts on the same endpoint

Switch \`postType\` to \`"SHORTS"\` to upload YouTube Shorts via API - same endpoint, same youtubeConfigs, same upload-urls pipeline. The deciding constraint is the media, not the flag: a Short requires a 9:16 aspect ratio and a duration of 60 seconds or less, so validate dimensions and duration before you call rather than after.

### Privacy, notifications and the audience flag

\`privacyStatus\` accepts PUBLIC, UNLISTED or PRIVATE. \`notifySubscribers\` decides whether the channel's subscribers are pinged, \`allowEmbedding\` sets embed permission, \`madeForKids\` carries the audience designation, and \`license\` sets the video license. All of them are per-post, so a backlog of archive uploads can go out private and silent while one launch video goes public and notifies.

### Adding the upload to an existing playlist

Set \`playlistId\` in youtubeConfigs and the finished upload is filed into that playlist. It has to exist already - the API can add to a playlist but cannot create, rename, reorder or list one - so copy the id out of YouTube Studio (the \`list=\` value in the playlist URL) and store it in your own config. If the id is wrong, that shows up on the YouTube entry returned by \`/results\`.

## Wire up your first YouTube upload

Create a key in Settings > API Tokens, import GET /openapi.json into your HTTP client, Make or n8n, and the first upload is one POST away. Test with privacyStatus PRIVATE before you go public.

[Get an API key](https://adaptlypost.com/en/signup)
