Contents
List Videos - Plugixa Video
GET /pvx/v1/videos
List videos one page at a time, newest first by default, with filters for the catalogue pages of a front end.
Public: no sign-in needed for published videos. With context=edit, the caller needs the plugixa_video_view capability, and a user who may not edit other people’s videos (a Video Creator PRO) sees only their own.
Note. The public list holds
publishvideos only (plusfuturewithupcoming). Unlisted, private, pending and draft videos never appear in it. Locked content is not removed from the list: a members-only or paid video is listed like any other, without its source.
Request
GET https://your-site.example/wp-json/pvx/v1/videos?channel=692&orderby=views&per_page=5
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
context |
string |
view |
view for the public shape of published videos. edit for the back-office shape and every status except the trash, which needs the plugixa_video_view capability. |
access |
string |
free, members or paid. |
|
type |
string |
video; with Pro also movie or episode. |
|
duration |
string |
short (up to 4 minutes), medium (4 to 20 minutes) or long (20 minutes or more). |
|
orderby |
string |
date |
date, views or title. Videos never viewed are kept when sorting by views. |
category |
integer |
Videos in this category. | |
tag |
integer |
Videos with this tag. | |
channel |
integer |
Videos in this channel. | |
series |
integer |
Episodes of this series PRO. | |
include |
integer[] |
Only these ids, in this order (include[]=838&include[]=840). Overrides orderby. |
|
upcoming |
boolean |
false |
Also list scheduled videos (coming_soon is true on them). |
Plus the list parameters every paged list accepts. search matches the title, the description and the excerpt. With context=edit the list also accepts the filters of the admin’s filter drawer, which are not documented here.
Responses
200 OK. data is one page of videos.
{
"success": true,
"data": [
{
"id": 838,
"title": "Iceland: The Ring Road",
"excerpt": "A week around Iceland on Route 1, from Reykjavik to the glacier lagoons of the south coast.",
"source": "mp4",
"type": "video",
"poster": "https://your-site.example/wp-content/uploads/2026/11/ring-road-1024x576.jpg",
"poster_srcset": "https://your-site.example/wp-content/uploads/2026/11/ring-road-1024x576.jpg 1024w, https://your-site.example/wp-content/uploads/2026/11/ring-road-300x169.jpg 300w",
"poster_width": 1024,
"poster_height": 576,
"duration": 1460,
"access": "free",
"price": 0.0,
"channel_id": 692,
"channel": "Far Places",
"views": 1204,
"likes": 37,
"categories": [14],
"permalink": "https://your-site.example/video/iceland-the-ring-road/",
"date": "2026-11-12T09:30:00+00:00",
"status": "publish",
"coming_soon": false
}
],
"meta": {
"total": 14,
"pages": 3
}
}
| Field | Type | Meaning |
|---|---|---|
data[].id |
integer |
The video’s id |
data[].title |
string |
Plain-text title |
data[].excerpt |
string |
Plain text, up to 30 words. Empty for a password-protected video |
data[].source |
string |
hls, mp4, youtube or vimeo |
data[].type |
string |
video; with Pro also movie or episode |
data[].poster |
string |
Poster image URL, empty when there is none or the video is password-protected |
data[].duration |
integer |
Seconds |
data[].access |
string |
free, members or paid |
data[].price |
number |
Price of a paid video, else 0 |
data[].channel_id |
integer |
0 when the video is in no channel |
data[].channel |
string |
The channel’s name, or empty |
data[].views |
integer |
Times the source was loaded |
data[].likes |
integer |
Likes |
data[].categories |
integer[] |
Category ids |
data[].date |
string |
Publication date, ISO 8601 in UTC |
data[].status |
string |
WordPress status: publish, pvx_unlisted, future, pending, draft or private |
data[].coming_soon |
boolean |
true for a scheduled video |
meta.total |
integer |
Videos matching the filters, before paging |
meta.pages |
integer |
Number of pages at this per_page |
The public shape never carries the video’s source URL: ask Get Video Source for that. With Pro, every video also has series_id, season and episode (0 unless it is an episode), and an episode has a heading such as 1×3 · Title. With context=edit, each row is the back-office shape described in Get Video.
Errors
| Status | Code | When |
|---|---|---|
401 / 403 |
plugixa_video_forbidden |
context=edit without the plugixa_video_view capability. |
Plus the errors every endpoint can return.
Examples
curl -s "https://your-site.example/wp-json/pvx/v1/videos?channel=692&orderby=views&per_page=5"
<?php
$query = http_build_query([
'channel' => 692,
'orderby' => 'views',
'per_page' => 5,
]);
$ch = curl_init('https://your-site.example/wp-json/pvx/v1/videos?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const query = new URLSearchParams({ channel: "692", orderby: "views", per_page: "5" });
const response = await fetch(`https://your-site.example/wp-json/pvx/v1/videos?${query}`);
const { data } = await response.json();
Quick Links
Share