Entwickler-API
Eine REST-API, die Musikdateien, Links und Text in Jam Jams Songbook-Format (Akkorde, Text, Struktur) oder in portable Exporte (PDF, MIDI, MusicXML...) umwandelt. Dieselbe Engine wie die App, nutzbar aus deinen eigenen Skripten und Agenten.
Unterstützte Formate
Die vollständige, aktuelle Liste, mit genauen Grenzwerten und dem, was dieser Server tatsächlich bedient, steht immer unter GET /formats. Kurz gefasst:
Eingabe
- Audio & video files
- PDF (chords, lyrics, sheet music, tab, scanned songbook)
- Images (chords, lyrics, sheet music, tab)
- Plain text, ChordPro, OnSong
- Links & web search (page-link, web-search)
- MusicXML, MIDI
- JamSong, mixed .zip, songbook (pivot)
Ausgabe
- Songbook (JSON pivot, always available)
- PDF (chords, lyrics, sheet music, tab, grid)
- PNG, HTML, plain text, ChordPro
- chords-lab / chords-csv, key + BPM
- MusicXML, MIDI (Premium)
- Synced lyrics: .lrc, .srt
- Karaoke video (.mp4), backing audio, JamSong
Einen API-Schlüssel erhalten
Erstelle ein kostenloses Jam-Jam-Konto, öffne dann in der App (mobil oder web) Einstellungen, API-Schlüssel und erstelle einen Schlüssel. Er beginnt mit jj_live_ und wird nur einmal angezeigt: kopiere ihn sofort. Bis zu 5 Schlüssel pro Konto, jederzeit widerrufbar.
Manage my API keysKontingente
Derselbe Zähler wie der Export aus dem Liederbuch in der App: 10 Konvertierungen pro gleitender Woche bei einem kostenlosen Konto, 500 pro Monat bei Premium. Anonyme Aufrufe (ohne Schlüssel, ohne Sitzung) sind auf 3 pro 24 Stunden begrenzt. Der genaue Kontostand steht in GET /me/usage und in den X-Quota-*-Headern jeder Antwort, die Kontingent verbraucht.
So funktioniert es
Die Konvertierung ist asynchron: du reichst einen Job ein, er wird eingereiht, läuft, und du holst das Ergebnis ab, sobald er fertig ist. Verfolge ihn entweder per Abfrage von GET /jobs/{id} (Retry-After beachten) oder über einen Server-Sent-Events-Stream unter GET /jobs/{id}/events.
Beispiele
Die von diesem Server bedienten Formate auflisten
curl https://jam-jam.org/api/v1/formats Eine Datei in PDF umwandeln
curl -X POST https://jam-jam.org/api/v1/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-F [email protected] \
-F inputFormat=pdf-songbook \
-F output=pdf-songbook Eine URL in ein Songbook umwandeln
curl -X POST https://jam-jam.org/api/v1/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/tabs/wonderwall", "output": "songbook"}' Fortschritt verfolgen (SSE oder Abfrage)
# Server-Sent Events
curl -N -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/jobs/jb_123/events
# Polling
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/jobs/jb_123 Das Ergebnis herunterladen
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-OJ https://jam-jam.org/api/v1/jobs/jb_123/result Python (requests)
import time
import requests
API = "https://jam-jam.org/api/v1"
HEADERS = {"Authorization": "Bearer jj_live_xxxxxxxxxxxxxxxx"}
# 1. Discover formats
formats = requests.get(f"{API}/formats").json()
# 2. Submit a conversion
resp = requests.post(
f"{API}/jobs",
headers=HEADERS,
json={"url": "https://example.com/tabs/wonderwall", "output": "songbook"},
)
resp.raise_for_status()
job = resp.json()
# 3. Poll until done (or use GET /jobs/{id}/events for SSE)
while job["phase"] not in ("done", "failed", "cancelled"):
time.sleep(job.get("etaS", 2))
job = requests.get(f"{API}/jobs/{job['id']}", headers=HEADERS).json()
# 4. Fetch the result
if job["phase"] == "done":
songbook = requests.get(f"{API}/jobs/{job['id']}/result/songbook", headers=HEADERS).json()
print(songbook["songs"][0]["title"])
else:
print("failed:", job.get("problem")) Fehler
Jeder Fehler, auf jeder Route, ist ein application/problem+json-Objekt (RFC 9457) mit einem stabilen code-Feld, an dem ein Client seine Logik ausrichten kann: quota-exhausted, rate-limited, unsupported-pair, not-found... Der vollständige Katalog steht im OpenAPI-Schema (components.schemas.Problem).
Aufbewahrung
Hochgeladene Dateien und erzeugte Ergebnisse werden 24 Stunden nach Erstellung des Jobs gelöscht. Nichts wird länger aufbewahrt, auch fehlgeschlagene Jobs nicht. Der Abruf eines Ergebnisses nach dieser Frist liefert 410 Gone.
Für KI-Agenten
Lies zuerst GET /openapi.json: es dokumentiert die empfohlene Aufrufreihenfolge (Formate entdecken, einreichen, verfolgen, abrufen), Authentifizierung und Kontingente in einem x-agent-guide-Block, der für ein Modell gedacht ist. Die llms.txt dieser Website listet jede Konvertierungsfähigkeit als eigenen Eintrag.
MCP server
An official Model Context Protocol server, generated from this same OpenAPI spec, exposes the API as five tools: list_formats, convert_file, convert_text, get_job and get_usage. It handles polling, quota errors and file results for you, so an assistant like Claude Desktop, Claude Code or Cursor can convert a file without you writing any HTTP code.
Install
npx @jam-jam/convert-mcp Configuration (Claude Desktop, Claude Code, Cursor)
{
"mcpServers": {
"jam-convert": {
"command": "npx",
"args": ["-y", "@jam-jam/convert-mcp"],
"env": { "JAM_JAM_API_KEY": "jj_live_xxxxxxxxxxxxxxxx" }
}
}
} Tools
- list_formats: input and output formats served, with limits
- convert_file: local file path or base64 content in, downloaded result out
- convert_text: pasted text or ChordPro in, no file needed
- get_job: job status by id (phase, progress, artifacts)
- get_usage: the calling identity's quota balance
Open-Source-Credits
Diese API stützt sich auf echte Open-Source-Engines. Ehrlich genutzt, namentlich genannt:
- MuseScore 4 (GPL-3.0) : Notation import/render, sheet music PDF
- Audiveris (AGPL-3.0) : Optical Music Recognition (scanned sheet music)
- Tesseract OCR (Apache-2.0) : Text recognition in scanned pages and photos
- faster-whisper (MIT) : Speech-to-text for lyrics from audio
- Basic Pitch (Apache-2.0) : Note and melody detection from audio
- FluidSynth (LGPL-2.1) : Backing-track rendering from MIDI (SoundFont synthesis)
- FFmpeg (LGPL-2.1 / GPL-2.0) : Audio and video encoding, format conversion
- Chromium (BSD-3-Clause) : Headless rendering of sheet music and chord sheets to PDF