---
title: "Create YouTube playlist"
method: POST
path: "/v1/accounts/{accountId}/youtube-playlists"
tags: ["Connect"]
---

# Create YouTube playlist

`POST /v1/accounts/{accountId}/youtube-playlists`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/accounts/{accountId}/youtube-playlists`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/zernio/apis/zernio-api/docs/v1/accounts/:accountId/youtube-playlists/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates an empty playlist on the connected YouTube channel. Requires a title; privacy defaults to private.

Returns the same playlist shape as the list endpoint. Pass the returned playlist.id as platformSpecificData.playlistId when publishing a video. Does not change the account's default playlist.

### Requirements and cost

- Requires the youtube or youtube.force-ssl OAuth scope.
- Costs 50 YouTube quota units.

### Retries

This operation is not idempotent and is not automatically retried. Repeating a request can create another playlist, including after a timeout. List playlists before retrying an ambiguous failure.

### Official series

Official series settings are not exposed by YouTube's public API and must be enabled manually in YouTube's desktop playlist settings.

## Path parameters

- `accountId` string, required

## Request body

- object
  - `title` string, required: Playlist title. Leading and trailing whitespace is removed.
  - `description` string: Optional playlist description.
  - `privacy` 'private' | 'public' | 'unlisted'

## Response `201`

Playlist created

- object
  - `playlist` object, required
    - `id` string, required
    - `title` string, required
    - `description` string, required
    - `privacy` 'private' | 'public' | 'unlisted', required
    - `itemCount` integer, required
    - `thumbnailUrl` string, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `403`: API key lacks access to the account or YouTube denied permission.
- `404`: Account not found or inaccessible.
- `429`: YouTube rate limit exceeded.
- `502`: YouTube request failed. Check existing playlists before retrying, because the playlist may have been created.

## Changes

- **2026-11-10** `d568bb00ed73`: 10 info
  - added the optional property `docsUrl` to the response with the `400` status
  - added the optional property `docsUrl` to the response with the `401` status
  - added the optional property `provider` to the response with the `400` status
  - added the optional property `provider` to the response with the `401` status
  - …6 more
- **2026-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 8 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …4 more
- **2026-09-30** `16a7b9d5373e`: 1 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`
- …earlier changes not shown

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/youtube-playlists/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) - [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/c6871b2611ac?raw)
