Necesitas una API para convertir programáticamente un video de YouTube en un archivo de audio y enviarlo esta semana. Al final de este artículo tendrás código funcional en curl y Python que devuelve un enlace directo de descarga MP3 desde una URL o ID de YouTube, y sabrás cómo integrarlo en tu pipeline de medios utilizando Zyla API Hub.
Qué hace esta API (y por qué es importante para integraciones de medios)
La API de Youtube a Audio convierte un video de YouTube en un archivo de audio y devuelve un enlace de descarga directa más metadatos útiles (título, duración, tamaño del archivo). Expone dos endpoints sencillos: uno acepta un ID de video de YouTube; el otro acepta una URL completa de YouTube. Esto es ideal para:
- Ingesta de podcast o conferencia: extraer MP3 para transcripción o resumen posterior.
- Flujos de trabajo de recorte de audio: obtener audio para cortar segmentos, normalizar o mezclar.
- Gestión de contenido: archivar versiones de audio de contenido de video para búsqueda interna o cumplimiento.
- Herramientas agénticas: permitir que un agente de IA extraiga audio cuando un usuario proporciona un enlace de YouTube.
Llamarás a los endpoints a través de HTTPS en Zyla API Hub utilizando una sola clave que puedes reutilizar en todo el mercado.
Comenzando en Zyla API Hub
Abre la página de la API para la API de Youtube a Audio y suscríbete. El hub utiliza un modelo de suscripción + cuota, no pago por llamada. No hay Plan Gratuito; la primera API generalmente ofrece una prueba de 7 días o 50 solicitudes para desbloquearte. Después de suscribirte recibirás una clave API. Todas las solicitudes en este artículo utilizan el encabezado Authorization: Bearer YOUR_API_KEY.
Ve aquí para comenzar: Comienza prueba de 7 días en la API de Youtube a Audio. También puedes explorar más de 10,000 APIs públicas en el mercado de Zyla API Hub con una cuenta y una clave API.
Endpoints que utilizarás
La API expone dos endpoints GET en Zyla API Hub. Ambos requieren el encabezado de autorización. Solo se admiten los parámetros enumerados a continuación.
1) Obtener Audio (por ID de video de YouTube)
- Método: GET
- URL: https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio
- Parámetro requerido: id (cadena) — el ID del video de YouTube.
- Descripción: Proporciona un ID de video de YouTube para recibir un enlace directo MP3 y metadatos.
ejemplo de curl (copiar-pegar):
curl -s -X GET "https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio?id=xFYQQPAOz7Y" \
-H "Authorization: Bearer YOUR_API_KEY"
Respuesta de muestra oficial:
{
"msg": "success",
"link": "https://theta.123tokyo.xyz/get.php/d/fa/xFYQQPAOz7Y.mp3?n=Eminem%20-%20Lose%20Yourself&uT=R&uN=QWxlam9aeWxhTGFicw%3D%3D&h=TcO7xrzRPZ9cGbw2wXP93w&s=1784312338&uT=R&uN=QWxlam9aeWxhTGFicw%3D%3D",
"status": "ok",
"duration": 327.49718169275,
"title": "Eminem - Lose Yourself",
"progress": 100,
"pc": 0,
"filesize": 4181397
}
Notas de campo que realmente usarás:
- link: URL directa al MP3 generado; puedes transmitirlo o descargarlo.
- title: Título del video (útil para nombres de archivo predeterminados).
- duration: Longitud del audio en segundos (punto flotante).
- filesize: Tamaño del archivo de audio en bytes.
- status y msg: Estado operativo; útil para verificaciones de éxito simples.
2) Descargar Audio (por URL completa de YouTube)
- Método: GET
- URL: https://zylalabs.com/api/381/youtube-to-audio-api/22174/download-audio
- Parámetro requerido: url (cadena) — URL completa de YouTube.
- Descripción: Proporciona una URL completa de YouTube para recuperar una URL de audio descargable.
ejemplo de curl (copiar-pegar):
Respuesta de muestra oficial:
Notas de campo:
- downloadUrl: Una URL que puedes GET para descargar el audio del video de YouTube proporcionado.
Cuándo usar cada endpoint
- ¿Ya tienes el ID del video (por ejemplo, “xFYQQPAOz7Y”)? Usa Obtener Audio. Obtendrás un enlace directo MP3 más duración, título, progreso y tamaño del archivo.
- ¿Tienes una URL completa de YouTube (por ejemplo, https://www.youtube.com/watch?v=_Yhyp-_hX2s)? Usa Descargar Audio. Obtendrás una URL descargable para ese recurso.
Si necesitas metadatos (duración/título/tamaño del archivo) junto con el enlace, prefiere Obtener Audio con el ID. Si tus entradas son URLs pegadas por el usuario, comienza con Descargar Audio para un preprocesamiento mínimo.
Un ejemplo funcional en Python
Este ejemplo en Python demuestra cómo llamar al endpoint Obtener Audio, validar la respuesta y descargar el MP3 en el disco utilizando el enlace devuelto. Reemplaza YOUR_API_KEY con tu clave de la página de la API.
import os
import sys
import json
import time
import urllib.parse
import requests
API_KEY = os.getenv("ZYLALABS_API_KEY", "YOUR_API_KEY")
VIDEO_ID = "xFYQQPAOz7Y" # ID de ejemplo; reemplazar en producción
def get_audio_by_id(video_id: str):
url = "https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio"
params = {"id": video_id}
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, headers=headers, params=params, timeout=60)
resp.raise_for_status()
return resp.json()
def download_file(file_url: str, out_path: str):
with requests.get(file_url, stream=True, timeout=300) as r:
r.raise_for_status()
with open(out_path, "wb") as f:
for chunk in r.iter_content(chunk_size=1_048_576): # 1MB
if chunk:
f.write(chunk)
def main():
data = get_audio_by_id(VIDEO_ID)
# Comprobaciones básicas basadas en campos documentados
if data.get("status") != "ok" or data.get("msg") != "success":
print("Conversión no exitosa:", json.dumps(data, indent=2))
sys.exit(1)
link = data.get("link")
title = data.get("title") or VIDEO_ID
duration = data.get("duration")
size_bytes = data.get("filesize")
if not link:
print("No se devolvió enlace de descarga:", json.dumps(data, indent=2))
sys.exit(1)
# Crear un nombre de archivo seguro
safe_title = "".join(c for c in title if c.isalnum() or c in (" ", "-", "_")).strip()
filename = f"{safe_title or VIDEO_ID}.mp3"
print(f"Descargando: {title} ({duration:.2f}s, {size_bytes} bytes)")
download_file(link, filename)
print(f"Guardado en {filename}")
if __name__ == "__main__":
main()
Notas:
- El encabezado Authorization es requerido para ambos endpoints.
- La duración es un número de punto flotante en segundos.
- filesize son bytes; úsalo para barras de progreso o verificaciones de cuota de disco.
- Transmite descargas grandes para evitar cargar el archivo completo en RAM.
Consejos prácticos y detalles de integración
- Estrategia de reintento: Los saltos de red a enlaces de descarga de terceros pueden tener fallos intermitentes. Envuelve la descarga final del archivo en un reintento con retroceso exponencial.
- Seguridad del nombre de archivo: Usa el título devuelto, pero sanea para evitar caracteres inválidos en el sistema de archivos.
- Cacheo: Si procesas el mismo recurso de YouTube repetidamente, almacena en caché el MP3 final en tu lado utilizando el ID del video para ahorrar tiempo y cuota.
- Persistencia de metadatos: Almacena la duración y el tamaño del archivo con tu registro de activos para potenciar elementos de UX como el tiempo estimado de descarga.
- Trabajos en segundo plano: Ejecuta conversiones y descargas de forma asíncrona para mantener las latencias de la API fuera de tu ruta de solicitud.
Flujos de trabajo de medios comunes que puedes implementar esta semana
- Pipeline de transcripción: Usa Descargar Audio en una URL de YouTube pegada, obtiene el MP3 y luego pásalo a tu herramienta de reconocimiento de voz.
- Generador de fragmentos: Usa Obtener Audio para extraer audio y metadatos, luego corta teasers de 30–60s para distribución social.
- Ingesta de conocimiento: Convierte regularmente contenido educativo de formato largo en MP3 para indexación posterior y búsqueda semántica.
- Transferencia de agente: Permite que un chatbot acepte una URL de YouTube, llame a la API y devuelva un enlace de audio para que el usuario lo descargue.
Llamando a esta API desde un agente de IA a través de MCP
Cada API de Zyla puede ser llamada desde agentes de IA que soportan el Protocolo de Contexto de Modelo (MCP). Apunta tu cliente compatible con MCP al endpoint MCP con tu clave como parámetro de consulta: https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY. Desde allí, tu agente puede emitir las mismas llamadas HTTPS a los endpoints de la API de Youtube a Audio mencionados anteriormente. Para detalles de configuración del agente, consulta el recurso MCP.
Flujo típico para agentes:
- Aceptar entrada del usuario (URL o ID de YouTube).
- Elegir el endpoint correspondiente (Obtener Audio para IDs; Descargar Audio para URLs completas).
- Devolver el enlace final de descarga MP3 al usuario o a la siguiente herramienta en la cadena.
Resolución de problemas
- 401 No autorizado: Asegúrate de que el encabezado de autorización esté presente y que el token de portador sea tu clave activa del mercado.
- Parámetro faltante o inválido: Cada endpoint requiere exactamente un parámetro (id para Obtener Audio, url para Descargar Audio). Verifica el formato y la codificación URL para cadenas de consulta.
- Descargas lentas: Transmite el archivo y considera un CDN en tu lado si redistribuyes activos a muchos usuarios.
- Planificación de cuota: El mercado utiliza suscripción + cuota. Monitorea tu uso y elige un plan que cubra tu volumen de conversión semanal. Consulta la página de la API para opciones de acceso y precios actuales.
Recordatorios de seguridad y cumplimiento
- Respeta los derechos de contenido y términos al convertir y almacenar audio.
- Regenera enlaces de descarga bajo demanda en lugar de codificar URLs de terceros que pueden expirar.
- Almacena solo lo que necesitas: almacena en caché el audio y metadatos mínimos (título, duración, tamaño del archivo) para tu caso de uso.
Copiar-pegar: fragmento mínimo de JavaScript fetch
Si prefieres JavaScript, aquí tienes un pequeño ejemplo que apunta a Obtener Audio por ID y registra el enlace directo MP3:
const API_KEY = "YOUR_API_KEY";
const videoId = "xFYQQPAOz7Y";
async function getAudioLinkById(id) {
const url = new URL("https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio");
url.searchParams.set("id", id);
const resp = await fetch(url.toString(), {
method: "GET",
headers: { "Authorization": `Bearer ${API_KEY}` }
});
if (!resp.ok) {
throw new Error(`HTTP ${resp.status}`);
}
const data = await resp.json();
if (data.status !== "ok" || data.msg !== "success" || !data.link) {
throw new Error(`Conversión no lista o fallida: ${JSON.stringify(data)}`);
}
return {
mp3Url: data.link,
title: data.title,
durationSec: data.duration,
sizeBytes: data.filesize
};
}
getAudioLinkById(videoId)
.then(info => {
console.log("URL MP3:", info.mp3Url);
console.log("Título:", info.title);
console.log("Duración (s):", info.durationSec);
console.log("Tamaño (bytes):", info.sizeBytes);
})
.catch(err => {
console.error("Error:", err);
});
Listas de verificación de envío
Para un trabajo de ingestión por lotes
- Normalización de entrada: Convierte cualquier URL de YouTube pegada en un ID cuando necesites metadatos (Obtener Audio), o pasa la URL tal como está (Descargar Audio).
- Paralelismo: Limita las conversiones y descargas concurrentes para que coincidan con tu capacidad de computación y red.
- Claves de almacenamiento: Usa el ID del video de YouTube como la clave de activo canónica en todo tu sistema.
- Manejo de errores: En fallos transitorios, reintenta la descarga final del archivo; en errores 4xx, registra y omite.
Para un botón de descarga activado por el usuario
- Llamada al servidor: Llama al endpoint del lado del servidor, no desde el navegador, para proteger tu clave API.
- URLs temporales: Obtén un enlace fresco al hacer clic para evitar URLs obsoletas.
- Interfaz de progreso: Usa el tamaño del archivo para calcular el progreso y la duración para estimaciones de “tiempo restante”.
Resumen: endpoints exactos a utilizar
- GET https://zylalabs.com/api/381/youtube-to-audio-api/8884/get-audio?id=YOUR_VIDEO_ID — devuelve enlace, título, duración, progreso, tamaño del archivo.
- GET https://zylalabs.com/api/381/youtube-to-audio-api/22174/download-audio?url=YOUR_YOUTUBE_URL — devuelve downloadUrl para la URL de video proporcionada.
Encabezado de autenticación para ambos: Authorization: Bearer YOUR_API_KEY.
FAQ
Q: ¿Necesito la URL completa o solo el ID del video?
A: Usa Obtener Audio si tienes el ID del video y quieres metadatos con el enlace MP3. Usa Descargar Audio si tienes la URL completa de YouTube.
Q: ¿Qué representa el tamaño del archivo?
A: Es el tamaño del MP3 en bytes. Úsalo para estimar necesidades de ancho de banda y renderizar barras de progreso.
Q: ¿Puedo llamar a esto desde un agente de IA?
A: Sí. Apunta tu cliente compatible con MCP al endpoint MCP (https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY) y haz que el agente llame a las mismas URLs de API mostradas arriba.
Q: ¿Cómo se maneja la facturación?
A: Zyla utiliza un modelo de suscripción + cuota, no pago por llamada. No hay Plan Gratuito. La primera API generalmente ofrece una prueba de 7 días o 50 solicitudes para comenzar. Consulta la página de la API para opciones de acceso y precios actuales.
Q: ¿Qué encabezados necesito?
A: Incluye Authorization: Bearer YOUR_API_KEY en cada solicitud.
¿Listo para implementar tu flujo de medios? Obtén tu clave y comienza a convertir videos a MP3 ahora: Comienza prueba de 7 días en la API de Youtube a Audio.