API pública do Magic Chords

Uma API REST versionada para reconhecimento de acordes, transcrição de letras e exportação de partituras. Todos os endpoints ficam sob /api/v1/, aceitam e retornam JSON (exceto uploads e arquivos gerados) e estão abertos a desenvolvedores anônimos dentro de cotas de uso justo.

Cada endpoint é documentado interativamente na referência incorporada abaixo, gerada diretamente da implementação e sempre atualizada.

Como funciona

A análise e a transcrição rodam de forma assíncrona: você envia um job, recebe um job_id, consulta o status e busca o resultado completo quando o processamento termina.

Início rápido

Envie a análise de acordes de uma URL:

curl -X POST https://magic-chords.dev/api/v1/analyze/url \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=VIDEO_ID"}'

A resposta contém o identificador do seu job:

{"job_id": "bBm3Zx8kQ7...", "status": "processing"}

Consulte o status até que seja complete:

curl https://magic-chords.dev/api/v1/jobs/bBm3Zx8kQ7...

Obtenha acordes, tempo, tom e estrutura:

curl https://magic-chords.dev/api/v1/jobs/bBm3Zx8kQ7.../result

Ou baixe diretamente um artefato exportado (pdf, midi, musicxml, txt, csv, json):

curl -o chords.pdf \
  "https://magic-chords.dev/api/v1/jobs/bBm3Zx8kQ7.../export?format=pdf"

Para analisar um arquivo de áudio local em vez de uma URL:

curl -X POST https://magic-chords.dev/api/v1/analyze \
  -F "file=@song.mp3"

Endpoints

Método e caminhoFinalidade
POST /api/v1/analyzeEnviar áudio carregado para análise de acordes (form multipart)
POST /api/v1/analyze/urlEnviar uma URL de mídia para análise de acordes
POST /api/v1/transcribeEnviar áudio carregado para transcrição de letras
POST /api/v1/transcribe/urlEnviar uma URL de mídia para transcrição de letras
GET /api/v1/jobs/{job_id}Status compacto para polling
GET /api/v1/jobs/{job_id}/resultResultado completo (acordes, palavras, tempo, tom…)
GET /api/v1/jobs/{job_id}/export?format=…Exportar análise concluída como pdf/midi/musicxml/txt/csv/json
GET /api/v1/limitsPolítica de cotas atual (sem contagem)

Limites de uso

Clientes anônimos têm limites por endereço IP. Valores atuais (também disponíveis em /api/v1/limits):

CategoriaLimite
Envios de jobs (heavy)20 por hora por cliente
Leituras de status/resultado/export (light)60 por minuto por cliente
Jobs simultâneos2 por cliente

Cada resposta contabilizada inclui os cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Ao atingir um limite você recebe 429 com o cabeçalho Retry-After — respeite-o, por favor.

Erros

StatusSignificado
400Requisição inválida (URL inválida, formato desconhecido)
404job_id desconhecido
409O job existe mas não terminou ou não pode ser exportado
413O upload excede o tamanho máximo
415Arquivo não reconhecido como áudio
429Limite de requisições ou de concorrência atingido
503Indisponível temporariamente (backend de cotas fora do ar)

Notas e bom uso

Referência interativa da API

A referência completa é carregada abaixo — explore cada endpoint e teste as requisições diretamente nesta página.

Carregando a referência interativa…