Tienes una cola de enlaces de YouTube y una aplicación PHP que necesita MP3s esta semana. Al final de esta guía, llamarás a la API de Video de Youtube a Audio desde tu backend PHP, obtendrás un enlace directo a MP3 más metadatos, y lo manejarás de forma segura en producción—usando una clave API de Zyla API Hub.
Lo que puedes construir con la API de Video de Youtube a Audio
La API de Video de Youtube a Audio convierte un video de YouTube (por ID) en un archivo de audio y devuelve:
- Un enlace directo al archivo MP3
- El título del video
- Tamaño del archivo
- Progreso y estado de la conversión
- Duración en segundos (punto flotante)
Los casos de uso típicos incluyen la generación de feeds de podcast a partir de videos de formato corto, tuberías internas de transcripción (primero obtener MP3, luego alimentar a texto a voz), recortes de contenido automatizados, o flujos de trabajo de escucha offline. El endpoint está diseñado para videos cortos (aproximadamente 5 minutos o menos).
Comenzando en Zyla API Hub
Zyla API Hub centraliza miles de APIs detrás de una sola cuenta, suscripción y clave API. Te suscribes una vez y llamas a los endpoints a través de categorías con un encabezado de Autorización consistente. La facturación es suscripción + cuota (no pago por llamada). Para la primera API que pruebes, normalmente obtienes una prueba de 7 días o 50 solicitudes. No hay Plan Gratuito; consulta la página de la API para las opciones de acceso y precios actuales antes de lanzar.
- Abre la página de la API: API de Video de Youtube a Audio en Zyla.
- Haz clic en Suscribirse (o Comenzar Prueba Gratuita cuando esté disponible) y obtén tu clave API.
- Usa Authorization: Bearer YOUR_API_KEY en cada solicitud a zylalabs.com API endpoints.
¿Listo para integrar? Crea tu cuenta de desarrollador gratuita aquí para obtener una clave API: Registrarse.
Referencia de endpoint
La API expone un endpoint accionable para la conversión. Usa la URL exacta y los parámetros que se muestran a continuación.
Obtener Audio
- Método: GET
- URL: https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio
- Descripción: Proporciona un ID de video de YouTube. Los videos deben ser aproximadamente de 5 minutos o menos.
- Parámetro de consulta requerido:
- id (string): el ID del video de YouTube
cURL
curl -s -X GET "https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio?id=p-Z3YrHJ1sU" \
-H "Authorization: Bearer YOUR_API_KEY"
JSON (RESPUESTA REAL DE LA API)
{
"link": "https://eta.123tokyo.xyz/get.php/9/9e/ty7nkwYqodA.mp3?cid=MmEwMTo0Zjg6YzAxMjozMmVlOjoxfE5BfERF&h=FwrcvY5cIfOO0jyXh5C-6Q&s=1737705748&n=%E2%82%B91%2C07%2C000%20_iPhone%2016%20Pro%20Max_%20USA%20to%20INDIA_%20%23shorts%20%23youtubeshorts&uT=R&uN=QWxlam9aeWxhTGFicw%3D%3D",
"title": "₹1,07,000 *iPhone 16 Pro Max* USA to INDIA! #shorts #youtubeshorts",
"filesize": 417480,
"progress": 100,
"duration": 22.896054233758,
"status": "ok",
"msg": "success"
}
Lo que significan estos campos y cómo usarlos:
- link: URL directa al MP3 generado. Incluye parámetros codificados en URL; trátalo como una cadena opaca y no lo modifiques.
- title: Título original del video. Útil para nombrar archivos o metadatos.
- filesize: Tamaño del MP3 en bytes. Bueno para verificaciones de cuota o planificación de almacenamiento.
- progress: 100 indica finalización.
- duration: Longitud en segundos (float). Úsalo para UX (por ejemplo, barras de progreso) o procesamiento posterior.
- status/msg: Indicadores de estado simples. Espera "ok" y "success" en una ejecución exitosa.
Integración en PHP (curl_init) con manejo robusto
A continuación se muestra un ejemplo mínimo en PHP para llamar al endpoint, analizar el JSON y opcionalmente descargar el MP3 en disco. Solo utiliza el parámetro id requerido y el encabezado de Autorización.
PHP
<?php
$apiKey = 'YOUR_API_KEY';
$videoId = 'p-Z3YrHJ1sU'; // Reemplaza con tu ID de video de YouTube
$url = 'https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio?id=' . urlencode($videoId);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json'
],
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($response === false || $httpCode < 200 || $httpCode >= 300) {
http_response_code(502);
echo json_encode([
'error' => 'La solicitud a la API falló',
'httpCode' => $httpCode,
'curlError' => $error,
]);
exit;
}
$data = json_decode($response, true);
if (!is_array($data) || empty($data['status']) || $data['status'] !== 'ok') {
http_response_code(500);
echo json_encode([
'error' => 'Respuesta inesperada de la API',
'response' => $response,
]);
exit;
}
// Extraer campos
$link = $data['link'] ?? null;
$title = $data['title'] ?? 'sin título';
$filesize = $data['filesize'] ?? null;
$duration = $data['duration'] ?? null;
echo "Título: {
$title}
";
echo "Duración (s): {
$duration}
";
echo "Tamaño del archivo (bytes): {
$filesize}
";
echo "URL MP3: {
$link}
";
// Opcional: descargar el MP3
if ($link) {
$safeTitle = preg_replace('/[^A-Za-z0-9_\-]+/', '_', $title);
$target = __DIR__ . '/' . $safeTitle . '.mp3';
$fp = fopen($target, 'w');
if ($fp === false) {
throw new RuntimeException('No se puede abrir el archivo para escritura: ' . $target);
}
$ch2 = curl_init($link);
curl_setopt_array($ch2, [
CURLOPT_FILE => $fp,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 120,
]);
$ok = curl_exec($ch2);
$err2 = curl_error($ch2);
curl_close($ch2);
fclose($fp);
if (!$ok) {
unlink($target);
throw new RuntimeException('La descarga falló: ' . $err2);
}
echo "Guardado: {
$target}
";
}
Ejemplo de JavaScript (Node.js fetch)
Este ejemplo demuestra una simple solicitud GET usando fetch nativo en Node.js 18+ o undici. Imprime los mismos campos clave y muestra cómo transmitir el MP3 si necesitas persistirlo.
JavaScript
import fs from 'node:fs';
import { pipeline } from 'node:stream';
import { promisify } from 'node:util';
const streamPipeline = promisify(pipeline);
const API_KEY = 'YOUR_API_KEY';
const videoId = 'p-Z3YrHJ1sU';
const url = `https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio?id=${encodeURIComponent(videoId)}`;
const res = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Accept': 'application/json'
}
});
if (!res.ok) {
throw new Error(`Error de API: ${res.status} ${res.statusText}`);
}
const data = await res.json();
if (data.status !== 'ok') {
throw new Error(`Conversión no ok: ${JSON.stringify(data)}`);
}
console.log('Título:', data.title);
console.log('Duración (s):', data.duration);
console.log('Tamaño del archivo (bytes):', data.filesize);
console.log('URL MP3:', data.link);
// Descarga opcional
if (data.link) {
const mp3Res = await fetch(data.link);
if (!mp3Res.ok) throw new Error(`La descarga falló: ${mp3Res.status}`);
const safeTitle = data.title.replace(/[^A-Za-z0-9_\-]+/g, '_');
await streamPipeline(mp3Res.body, fs.createWriteStream(`${safeTitle}.mp3`));
console.log(`Guardado: ${safeTitle}.mp3`);
}
Flujo de extremo a extremo en producción
Usa esta secuencia para integrar la API en tu tubería:
- Valida la entrada: asegúrate de pasar solo el ID del video de YouTube (por ejemplo, p-Z3YrHJ1sU). Si tienes URLs completas, extrae el parámetro v o el ID de la ruta de tu lado.
- Llama al endpoint Obtener Audio con Authorization: Bearer YOUR_API_KEY.
- Verifica el estado y msg; procede solo si el estado es ok.
- Lee la duración para imponer tus propios límites superiores para el tiempo de procesamiento y almacenamiento. El endpoint está destinado a videos de aproximadamente 5 minutos o menos.
- Consume el enlace para descargar el MP3. Trátalo como una URL opaca; no modifiques los parámetros de consulta.
- Almacena el tamaño del archivo y el título como metadatos para servicios posteriores (indexación, metadatos de objeto S3, etc.).
Consejos prácticos que ahorran tiempo
- Timeouts: Establece tiempos de espera sensatos para el cliente HTTP (por ejemplo, 30s para la llamada a la API, más tiempo para la descarga de MP3) para evitar trabajadores atascados.
- Reintentos: Para errores de red transitorios, reintenta la llamada a la API con retroceso. No fuerces reintentos en respuestas 4xx.
- Cacheo: Si procesas los mismos IDs a menudo, almacena respuestas exitosas (título, tamaño del archivo, duración, enlace) en un almacén y establece tu propia retención. Revalida según sea necesario.
- Nombres de archivos: Los títulos de los videos pueden contener caracteres no adecuados para sistemas de archivos. Sanitiza antes de guardar.
- Unidades: el tamaño del archivo es en bytes; la duración es en segundos (float). Convierte antes de mostrar.
- Guardia de longitud: Impón tu propio límite cerca de 5 minutos para evitar trabajo desperdiciado en videos más largos.
Usando la API desde agentes de IA a través de MCP
Puedes llamar al mismo endpoint desde herramientas compatibles con MCP (Claude Code, Cursor, Windsurf, etc.) usando el hub MCP de Zyla. Configura tu cliente para usar la base MCP e incluye tu clave API:
- Base MCP: https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
- Aún emitirás un GET a la misma URL de recurso: https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio?id=p-Z3YrHJ1sU
- Mantén el encabezado Authorization: Bearer YOUR_API_KEY en la configuración de llamada HTTP de tu herramienta.
Para la configuración del entorno y detalles del cliente, consulta la documentación de MCP.
Patrones comunes y casos de uso en el mundo real
- Ingesta por lotes para transcripción: Convierte muchos IDs cortos a MP3, encola archivos en tu tubería de texto a voz, adjunta duración y tamaño de archivo para estimaciones de costos.
- Servicio de vista previa de audio: Almacena enlace, título y duración en tu base de datos para potenciar interfaces de reproducción y tarjetas de audio compactas.
- Recorte automatizado: Obtén MP3 para clips de formato corto y pásalos por normalización de audio o recorte de silencio.
- Archivado de contenido interno: Para canales de creadores específicos, analiza IDs, convierte y deposita en almacenamiento gestionado con metadatos para búsqueda.
Solución de problemas y casos extremos
- Código HTTP no 200 de la API: Registra el estado HTTP y el cuerpo de respuesta; no analices JSON ciegamente en errores.
- status no "ok": Trátalo como una conversión fallida y muestra msg en registros o a operadores.
- ID inválido o faltante: Asegúrate de pasar solo la cadena del ID del video. La sanitización es tu responsabilidad.
- Descargas fallando: Sigue redirecciones y permite suficiente tiempo de espera en la obtención del MP3; almacena fallos parciales y reintenta por separado de la llamada a metadatos.
- Planificación de cuota: Zyla utiliza suscripción + cuota. Monitorea el uso en tu panel de Zyla y consulta la página de la API para detalles actuales del plan.
Notas de seguridad
- No codifiques claves API en el código fuente; usa variables de entorno o administradores de secretos.
- Limita quién puede activar conversiones en tu aplicación. Valida el origen de las solicitudes si expones un webhook o endpoint HTTP.
- Registra solo los últimos 4 caracteres de las claves. Nunca imprimas credenciales completas en registros o código del lado del cliente.
Lista de verificación de pruebas antes de lanzar
- Prueba con al menos tres IDs de YouTube diferentes (incluyendo uno cerca de 5 minutos y uno corto).
- Verifica el análisis de JSON y la presencia de campos para enlace, título, tamaño del archivo, duración, estado, msg.
- Simula tiempos de espera y fallos de red para confirmar reintentos y visualización de errores.
- Asegúrate de que los nombres de archivos derivados del título estén sanitizados en todos los objetivos de OS de despliegue.
- Ejecuta de extremo a extremo: llamada a la API, descarga de MP3, almacenamiento y cualquier procesamiento posterior (por ejemplo, transcripción).
¿A dónde ir a continuación?
Explora más herramientas de audio y contenido en la página de la API de Video de Youtube a Audio de Zyla y el resto de Zyla API Hub. Una cuenta, una clave, encabezados consistentes a través de categorías como audio, IA, enriquecimiento y más.
FAQ
1) ¿Qué parámetro necesito pasar para obtener audio?
Pasa el ID del video de YouTube a través del parámetro de consulta id. Ejemplo: id=p-Z3YrHJ1sU.
2) ¿Cómo me autentico?
Incluye Authorization: Bearer YOUR_API_KEY en los encabezados de solicitud a los endpoints de zylalabs.com.
3) ¿Qué salida obtengo?
Un objeto JSON con enlace (URL directa MP3), título, tamaño del archivo, progreso (100 cuando está completo), duración (segundos), estado y msg.
4) ¿Hay límites en la duración del video?
Sí. El endpoint está destinado a videos de aproximadamente 5 minutos o menos.
5) ¿Cómo se maneja la facturación?
Zyla utiliza suscripción + cuota (no pago por llamada). Para tu primera API, normalmente obtienes una prueba de 7 días o 50 solicitudes. No hay Plan Gratuito; consulta la página de la API para las opciones actuales.
Lanza tu integración ahora: obtén tu clave API en minutos y comienza a llamar al endpoint. Crea tu cuenta aquí: Registrarse. Luego visita la página de la API de Video de Youtube a Audio, suscríbete y conecta el encabezado de Autorización en tu código PHP.