Skip to content

Videos

Public lookup

php
use Alchemyguy\YoutubeLaravelApi\Services\VideoService;

$videos = app(VideoService::class);

$result = $videos->listById(['id' => 'dQw4w9WgXcQ']);
$result = $videos->listById(['id' => 'a,b,c'], 'snippet,statistics');
php
$result = $videos->search([
    'q' => 'laravel tutorial',
    'maxResults' => 25,
    'type' => 'video',
]);

WARNING

The relatedToVideoId parameter was removed by Google in August 2023. Related-video discovery is no longer supported.

Upload a video

php
use Alchemyguy\YoutubeLaravelApi\DTOs\VideoUploadData;
use Alchemyguy\YoutubeLaravelApi\Enums\PrivacyStatus;

$result = $videos->upload($token, '/path/to/video.mp4', new VideoUploadData(
    title: 'My Video',
    description: 'Description',
    categoryId: '22',  // see https://developers.google.com/youtube/v3/docs/videoCategories/list
    privacyStatus: PrivacyStatus::Unlisted,
    tags: ['laravel', 'php'],
));

The upload is resumable and chunked (default 1 MiB chunks). For large files on slow connections, increase chunks:

php
new VideoUploadData(
    /* ... */
    chunkSizeBytes: 4 * 1024 * 1024,  // 4 MiB
);

Maximum video size: 128 GB or 12 hours, whichever comes first.

Delete

php
$videos->delete($token, 'video-id');

Rate

php
use Alchemyguy\YoutubeLaravelApi\Enums\Rating;

$videos->rate($token, 'video-id', Rating::Like);
$videos->rate($token, 'video-id', Rating::Dislike);
$videos->rate($token, 'video-id', Rating::None);  // remove rating

Released under the MIT License.