API pubblica Magic Chords

Un'API REST versionata per riconoscimento di accordi, trascrizione di testi ed export di spartiti. Tutti gli endpoint sono sotto /api/v1/, accettano e restituiscono JSON (eccetto upload e file generati) e sono aperti agli sviluppatori anonimi entro quote di fair use.

Ogni endpoint è documentato in modo interattivo nella referenza integrata qui sotto, generata direttamente dall'implementazione e sempre aggiornata.

Come funziona

Analisi e trascrizione girano in modo asincrono: invii un job, ricevi un job_id, interroghi lo stato e scarichi il risultato completo a elaborazione finita.

Avvio rapido

Invia l'analisi degli accordi per l'URL di un brano:

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"}'

La risposta contiene l'identificativo del job:

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

Interroga lo stato finché non diventa complete:

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

Scarica accordi, tempo, tonalità e struttura:

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

Oppure scarica subito un artefatto esportato (pdf, midi, musicxml, txt, csv, json):

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

Per analizzare un file audio locale invece di un URL:

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

Endpoint

Metodo e percorsoScopo
POST /api/v1/analyzeInvia audio caricato per analisi degli accordi (form multipart)
POST /api/v1/analyze/urlInvia un URL multimediale per analisi degli accordi
POST /api/v1/transcribeInvia audio caricato per trascrizione del testo
POST /api/v1/transcribe/urlInvia un URL multimediale per trascrizione del testo
GET /api/v1/jobs/{job_id}Stato compatto per il polling
GET /api/v1/jobs/{job_id}/resultPayload completo (accordi, parole, tempo, tonalità…)
GET /api/v1/jobs/{job_id}/export?format=…Esporta un'analisi completata come pdf/midi/musicxml/txt/csv/json
GET /api/v1/limitsPolitica delle quote attuale (non conteggiata)

Limiti di utilizzo

I client anonimi hanno limiti per indirizzo IP. Valori attuali (disponibili anche live su /api/v1/limits):

BucketLimite
Invii di job (heavy)20 all'ora per client
Letture stato/risultato/export (light)60 al minuto per client
Job simultanei2 per client

Ogni risposta conteggiata include le intestazioni X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Al superamento di un limite ricevi 429 con l'intestazione Retry-After: ti chiediamo di rispettarla.

Errori

StatoSignificato
400Richiesta non valida (URL errato, formato sconosciuto)
404job_id sconosciuto
409Il job esiste ma non è finito o non è esportabile
413L'upload supera la dimensione massima
415File non riconosciuto come audio
429Limite di richieste o di concorrenza raggiunto
503Temporaneamente non disponibile (backend quote fuori servizio)

Note e buon uso

Riferimento API interattivo

Il riferimento completo viene caricato qui sotto — sfoglia ogni endpoint e prova le richieste direttamente da questa pagina.

Caricamento del riferimento interattivo…