YouTube Play API
Dokumentasi resmi YouTube Play API dari Maelyn API untuk mencari video YouTube dan mengambil audio MP3 dari hasil pencarian, URL, atau videoId
Base Information
- BASE_URL_API:
https://api.maelyn.eu/api - Path / Endpoint:
/download/youtube/play - Method:
POST - Credit Usage:
2
Authentication
Gunakan header berikut pada setiap request:
x-maelyn-auth: YOUR_API_KEY
Content-Type: application/json
Description
Endpoint ini digunakan untuk mencari musik/video YouTube dan mengambil audio MP3 dari YouTube.
API mendukung dua action utama:
searchuntuk mencari video YouTube berdasarkan query/judulplayuntuk mengambil audio MP3 dari URL, videoId, atau query
API dapat digunakan untuk membuat fitur seperti YouTube Music Player, downloader audio, atau pencarian lagu otomatis.
Request Body
Search YouTube
{
"action": "search",
"query": "alone alan walker",
"limit": 5
}
Play dari videoId
{
"action": "play",
"videoId": "VIDEO_ID_DARI_HASIL_SEARCH",
"withInfo": true
}
Play langsung dari query
{
"action": "play",
"query": "alone alan walker",
"withInfo": true
}
Play langsung dari URL
{
"action": "play",
"url": "https://www.youtube.com/watch?v=xxxxxxxxxxx",
"withInfo": true
}
Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
action | string | No | Action API. Gunakan search atau play. Default: search |
query | string | Yes* | Kata kunci/judul musik atau video YouTube |
q | string | Yes* | Alternatif dari query |
title | string | Yes* | Alternatif dari query |
keyword | string | Yes* | Alternatif dari query |
url | string | Yes* | URL video YouTube |
link | string | Yes* | Alternatif dari url |
videoId | string | Yes* | ID video YouTube |
id | string | Yes* | Alternatif dari videoId |
limit | number | No | Jumlah hasil pencarian. Default: 10, minimal: 1, maksimal: 20 |
withInfo | boolean | No | Sertakan metadata video. Default: true |
Untuk
action=search, salah satu dariquery,q,title, ataukeywordwajib diisi.
Untuk
action=play, salah satu dariurl,link,videoId,id,query,q,title, ataukeywordwajib diisi.
Notes
- Body request harus berupa JSON.
actionhanya mendukungsearchdanplay.- Jika
actiontidak dikirim, default action adalahsearch. - URL harus valid dan berasal dari YouTube.
videoIdharus berupa ID YouTube valid dengan panjang 11 karakter.- Untuk
action=playmenggunakanquery, API akan otomatis mengambil hasil pencarian teratas. - Jika
withInfo=false, metadata tambahan video tidak akan disertakan. - Proses play/download audio bisa memakan waktu lebih lama tergantung durasi video.
- Endpoint ini menggunakan sistem queue untuk menjaga stabilitas server.
Example Usage
1. Search musik YouTube
{
"action": "search",
"query": "alone alan walker",
"limit": 5
}
2. Play dari hasil search
{
"action": "play",
"videoId": "1-xGerv5FOk",
"withInfo": true
}
3. Play langsung dari judul
{
"action": "play",
"query": "alone alan walker",
"withInfo": true
}
4. Play dari URL YouTube
{
"action": "play",
"url": "https://www.youtube.com/watch?v=1-xGerv5FOk",
"withInfo": true
}
Success Response
Search Response
{
"success": true,
"message": "Berhasil mencari musik YouTube",
"result": {
"query": "alone alan walker",
"total": 5,
"items": [
{
"index": 1,
"videoId": "1-xGerv5FOk",
"title": "Alan Walker - Alone",
"url": "https://www.youtube.com/watch?v=1-xGerv5FOk",
"duration": "2:44",
"seconds": 164,
"views": 1505254899,
"ago": "9 years ago",
"author": {
"name": "Alan Walker",
"url": "https://youtube.com/channel/UCJrOtniJ0-NWz37R30urifQ"
},
"thumbnail": "https://i.ytimg.com/vi/1-xGerv5FOk/hq720.jpg"
}
]
}
}
Play Response
{
"success": true,
"message": "Berhasil play YouTube audio",
"result": {
"selected": null,
"audio": {
"success": true,
"videoId": "1-xGerv5FOk",
"request": {
"url": "https://www.youtube.com/watch?v=1-xGerv5FOk",
"type": "mp3",
"quality": "128",
"withInfo": true
},
"media": {
"title": "Alan Walker - Alone",
"type": "mp3",
"quality": "128",
"duration": "02:43",
"durationSeconds": 163,
"cover": "https://i.ytimg.com/vi/1-xGerv5FOk/maxresdefault.jpg",
"file": {
"filename": "audio.mp3",
"url": "https://static-storage.maelyn.eu/proxy/audio.mp3",
"size": 2613356
}
},
"info": {
"publishedAt": "2016-12-02T07:59:01Z",
"channel": "Alan Walker",
"channelId": "UCJrOtniJ0-NWz37R30urifQ",
"description": "Video description...",
"tags": [
"Alan Walker",
"Alone",
"EDM"
],
"definition": "hd",
"duration": "2 Minutes, 44 Seconds",
"statistics": {
"viewCount": "1.505.255.442",
"likeCount": "12.350.192",
"favoriteCount": "0",
"commentCount": "443.348"
},
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/1-xGerv5FOk/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/1-xGerv5FOk/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/1-xGerv5FOk/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/1-xGerv5FOk/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/1-xGerv5FOk/maxresdefault.jpg",
"width": 1280,
"height": 720
}
}
}
}
}
}
Success Response with Query Play
Jika menggunakan action=play dengan query, field selected akan berisi video yang dipilih otomatis dari hasil pencarian teratas.
{
"success": true,
"message": "Berhasil play YouTube audio",
"result": {
"selected": {
"index": 1,
"videoId": "1-xGerv5FOk",
"title": "Alan Walker - Alone",
"url": "https://www.youtube.com/watch?v=1-xGerv5FOk",
"duration": "2:44",
"seconds": 164,
"views": 1505254899,
"ago": "9 years ago",
"author": {
"name": "Alan Walker",
"url": "https://youtube.com/channel/UCJrOtniJ0-NWz37R30urifQ"
},
"thumbnail": "https://i.ytimg.com/vi/1-xGerv5FOk/hq720.jpg"
},
"audio": {
"success": true,
"videoId": "1-xGerv5FOk",
"request": {
"url": "https://www.youtube.com/watch?v=1-xGerv5FOk",
"type": "mp3",
"quality": "128",
"withInfo": true
},
"media": {
"title": "Alan Walker - Alone",
"type": "mp3",
"quality": "128",
"duration": "02:43",
"durationSeconds": 163,
"cover": "https://i.ytimg.com/vi/1-xGerv5FOk/maxresdefault.jpg",
"file": {
"filename": "audio.mp3",
"url": "https://static-storage.maelyn.eu/proxy/audio.mp3",
"size": 2613356
}
}
}
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Status request |
message | string | Pesan hasil request |
result | object | Hasil response API |
query | string | Query yang digunakan untuk pencarian |
total | number | Total hasil pencarian yang dikembalikan |
items | array | Daftar hasil pencarian YouTube |
index | number | Nomor urutan hasil pencarian |
videoId | string | ID video YouTube |
title | string | Judul video |
url | string | URL video YouTube |
duration | string | Durasi video dalam format waktu |
seconds | number | Durasi video dalam detik |
views | number | Jumlah views video |
ago | string | Waktu publikasi relatif |
author | object | Informasi channel |
author.name | string | Nama channel |
author.url | string | URL channel |
thumbnail | string | URL thumbnail video |
selected | object | Video yang dipilih otomatis saat play dari query |
audio | object | Hasil proses audio MP3 |
request | object | Informasi request download |
request.url | string | URL YouTube yang diproses |
request.type | string | Tipe output audio |
request.quality | string | Kualitas audio |
media | object | Informasi file media |
media.title | string | Judul media |
media.type | string | Tipe file media |
media.quality | string | Kualitas file media |
media.duration | string | Durasi media |
durationSeconds | number | Durasi media dalam detik |
cover | string | URL cover/thumbnail |
file | object | Informasi file audio |
filename | string | Nama file audio |
file.url | string | URL file audio MP3 |
size | number | Ukuran file dalam bytes |
info | object | Metadata video jika withInfo=true |
publishedAt | string | Tanggal publikasi video |
channel | string | Nama channel |
channelId | string | ID channel YouTube |
description | string | Deskripsi video |
tags | array | Daftar tag video |
definition | string | Kualitas definisi video |
statistics | object | Statistik video |
thumbnails | object | Daftar thumbnail video |
Error Response
Invalid JSON
{
"success": false,
"message": "Body JSON tidak valid"
}
Query Required
{
"success": false,
"message": "query wajib diisi"
}
Search Not Found
{
"success": false,
"message": "Musik/video YouTube tidak ditemukan"
}
Play Parameter Required
{
"success": false,
"message": "url, videoId, atau query wajib diisi"
}
Invalid YouTube URL
{
"success": false,
"message": "URL YouTube tidak valid"
}
Invalid YouTube videoId
{
"success": false,
"message": "videoId YouTube tidak valid"
}
Audio Not Found
{
"success": false,
"message": "Gagal mengambil audio YouTube"
}
Invalid Action
{
"success": false,
"message": "action tidak valid. Gunakan search atau play"
}
Internal Server Error
{
"success": false,
"message": "Internal server error"
}