collect the videos you love
collect | share | explore

MyVidster API Beta

Use the MyVidster API to read public video data, fetch user profiles, bookmark new videos, and update your own video, channel, and collection metadata.

Base URL: https://api.myvidster.com/v1

Read calls use GET. Write calls use POST with JSON or standard form fields. Write calls require your MyVidster user_id and private API key from your user options page.

Public video reads return videos marked family friendly (private = 0) and adult (private = 2). Private videos (private = 1) are only returned when the owner provides user_id and a valid API key.

Authentication

Authenticated calls require a user id and token. You can send the token as token, api_key, or as a bearer token. You can get your private API key from https://www.myvidster.com/user/options.php.

To obtain your user_id, provide your display name to the User Profile read endpoint. The numeric user id is returned in user.id.

GET https://api.myvidster.com/v1?action=user&username=YOUR_DISPLAY_NAME
Authorization: Bearer YOUR_PRIVATE_API_KEY
FieldRequiredDescription
user_idYesYour MyVidster numeric user id. Obtain it from user.id after calling the User Profile read endpoint with your display name.
tokenYesYour private API key from MyVidster user options.

Read Endpoints

Status

GET https://api.myvidster.com/v1?action=status

Single Video

GET https://api.myvidster.com/v1?action=video&id=12345

Recent/Search Videos

GET https://api.myvidster.com/v1?action=videos&q=music&limit=25

User Profile

GET https://api.myvidster.com/v1?action=user&username=demo

User Videos

GET https://api.myvidster.com/v1?action=user_videos&username=demo&sort=recent

ParameterApplies ToDescription
limitvideos, user_videosNumber of results, from 1 to 100. Default is 25.
pagevideos, user_videosPage number. Default is 1.
qvideosOptional text search across title, description, tags, and keywords.
sortuser_videosOptional sort order. Use recent, oldest, most_viewed, least_viewed, title_asc, or title_desc. Default is recent.
user_id + tokenvideo, user_videosOptional for reads. When provided by the owner, private videos are included.

Private Parameter

The private field controls video visibility. Public read calls return videos with private = 0 and private = 2. Owner-only videos with private = 1 are returned only when the owner sends user_id and a valid token or api_key.

ValueMeaningAPI Behavior
0Family friendly public videoShown in public video reads.
1Private owner-only videoShown only to the authenticated owner on video and user_videos reads.
2Adult public videoShown in public video reads.
3Deleted or disabled videoNot returned by public API reads and not accepted for API writes.

For bookmark_video, send private as 0, 1, or 2. When omitted, the new bookmark defaults to public family friendly unless MyVidster's existing save logic marks it differently. For update_video, omit private to keep the current visibility.

Write Endpoints

All write endpoints are POST requests. Omitted metadata fields keep their current value when updating existing content.

ActionRequired FieldsDescription
bookmark_videouser_id, token, url, channel_idBookmark a new video by providing the URL to the video's web page. Optional fields: title, description, tags, thumbnail, thumbnail_count, count, private, embed, and content_meta.
update_videouser_id, token, video_idUpdate a video you own.
remove_videouser_id, token, video_idRemove a video you own. This soft-deletes the bookmark and removes it from public API reads. Rate limited to 15 successful removals per 15 minutes per user.
update_channeluser_id, token, channel_idUpdate a channel you own.
update_collectionuser_id, token, collection_idUpdate a collection you own.

Bookmark Video Optional Parameters

ParameterDescription
titleOptional title override for the new bookmark.
descriptionOptional description override for the new bookmark.
tagsOptional tags string.
thumbnailOptional thumbnail URL override.
thumbnail_countOptional thumbnail index to select when multiple thumbnails are detected.
countOptional embed index to select when multiple embeds are detected.
privateOptional visibility: 0 family friendly public, 1 private owner-only, or 2 adult public.
embedOptional embed HTML or URL override.
content_metaOptional content metadata flag. Use 1 for straight content or 2 for gay content.

PHP Examples

Bookmark a New Video

<?php
$apiUrl = 'https://api.myvidster.com/v1?action=bookmark_video';

$payload = [
    'user_id' => 123,
    'token' => 'YOUR_PRIVATE_API_KEY',
    'url' => 'https://example.com/video-page',
    'channel_id' => 456,
    'title' => 'API test title',
    'description' => 'API test description',
    'tags' => 'music tutorial',
    'thumbnail' => 'https://example.com/thumb.jpg',
    'private' => 0,
    'embed' => '<iframe src="https://example.com/embed/123" width="640" height="360" allowfullscreen></iframe>'
];

$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$result = json_decode($response, true);

if ($httpCode !== 200 || empty($result['ok'])) {
    print_r($result);
    exit;
}

echo 'Bookmarked video id: ' . $result['video_id'];
?>

Update Video Metadata

<?php
$apiUrl = 'https://api.myvidster.com/v1?action=update_video';

$payload = [
    'user_id' => 123,
    'token' => 'YOUR_PRIVATE_API_KEY',
    'video_id' => 789,
    'title' => 'Updated title',
    'description' => 'Updated description',
    'tags' => 'favorites tutorial',
    'private' => 0
];

$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
?>

Remove a Video

<?php
$apiUrl = 'https://api.myvidster.com/v1?action=remove_video';

$payload = [
    'user_id' => 123,
    'token' => 'YOUR_PRIVATE_API_KEY',
    'video_id' => 789
];

$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
?>

Read Public Videos

<?php
$url = 'https://api.myvidster.com/v1?action=videos&q=music&limit=10';
$json = file_get_contents($url);
$result = json_decode($json, true);

foreach ($result['videos'] as $video) {
    echo $video['title'] . PHP_EOL;
}
?>

JavaScript Example

const response = await fetch('https://api.myvidster.com/v1?action=update_channel', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    user_id: 123,
    token: 'YOUR_PRIVATE_API_KEY',
    channel_id: 456,
    name: 'Updated channel name',
    description: 'Updated channel description'
  })
});

const result = await response.json();
console.log(result);

Python Example

import requests

payload = {
    "user_id": 123,
    "token": "YOUR_PRIVATE_API_KEY",
    "collection_id": 456,
    "name": "Updated collection name",
    "description": "Updated collection description",
    "thumb_num": 12
}

response = requests.post(
    "https://api.myvidster.com/v1?action=update_collection",
    json=payload
)

print(response.json())

cURL Examples

Get API Status

curl "https://api.myvidster.com/v1?action=status"

Bookmark a Video

curl -X POST "https://api.myvidster.com/v1?action=bookmark_video" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 123,
    "token": "YOUR_PRIVATE_API_KEY",
    "url": "https://example.com/video-page",
    "channel_id": 456,
    "title": "API test title",
    "description": "API test description",
    "tags": "music tutorial",
    "thumbnail": "https://example.com/thumb.jpg",
    "private": 0,
    "embed": ""
  }'

Remove a Video

curl -X POST "https://api.myvidster.com/v1?action=remove_video" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 123,
    "token": "YOUR_PRIVATE_API_KEY",
    "video_id": 789
  }'

Common Response Format

Success

{
  "ok": true,
  "message": "Video bookmarked.",
  "video_id": 12345
}

Error

{
  "ok": false,
  "error": {
    "code": "INVALID_TOKEN",
    "message": "Invalid API token"
  }
}