Una API REST detrás del mismo motor, sin cambios
La API vive en jam-jam.org/api/v1 y ejecuta el mismo proceso que la app web, la app móvil y jam-jam.org/app/convert: un archivo soltado en cualquiera de ellas sigue el mismo código y da el mismo resultado. La documentación completa, con ejemplos reales en curl y Python y una forma de generar una clave, está en jam-jam.org/developers. La especificación OpenAPI 3.1, legible por máquina, en jam-jam.org/api/v1/openapi.json, incluye una secuencia de llamadas recomendada para un agente o un script, y jam-jam.org/llms.txt enumera cada capacidad de abajo para un asistente que lo lea directamente. Un servidor MCP (Model Context Protocol) oficial, @jam-jam/convert-mcp, expone la misma API como cinco herramientas, list_formats, convert_file, convert_text, get_job y get_usage, para agentes compatibles con MCP como Claude Desktop, Claude Code o Cursor.
Una clave, una cuota, y ninguna cola que hacer
Llamar a GET /formats no necesita ninguna autenticación y devuelve todos los formatos que este servidor acepta hoy, con sus límites de tamaño y duración, para que un script compruebe antes de subir nada. Todo lo demás espera una cabecera Authorization: Bearer, un token de sesión de Supabase o una clave API personal con el prefijo jj_live_..., creada gratis en Ajustes > Claves API dentro de la app. Sin clave, la llamada se trata como anónima: 3 conversiones cada 24 horas móviles. Una cuenta gratuita sube eso a 10 por semana, la misma cuota móvil que ya comparten la importación y la exportación del cancionero; Premium la sube a 500 al mes. Cada respuesta que gasta cuota lleva cabeceras X-Quota-* con el saldo exacto, y tanto los archivos subidos como los resultados se eliminan 24 horas después de crear el job, gane o pierda.
Enviar un job, y luego sondearlo o escucharlo
Una conversión es un job, no una respuesta instantánea: POST /jobs con un archivo como multipart/form-data, o una URL o texto pegado como JSON, devuelve un 202 con el id del job. Desde ahí, GET /jobs/{id} sondea su estado (respetando la cabecera Retry-After), o GET /jobs/{id}/events abre un flujo Server-Sent Events del mismo job para un script que prefiera esperar antes que preguntar. Cuando su fase llega a done, GET /jobs/{id}/result descarga el archivo terminado, y GET /jobs/{id}/result/songbook devuelve el mismo resultado que el pivote JSON propio de Jam Jam, acordes, letra, secciones, tonalidad, tempo, listo para leer directamente. Cada error vuelve como un cuerpo application/problem+json estándar en vez de un simple código de estado.
De entrada: una grabación, un enlace, un escaneo o una foto
Un archivo de audio o vídeo se convierte en un cancionero con sus acordes, su letra, su tonalidad y su tempo ya resueltos, la misma detección que la app ejecuta con un micrófono en vivo o un archivo subido, y desde ahí puede pasar directo a un vídeo de karaoke generado o a una pista de acompañamiento. Una página pegada por su URL, o una búsqueda, se lee igual que un sitio de tablaturas dentro de la app. Un PDF o una foto, una hoja de acordes impresa, una partitura escaneada, un cancionero completo, una tablatura de guitarra, incluso la foto de una pizarra tomada con el móvil, pasa por OCR y reconocimiento óptico de partituras hacia el mismo pivote. Convertir el audio en bruto directamente en notación, en pentagrama o en tablatura, sigue por ahora detrás de un filtro de calidad: esa dirección necesita una fuente que ya lleve la melodía, no una grabación en vivo.
De entrada: texto y notación que ya tienes
Los archivos ChordPro y OnSong, texto plano con acordes o letra o una tablatura ASCII, un documento Word o RTF, diapositivas, una hoja de cálculo o un repertorio en CSV, y el HTML de una página web pegada se convierten todos en el mismo cancionero, porque una hoja de acordes rara vez llega en una sola forma. Los archivos MusicXML y MIDI traen sus propias notas y, cuando las tienen, su letra; un archivo de proyecto Guitar Pro o MuseScore (.gp, .gpx, .mscz y extensiones relacionadas) llega al cancionero de la misma forma, en beta; un archivo de letra sincronizada (.lrc, .srt, .vtt, .ass) trae su sincronización; y un archivo .jamsong o una exportación en zip se reimporta sin pérdidas, exactamente como salió de Jam Jam.
De salida: el formato que el job realmente necesita
Desde ese mismo cancionero, la API exporta un PDF de los acordes, de la letra o de una cuadrícula en blanco; una imagen PNG, una página HTML, texto plano, ChordPro, una anotación de acordes chords-lab o chords-csv, o solo la tonalidad y el tempo; una versión transportada o con cejilla; diagramas de acordes para guitarra, ukelele, piano y los demás instrumentos que cubre Jam Jam; letra sincronizada en .lrc o .srt; un vídeo de karaoke; una pista de acompañamiento generada; o el archivo .jamsong sin pérdidas, listo para imprimir si se pide. Una vez que hay una melodía realmente presente, importada desde un MusicXML, un MIDI, un proyecto Guitar Pro, una partitura escaneada o una tablatura en vez de audio en bruto, ese mismo cancionero también se exporta como partitura, como PDF de tablatura de guitarra, como MIDI o como MusicXML, estos dos últimos en Premium.
Para la visión completa del proceso de conversión de Jam Jam, lee el artículo sobre la conversión universal de archivos.
Preguntas frecuentes sobre la API
¿Qué es la API de Jam Jam?
Una API REST pública en jam-jam.org/api/v1 que ejecuta el propio motor de conversión de Jam Jam: envíale un archivo de audio, un PDF, una foto, un enlace, MIDI, MusicXML, ChordPro o texto plano, y recibe un cancionero estructurado (acordes, letra, tonalidad, tempo) o una exportación portable como un PDF, un vídeo de karaoke o una pista de acompañamiento.
¿Es gratis usar la API?
Sí, hasta una cuota. Las llamadas anónimas tienen 3 conversiones cada 24 horas móviles, una cuenta gratuita 10 por semana, y Premium sube eso a 500 al mes. Los archivos subidos y los resultados se eliminan 24 horas después de ejecutarse el job.
¿Puede la API convertir un archivo de audio en acordes y letra?
Sí. Enviar un archivo de audio o vídeo con output: songbook devuelve acordes con marca de tiempo, la tonalidad, el tempo y la letra, la misma detección que ejecuta la propia app. La notación melódica completa a partir de audio en bruto (MIDI, MusicXML, un pentagrama o una tablatura) no forma parte de esto: necesita una fuente que ya lleve la melodía.
¿Hay un servidor MCP para agentes de IA?
Sí, @jam-jam/convert-mcp expone la misma API como cinco herramientas, list_formats, convert_file, convert_text, get_job y get_usage, para que un agente compatible con MCP como Claude Desktop, Claude Code o Cursor pueda llamarla directamente.
¿Dónde consigo una clave API?
Crea una cuenta gratuita de Jam Jam, luego abre Ajustes > Claves API en la app (móvil o web) y genera una. Se muestra una sola vez, empieza por jj_live_, y se puede revocar en cualquier momento; hasta 5 claves por cuenta.
Lee la referencia completa, con ejemplos reales en curl y Python, en jam-jam.org/developers: