Contents
On this page

Create Channel - Plugixa Video

POST /pvx/v1/channels

Create a channel, the public page that groups a creator’s videos.

Needs a user (signed in with an Application Password or the login cookie) who has the plugixa_video_create capability and the right to edit channels. In the free plugin only administrators hold it; with Pro, editors and the Video Creator role hold it too. Needs the Channels app on in Plugixa Video -> App manager; with it off, this route answers 404.

Note. A new channel is published unless you send another status, unlike a video, which starts as a draft. With Pro’s review switched on, a Video Creator’s channel waits as pending.

Request

POST https://your-site.example/wp-json/pvx/v1/channels

Request body

Content type: application/json

Field Type Required Description
title string Yes The channel’s name. Must not be blank.
description string No HTML, filtered like post content.
status string No publish (the default), pending, draft or private.
avatar_id integer No Media library id of the avatar. Also set as the featured image.
banner_id integer No Media library id of the banner.
links object[] No Up to 10 {label, url}. Links without a valid http or https URL are dropped; any after the tenth are ignored.
author integer No The owner’s user id. Only users who may edit other people’s channels can set it; for anyone else it is ignored and the caller owns the channel.
{
  "title": "Far Places",
  "description": "<p>Slow travel films from the edges of the map.</p>",
  "avatar_id": 1301,
  "banner_id": 1302,
  "links": [
    {
      "label": "Instagram",
      "url": "https://instagram.com/farplaces"
    }
  ]
}

Responses

201 Created. data is the new channel in the back-office shape.

{
  "success": true,
  "data": {
    "id": 692,
    "title": "Far Places",
    "description": "<p>Slow travel films from the edges of the map.</p>",
    "avatar": "https://your-site.example/wp-content/uploads/2026/11/far-places-150x150.jpg",
    "banner": "https://your-site.example/wp-content/uploads/2026/11/far-places-banner.jpg",
    "links": [
      {
        "label": "Instagram",
        "url": "https://instagram.com/farplaces"
      }
    ],
    "owner": "Lena Holt",
    "owner_id": 7,
    "subscribers": 0,
    "subscribed": false,
    "permalink": "https://your-site.example/channel/far-places/",
    "status": "publish",
    "avatar_id": 1301,
    "banner_id": 1302,
    "author": 7
  }
}
Field Type Meaning
data.id integer The channel’s id
data.status string publish, pending, draft or private
data.description string The description as stored, HTML
data.avatar_id integer Media library id of the avatar, 0 for none
data.banner_id integer Media library id of the banner, 0 for none
data.author integer The owner’s WordPress user id

Errors

Status Code When
422 plugixa_video_invalid title is blank, or status is unknown; data.field names the field.
401 / 403 plugixa_video_forbidden The caller may not create channels.

Plus the errors every endpoint can return.

Examples

curl -s -X POST "https://your-site.example/wp-json/pvx/v1/channels" \
  -u "$WP_USER:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"title":"Far Places","description":"<p>Slow travel films from the edges of the map.</p>","avatar_id":1301,"banner_id":1302,"links":[{"label":"Instagram","url":"https://instagram.com/farplaces"}]}'
<?php
$ch = curl_init('https://your-site.example/wp-json/pvx/v1/channels');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => getenv('WP_USER') . ':' . getenv('WP_APP_PASSWORD'),
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'title'       => 'Far Places',
        'description' => '<p>Slow travel films from the edges of the map.</p>',
        'avatar_id'   => 1301,
        'banner_id'   => 1302,
        'links'       => [
            [
                'label' => 'Instagram',
                'url'   => 'https://instagram.com/farplaces',
            ],
        ],
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch('https://your-site.example/wp-json/pvx/v1/channels', {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${btoa(`${process.env.WP_USER}:${process.env.WP_APP_PASSWORD}`)}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ title: "Far Places", description: "<p>Slow travel films from the edges of the map.</p>", avatar_id: 1301, banner_id: 1302, links: [{"label": "Instagram", "url": "https://instagram.com/farplaces"}] }),
});
const { data } = await response.json();

Quick Links

Share