postproxy-dev YouTube API

List, create, update and delete YouTube playlists

Operations 4

GET /api/profiles/{profile_id}/youtube/playlists List playlists #
POST /api/profiles/{profile_id}/youtube/create_playlist Create playlist #
PATCH /api/profiles/{profile_id}/youtube/update_playlist Update playlist #
DELETE /api/profiles/{profile_id}/youtube/delete_playlist Delete playlist #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/postproxy-dev:postproxy-dev-youtube-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

postproxy-dev-youtube-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Postproxy Social Media YouTube API
  version: '2026-09-21'
  summary: Unified social media API for publishing, comments, direct messages, and reviews.
  description: 'The Postproxy API lets you programmatically create and manage social media posts across Facebook, Instagram, TikTok, LinkedIn, YouTube, X (Twitter), Threads, Pinterest, Bluesky, Telegram, and Google Business. Beyond publishing you can read and reply to comments, read and send direct messages, and reply to Google Business reviews and Facebook Page recommendations.


    Send one payload; Postproxy maps it to each platform''s rules and returns a per-platform outcome. Sandbox mode is included on all plans for development without real accounts.


    Human-readable reference: https://postproxy.dev/reference/overview/


    ## Versioning and deprecation


    The API has a single stable version served at https://api.postproxy.dev/api. Releases are identified by this document''s date-based `info.version`. Changes are additive: new endpoints, new optional parameters, and new response fields may appear, and clients should ignore fields they do not recognize. Existing fields, parameters, and status codes are not changed or removed without a deprecation cycle.


    When an endpoint or field is deprecated it is marked `deprecated: true` in this specification and announced in the changelog (https://postproxy.dev/getting-started/changelog/) at least 90 days before removal.'
  termsOfService: https://postproxy.dev/terms-conditions/
  contact:
    name: Postproxy Support
    url: https://postproxy.dev/developers/
    email: support@postproxy.dev
  x-versioning:
    strategy: stable-single-version
    spec-version-format: date (YYYY-MM-DD)
    compatibility: additive-only; breaking changes go through a deprecation cycle
    deprecation-signal: 'deprecated: true in this spec, plus a changelog announcement at least 90 days before removal'
    changelog: https://postproxy.dev/getting-started/changelog/
servers:
- url: https://api.postproxy.dev
  description: Production
security:
- bearerAuth: []
tags:
- name: Youtube
  description: List, create, update and delete YouTube playlists
  externalDocs:
    url: https://postproxy.dev/reference/platforms/youtube/#playlists
paths:
  /api/profiles/{profile_id}/youtube/playlists:
    get:
      operationId: youtube_playlists_list
      summary: List playlists
      description: Lists the playlists on the connected YouTube channel, up to 50 per page. Each playlist's id is the playlist_id you can publish a video into.
      tags:
      - Youtube
      externalDocs:
        url: https://postproxy.dev/reference/platforms/youtube/#list-playlists
      parameters:
      - name: profile_id
        in: path
        required: true
        description: Profile id (must be a youtube profile)
        schema:
          type: string
      - name: page_token
        in: query
        required: false
        description: next_page_token from the previous page
        schema:
          type: string
      - $ref: '#/components/parameters/ProfileGroupId'
      responses:
        '200':
          description: A page of playlists
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/YouTubePlaylist'
                  next_page_token:
                    type:
                    - string
                    - 'null'
                    description: null on the last page
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The connection lacks permission to manage playlists; reconnect the profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          description: YouTube could not be reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/profiles/{profile_id}/youtube/create_playlist:
    post:
      operationId: youtube_playlist_create
      summary: Create playlist
      description: Creates a playlist on the connected YouTube channel. Costs 50 units of the channel's YouTube Data API quota.
      tags:
      - Youtube
      externalDocs:
        url: https://postproxy.dev/reference/platforms/youtube/#create-playlist
      parameters:
      - name: profile_id
        in: path
        required: true
        description: Profile id (must be a youtube profile)
        schema:
          type: string
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - title
              properties:
                title:
                  type: string
                  maxLength: 150
                  description: Playlist title
                description:
                  type: string
                  description: Playlist description
                privacy_status:
                  type: string
                  enum:
                  - public
                  - unlisted
                  - private
                  default: public
      responses:
        '200':
          description: The new playlist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YouTubePlaylist'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The connection lacks permission to manage playlists; reconnect the profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          description: YouTube could not be reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/profiles/{profile_id}/youtube/update_playlist:
    patch:
      operationId: youtube_playlist_update
      summary: Update playlist
      description: Updates a playlist's title, description or privacy. Fields left out keep their current value. Costs 50 units of the channel's YouTube Data API quota.
      tags:
      - Youtube
      externalDocs:
        url: https://postproxy.dev/reference/platforms/youtube/#update-playlist
      parameters:
      - name: profile_id
        in: path
        required: true
        description: Profile id (must be a youtube profile)
        schema:
          type: string
      - $ref: '#/components/parameters/ProfileGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - playlist_id
              properties:
                playlist_id:
                  type: string
                  description: Playlist ID from List playlists
                title:
                  type: string
                  description: New title
                description:
                  type: string
                  description: New description. Pass "" to clear it
                privacy_status:
                  type: string
                  enum:
                  - public
                  - unlisted
                  - private
      responses:
        '200':
          description: The updated playlist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YouTubePlaylist'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The connection lacks permission to manage playlists; reconnect the profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          description: YouTube could not be reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/profiles/{profile_id}/youtube/delete_playlist:
    delete:
      operationId: youtube_playlist_delete
      summary: Delete playlist
      description: Deletes a playlist from the connected YouTube channel. The videos in it are not deleted. Costs 50 units of the channel's YouTube Data API quota.
      tags:
      - Youtube
      externalDocs:
        url: https://postproxy.dev/reference/platforms/youtube/#delete-playlist
      parameters:
      - name: profile_id
        in: path
        required: true
        description: Profile id (must be a youtube profile)
        schema:
          type: string
      - name: playlist_id
        in: query
        required: true
        description: Playlist ID to delete
        schema:
          type: string
      - $ref: '#/components/parameters/ProfileGroupId'
      responses:
        '200':
          description: The playlist was deleted
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: boolean
                  playlist_id:
                    type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The connection lacks permission to manage playlists; reconnect the profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          description: YouTube could not be reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    YouTubePlaylist:
      type: object
      properties:
        id:
          type: string
          description: YouTube playlist ID
        title:
          type: string
        description:
          type: string
        privacy_status:
          type: string
          enum:
          - public
          - unlisted
          - private
        item_count:
          type: integer
          description: Number of videos in the playlist
        thumbnail_url:
          type:
          - string
          - 'null'
        published_at:
          type: string
          format: date-time
    ValidationErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
      required:
      - errors
    Error:
      type: object
      properties:
        error:
          type: string
      required:
      - error
    BadRequestError:
      type: object
      properties:
        status:
          type: integer
          const: 400
        error:
          type: string
        message:
          type: string
  responses:
    ValidationError:
      description: Validation failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrors'
    NotFound:
      description: Resource does not exist or is not accessible.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            notFound:
              value:
                error: Not found
    BadRequest:
      description: Missing required parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestError'
    Unauthorized:
      description: Invalid, missing, or insufficient API key permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalidKey:
              value:
                error: Invalid API key
    RateLimited:
      description: Posting rate limit reached.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    ProfileGroupId:
      name: profile_group_id
      in: query
      required: false
      description: Profile group context for the request. Optional when the API key is scoped to a profile group (that group is used automatically); with a full-access key, defaults to the first profile group in the account.
      schema:
        type: string
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: 'Optional idempotency key (up to 255 characters; a UUID is ideal). Retrying a successful write with the same key replays the original response (with an Idempotent-Replay: true header) instead of executing again. Stored responses are kept for 24 hours; only 2xx responses are stored.'
      schema:
        type: string
        maxLength: 255
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key sent as a Bearer token in the Authorization header. Keys are either full-access (entire account) or scoped to a single profile group. Create keys at https://app.postproxy.dev under Settings → API Keys.
externalDocs:
  description: Full API reference
  url: https://postproxy.dev/reference/overview/