Uma API REST atrás do mesmo motor, sem diferença
A API vive em jam-jam.org/api/v1 e roda o mesmo processo do aplicativo web, do aplicativo móvel e de jam-jam.org/app/convert: um arquivo enviado por qualquer um deles segue o mesmo código e dá o mesmo resultado. A documentação completa, com exemplos reais em curl e Python e uma forma de gerar uma chave, está em jam-jam.org/developers. A especificação OpenAPI 3.1, legível por máquina, em jam-jam.org/api/v1/openapi.json, traz uma sequência de chamadas recomendada para um agente ou script, e jam-jam.org/llms.txt lista cada capacidade abaixo para um assistente que a lê diretamente. Um servidor MCP (Model Context Protocol) oficial, @jam-jam/convert-mcp, expõe a mesma API como cinco ferramentas, list_formats, convert_file, convert_text, get_job e get_usage, para agentes compatíveis com MCP como Claude Desktop, Claude Code ou Cursor.
Uma chave, uma cota, e nenhuma fila
Chamar GET /formats não exige nenhuma autenticação e devolve todo formato que este servidor aceita hoje, com seus limites de tamanho e duração, para que um script confira antes de enviar qualquer coisa. Todo o resto espera um cabeçalho Authorization: Bearer, um token de sessão do Supabase ou uma chave API pessoal com prefixo jj_live_..., criada de graça em Configurações > Chaves de API dentro do aplicativo. Sem chave, a chamada é tratada como anônima: 3 conversões a cada 24 horas móveis. Uma conta grátis eleva isso para 10 por semana, a mesma cota móvel que exportação e importação do cancioneiro já compartilham; o Premium eleva para 500 por mês. Toda resposta que gasta cota traz cabeçalhos X-Quota-* com o saldo exato, e tanto os arquivos enviados quanto os resultados são apagados 24 horas depois da criação do job, dando certo ou não.
Envie um job, depois consulte ou acompanhe em fluxo
Uma conversão é um job, não uma resposta instantânea: POST /jobs com um arquivo como multipart/form-data, ou uma URL ou texto colado como JSON, devolve um 202 com o id do job. A partir daí, GET /jobs/{id} consulta o estado (respeitando o cabeçalho Retry-After), ou GET /jobs/{id}/events abre um fluxo Server-Sent Events do mesmo job para um script que prefira esperar a perguntar. Quando a fase chega a done, GET /jobs/{id}/result baixa o arquivo pronto, e GET /jobs/{id}/result/songbook devolve o mesmo resultado que o pivô JSON do próprio Jam Jam, cifra, letra, seções, tonalidade, tempo, pronto para ler direto. Todo erro volta como um corpo application/problem+json padrão em vez de um simples código de status.
Na entrada: uma gravação, um link, um escaneamento ou uma foto
Um arquivo de áudio ou vídeo vira um cancioneiro com cifra, letra, tonalidade e tempo já resolvidos, a mesma detecção que o aplicativo roda num microfone ao vivo ou numa gravação enviada, e dali pode ir direto para um vídeo de karaokê gerado ou uma base de acompanhamento. Uma página colada por URL, ou uma busca, é lida do mesmo jeito que um site de tablaturas dentro do aplicativo. Um PDF ou uma foto, uma folha de cifra impressa, uma partitura escaneada, um cancioneiro inteiro, uma tablatura de violão, até a foto de um quadro branco tirada pelo celular, passa por OCR e reconhecimento óptico de partitura até o mesmo pivô. Transformar o áudio bruto em si em notação, em partitura ou em tablatura, ainda fica atrás de um filtro de qualidade: essa direção precisa de uma fonte que já carregue a melodia, não uma gravação ao vivo.
Na entrada: texto e notação que você já tem
Arquivos ChordPro e OnSong, texto simples com cifra ou letra ou uma tablatura ASCII, um documento Word ou RTF, slides de apresentação, uma planilha ou um repertório em CSV, e o HTML de uma página da web colada, tudo isso vira o mesmo cancioneiro, porque uma folha de cifra raramente chega em uma única forma. Arquivos MusicXML e MIDI trazem suas próprias notas e, quando têm, sua letra; um arquivo de projeto Guitar Pro ou MuseScore (.gp, .gpx, .mscz e extensões parecidas) chega ao cancioneiro da mesma forma, em beta; um arquivo de letra sincronizada (.lrc, .srt, .vtt, .ass) traz sua sincronia; e um arquivo .jamsong ou uma exportação em zip é reimportado sem perdas, exatamente como saiu do Jam Jam.
Na saída: o formato que o job realmente precisa
Desse mesmo cancioneiro, a API exporta um PDF da cifra, da letra ou de uma grade em branco; uma imagem PNG, uma página HTML, texto simples, ChordPro, uma anotação de acordes chords-lab ou chords-csv, ou só a tonalidade e o tempo; uma versão transportada ou com capotraste; diagramas de cifra para violão, ukulele, piano e os outros instrumentos que o Jam Jam cobre; letra sincronizada em .lrc ou .srt; um vídeo de karaokê; uma base de acompanhamento gerada; ou o arquivo .jamsong sem perdas, pronto para impressão se pedido. Assim que uma melodia realmente existe, importada de um MusicXML, um MIDI, um projeto Guitar Pro, uma partitura escaneada ou uma tablatura em vez de áudio bruto, esse mesmo cancioneiro também exporta como partitura, como PDF de tablatura de violão, como MIDI ou como MusicXML, esses dois últimos no Premium.
Para a visão geral do pipeline de conversão do Jam Jam, leia o artigo sobre a conversão universal de arquivos.
Perguntas frequentes sobre a API
O que é a API do Jam Jam?
Uma API REST pública em jam-jam.org/api/v1 que roda o próprio motor de conversão do Jam Jam: envie um arquivo de áudio, um PDF, uma foto, um link, MIDI, MusicXML, ChordPro ou texto simples, e receba um cancioneiro estruturado (cifra, letra, tonalidade, tempo) ou uma exportação portátil como um PDF, um vídeo de karaokê ou uma base de acompanhamento.
A API é grátis?
Sim, até uma cota. Chamadas anônimas têm 3 conversões a cada 24 horas móveis, uma conta grátis tem 10 por semana, e o Premium eleva isso a 500 por mês. Arquivos enviados e resultados são apagados 24 horas depois da execução do job.
A API consegue transformar um arquivo de áudio em cifra e letra?
Sim. Enviar um arquivo de áudio ou vídeo com output: songbook devolve cifra com marcação de tempo, tonalidade, tempo e letra, a mesma detecção que o próprio aplicativo roda. Notação melódica completa a partir de áudio bruto (MIDI, MusicXML, partitura ou tablatura) não faz parte disso: precisa de uma fonte que já carregue a melodia.
Existe um servidor MCP para agentes de IA?
Sim, @jam-jam/convert-mcp expõe a mesma API como cinco ferramentas, list_formats, convert_file, convert_text, get_job e get_usage, para que um agente compatível com MCP como Claude Desktop, Claude Code ou Cursor possa chamá-la diretamente.
Onde consigo uma chave de API?
Crie uma conta grátis do Jam Jam, depois abra Configurações > Chaves de API no aplicativo (móvel ou web) e gere uma. Ela aparece só uma vez, começa com jj_live_, e pode ser revogada a qualquer momento; até 5 chaves por conta.
Leia a referência completa, com exemplos reais em curl e Python, em jam-jam.org/developers: