REST-API · OpenAPI 3.1 · MCP-Server
Entwickler-API
Wandle Dateien, Links und Texte in Akkorde und Songtexte um und lies oder fülle dein Liederbuch per Skript oder Assistent.
- Kostenlose Stufe
- Dieselbe Engine wie die App
- Offizieller MCP-Server
Was die API kann
Jede Fähigkeit wird durch einen Scope freigeschaltet, den du beim Erstellen deines Schlüssels ankreuzt.
Konvertierung
Audio, PDF, Bilder, Text oder ein Link zu Songbook, PDF, MIDI, MusicXML und mehr.
Privates Liederbuch
Deine Songs und Playlists auflisten, lesen, anlegen, bearbeiten und ordnen.
Öffentliche Profile
Nur Lesen: Profile, veröffentlichte Songs, Follower. Keine Tonspur.
Spurentrennung
Eine Konvertierung (output=stems) trennt Gesang und Begleitung; das Werkzeug /stem-tool trennt in zwei oder vier Spuren. Mit einem API-Schlüssel verlangen beide ein Premium-Konto.
Audio-Warteschlange
Akkord- und Textanalyse in derselben Warteschlange wie die App.
KI-Musikerkennung
Ein Hinweis auf KI-Erzeugung für eine Datei, einen Spotify-Link, einen direkten Audio-Link oder einen ISRC.
Grenzen, Kontingente und Datenschutz
KI-generierte Musik ist immer häufiger. Jam Jam hilft dir, Hinweise auf eine Generierung zu finden: Link einfügen oder Datei hochladen und eine unverbindliche Einschätzung erhalten.
Max. 100 MB · Max. 10 Min. · Spotify, direkter Audio-Link oder ISRC. YouTube wird nicht unterstützt. Spotify-Links können nur anhand einer Hörprobe analysiert werden.
Eine wartende oder laufende Datei pro Konto. Premium-Konten haben Vorrang in der Warteschlange.
Gast: 2 Scans/Tag und 5/Monat. Kostenloses Konto: 5/Tag und 50/Monat. Premium: 30/Tag und 300/Monat. Gemeinsame Limits für Website, App und API; fehlgeschlagene Scans zählen nicht. Zurücksetzung um Mitternacht UTC und am Monatsersten UTC.
Audio wird zur Analyse an unseren Anbieter SH Labs gesendet. Laut Anbieter wird es weder aufbewahrt noch zum Modelltraining verwendet. Bei Ausfall ist eine lokale Dateianalyse möglich, sofern der Ersatzdienst verfügbar ist. Temporäre Dateien werden nach Abschluss, Fehler oder Abbruch gelöscht. Dein Konto speichert Dateiname oder Link, Datum, Status und Ergebnis 90 Tage; Gast-Ergebnisse 24 Stunden. Gastlimits verwenden ein Token und eine pseudonymisierte Netzwerkkennung, ohne die IP-Adresse im Klartext zu speichern.
Dieser Index ist weder Wahrscheinlichkeit noch Beweis. Ein niedriger Index garantiert keinen menschlichen Ursprung.
Werkzeug entdeckenUnterstü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:
Eingabeformate
- Audio- und Videodateien
- PDF: Akkorde, Texte, Noten, Tabulatur, gescanntes Liederbuch
- Bilder: Akkorde, Texte, Noten, Tabulatur
- Klartext, ChordPro, OnSong
- Links und Websuche (page-link, web-search)
- MusicXML, MIDI
- JamSong, gemischtes .zip, Songbook (Pivot)
Ausgabeformate
- Songbook (JSON-Pivot, immer verfügbar)
- PDF: Akkorde, Texte, Noten, Tabulatur, Raster
- PNG, HTML, Klartext, ChordPro
- chords-lab, chords-csv, Tonart und BPM
- MusicXML, MIDI (Premium)
- Synchronisierte Texte: .lrc, .srt
- Karaoke-Video (.mp4), Begleit-Audio, JamSong
In vier Schritten loslegen
Die Konvertierung ist asynchron: einreichen, verfolgen, abholen.
-
Schlüssel erstellen
Einstellungen › API-Schlüssel. Präfix
Meine API-Schlüssel verwaltenjj_live_, wird nur einmal angezeigt, 5 Schlüssel pro Konto, widerrufbar. -
Einreichen
Eine Datei, eine URL oder Text, mit dem gewünschten Ausgabeformat.
POST /jobs -
Verfolgen
Frage unter Beachtung von
Retry-Afterab oder öffne einen Server-Sent-Events-Stream.GET /jobs/{id}GET /jobs/{id}/events -
Abholen
Das Ergebnis bleibt 24 Stunden verfügbar, danach 410 Gone.
GET /jobs/{id}/result
Beispiele
Vollständige Aufrufe, unverändert kopierbar.
Die von diesem Server bedienten Formate auflistencurl
curl https://jam-jam.org/api/v1/formatsEine Datei in PDF umwandelncurl
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-songbookEine URL in ein Songbook umwandelncurl
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/amazing-grace", "output": "songbook"}'Fortschritt verfolgen (SSE oder Abfrage)curl
# 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_123Das Ergebnis herunterladencurl
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-OJ https://jam-jam.org/api/v1/jobs/jb_123/resultPython (requests)python
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/amazing-grace", "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"))Einen Song mit der KI-Musikerkennung analysierencurl
# Availability and remaining quota (no key needed)
curl https://jam-jam.org/api/v1/ai-music/availability
# Analyze a file
curl -X POST https://jam-jam.org/api/v1/ai-music/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-F "[email protected]"
# Analyze a Spotify link
curl -X POST https://jam-jam.org/api/v1/ai-music/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"url":"https://open.spotify.com/track/2JUDGXTQYGQZrVVUgq40Ke"}'
# History, current analysis, one analysis
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/history
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/jobs
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/jobs/JOB_ID
# Cancel
curl -X DELETE -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/jobs/JOB_IDCodebeispiele
Sofort lauffähige Beispiele in curl, JavaScript und Python, Open Source unter MIT-Lizenz:
Assistenten und MCP
Ein Assistent liest den Vertrag und baut seine Aufrufe selbst. Der offizielle MCP-Server gibt ihm 42 fertige Werkzeuge.
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
Schlüssel aus JAM_JAM_API_KEY: Es erscheinen nur die Werkzeuge, die seine Scopes erlauben. Er folgt niemandem, liked nichts und veröffentlicht nichts von sich aus.
Im Detail
Ein offizieller Model-Context-Protocol-Server stellt einem Assistenten die API als 42 Tools mit dem Präfix jj_ bereit: Konvertierung von Dateien und Text, Lesen und Organisieren deines privaten Liederbuchs, Lesen öffentlicher Profile, Stem-Trennung, Audioanalyse und Warteschlange, KI-Musikerkennung und Mastering. Er liest deinen API-Schlüssel aus der Umgebungsvariable JAM_JAM_API_KEY und zeigt nur die Tools, die die Scopes dieses Schlüssels erlauben. Er übernimmt für dich das Abfragen, Kontingentfehler und Dateiergebnisse, sodass ein Assistent wie Claude Desktop, Claude Code oder Cursor eine Datei konvertieren oder dein Liederbuch ordnen kann, ohne dass du auch nur eine Zeile HTTP-Code schreibst. Er folgt nie jemandem, vergibt keine Likes und veröffentlicht von sich aus keinen Song.
npx -y @jam-jam/convert-mcpPaketseite auf npm: npmjs.com/package/@jam-jam/convert-mcp
{
"mcpServers": {
"jam-jam": {
"command": "npx",
"args": ["-y", "@jam-jam/convert-mcp"],
"env": {
"JAM_JAM_API_KEY": "jj_live_xxxxxxxxxxxxxxxx"
}
}
}
}Tools und erforderliche Scopes 42
Formate, Dateien, Text und Job-Status.
jj_list_formatskein Scopejj_convert_fileconvert:writejj_convert_textconvert:writejj_get_jobconvert:read
was der Schlüssel darf und wie viel noch übrig ist.
jj_check_usage
Songs und Playlists.
jj_list_songsjj_get_songjj_list_playlistsjj_get_playlist
Songs und Playlists anlegen, ändern und löschen.
jj_create_songjj_update_songjj_delete_songjj_create_playlistjj_update_playlistjj_delete_playlist
Profilkarten, veröffentlichte Songs und Playlists, Follower und Gefolgte.
jj_get_profilejj_list_profile_songsjj_list_profile_playlistsjj_list_followersjj_list_following
Fähigkeiten, Jobs und Dateien.
jj_stems_capabilitiesconvert:readjj_stems_separatestems:writejj_stems_get_jobconvert:readjj_stems_list_jobsconvert:readjj_stems_get_fileconvert:readjj_stems_cancel_jobstems:write
eine Datei analysieren, Jobs auflisten, lesen und abbrechen.
jj_audio_analyzeaudio:writejj_queue_listqueue:readjj_queue_get_jobqueue:readjj_queue_cancel_jobaudio:write
Verfügbarkeit, Analyse, Verlauf und Jobs.
jj_ai_music_availabilityqueue:readjj_ai_music_analyzeaudio:writejj_ai_music_currentqueue:readjj_ai_music_get_jobqueue:readjj_ai_music_historyqueue:readjj_ai_music_cancel_jobaudio:write
Fähigkeiten, Presets, Rendering, Job-Status und Abbruch.
jj_mastering_capabilitieskein Scopejj_list_mastering_presetsmastering:readjj_create_mastering_presetmastering:writejj_master_audiomastering:writejj_mastering_get_jobmastering:readjj_mastering_cancel_jobmastering:write
Endpunkt-Referenz
Alle bereitgestellten Routen, nach Familie, mit Scope und Kontingent. Maßgeblich ist der vollständige Vertrag.
- Konvertierung (Jobs) 6
- Formate 1
- Nutzung & Kontingente 1
- Liederbuch, Lesen 4
- Liederbuch, Schreiben 8
- Sozial, nur Lesen 5
- Audio-Warteschlange & Stems 4
- Spurentrennung 6
- Mastering 8
- KI-Musikerkennung 7
- Status & Spezifikation 2
Konvertierung (Jobs) 6
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| POST | /jobsReicht eine Konvertierung ein: eine Datei (multipart/form-data), eine URL oder reiner Text/ChordPro (application/json). Bei output=stems sind zusätzlich der Scope stems:write und ein Premium-API-Schlüssel nötig, mit eigenem Kontingent (200/UTC-Tag). | convert:write | Kontingent: Konvertierung |
| GET | /jobs/{id}Job-Status (Phase, Prozent, Schritte). Per Abfrage verfolgen, dabei den Retry-After-Header beachten. | convert:read | Kontingent: keines |
| DELETE | /jobs/{id}Bricht einen Job ab und löscht seine Dateien; erstattet das Kontingent nur, wenn er noch in der Warteschlange war. | convert:write | Kontingent: keines |
| GET | /jobs/{id}/eventsAlternative zum Abfragen über Server-Sent Events: state-, done-, error- und Keep-Alive-Ping-Events. | convert:read | Kontingent: keines |
| GET | /jobs/{id}/resultLädt das Hauptartefakt herunter (oder ein bestimmtes über ?artifact=). 24 Stunden nach Job-Erstellung verfügbar. | convert:read | Kontingent: keines |
| GET | /jobs/{id}/result/songbookDer kanonische JSON-Songbook-Pivot (Akkorde, Text, Struktur), immer verfügbar, sobald der Job fertig ist. | convert:read | Kontingent: keines |
Formate 1
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /formatsRegister der Eingabe-/Ausgabepaare, die dieser Server tatsächlich bedient, mit Grenzwerten (maxBytes, maxPages, maxDurationS). | öffentlich (kein Schlüssel nötig) | Kontingent: keines |
Nutzung & Kontingente 1
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /me/usageDein Kontingentstand (Konvertierung, Lesen, Schreiben, Stems) und die Scopes, die deine Identität tatsächlich ausüben kann, in einem Aufruf. | convert:read | Kontingent: keines |
Liederbuch, Lesen 4
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /me/songsListet die Songs in deinem privaten Liederbuch auf, paginiert per undurchsichtigem Cursor; nutze updatedSince für einen inkrementellen Export. | carnet:read | Kontingent: Lesen |
| GET | /me/songs/{songId}Ein vollständiger Song aus deinem Liederbuch, inklusive Akkorde, Text und Struktur. | carnet:read | Kontingent: Lesen |
| GET | /me/playlistsListet die Playlists in deinem Liederbuch auf, flach und mehrfach zugehörig, gleiche Paginierung wie bei Songs. | carnet:read | Kontingent: Lesen |
| GET | /me/playlists/{playlistId}Eine Playlist und ihre Songs, in Reihenfolge, als Kurzfassung. | carnet:read | Kontingent: Lesen |
Liederbuch, Schreiben 8
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| POST | /me/songsFügt deinem Liederbuch einen Song hinzu, dasselbe Pivot-Payload, das eine Konvertierung liefert. Setze Idempotency-Key, um Duplikate zu vermeiden. | carnet:write | Kontingent: Schreiben |
| PUT | /me/songs/{songId}Ersetzt einen Song vollständig (deklarativ); legt ihn unter dieser ID an, falls er noch nicht existiert. | carnet:write | Kontingent: Schreiben |
| PATCH | /me/songs/{songId}Ändert nur die gesendeten Felder (Tonart, Kapodaster, BPM, playlistIds...); veröffentlicht oder entfernt den Song auch von deinem Profil. | carnet:write | Kontingent: Schreiben |
| DELETE | /me/songs/{songId}Entfernt einen Song aus deinem Liederbuch; sanft, idempotent, verlässt dabei auch alle Playlists. | carnet:write | Kontingent: Schreiben |
| POST | /me/playlistsErstellt eine Playlist; songIds ist die geordnete Liste der enthaltenen Songs, genau wie gesendet beibehalten. | carnet:write | Kontingent: Schreiben |
| PUT | /me/playlists/{playlistId}Ersetzt eine Playlist vollständig (deklarativ); songIds ist erforderlich. | carnet:write | Kontingent: Schreiben |
| PATCH | /me/playlists/{playlistId}Benennt eine Playlist um, ändert das Cover-Emoji oder ordnet ihre Songs vollständig neu. | carnet:write | Kontingent: Schreiben |
| DELETE | /me/playlists/{playlistId}Löscht die Playlist selbst; ihre Songs bleiben in deinem Liederbuch und in ihren anderen Playlists erhalten. | carnet:write | Kontingent: Schreiben |
Sozial, nur Lesen 5
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /users/{handle}Kopfzeile des öffentlichen Profils eines Kontos per Handle; ein privates Konto, dem du nicht folgst, liefert eine geschlossene Karte (ohne Bio, ohne Zähler). | social:read | Kontingent: Lesen |
| GET | /users/{handle}/songsSongs, die ein Konto auf seinem Profil veröffentlicht hat; audioPlayable ist nur wahr, wenn ihr euch gegenseitig folgt. | social:read | Kontingent: Lesen |
| GET | /users/{handle}/playlistsPlaylists, die ein Konto veröffentlicht hat; songCount zählt nur, was du tatsächlich sehen kannst. | social:read | Kontingent: Lesen |
| GET | /me/followersKonten, die dir folgen; status=accepted (Standard) oder requested. | social:read | Kontingent: Lesen |
| GET | /me/followingKonten, denen du folgst; status=requested listet noch ausstehende Anfragen an private Konten. | social:read | Kontingent: Lesen |
Audio-Warteschlange & Stems 4
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| POST | /audioReiht die automatische Analyse (Akkorde, Text) und anschließend die Ausrichtung für einen bereits in deinem Liederbuch vorhandenen Song ein. Dieselbe Warteschlange wie die App; songId muss dir gehören. | audio:write | Kontingent: keines |
| GET | /queueDie Audio-Verarbeitungswarteschlange deines Kontos: aktiv, wartend (mit rank) und die der letzten 7 Tage abgeschlossenen. | queue:read | Kontingent: keines |
| GET | /queue/{id}Ein Auftrag aus der Audio-Warteschlange, nur deiner; derselbe undifferenzierte 404 für einen unbekannten oder fremden Auftrag. | queue:read | Kontingent: keines |
| DELETE | /queue/{id}Bricht einen deiner Audio-Warteschlangen-Aufträge ab; erstattet nur, wenn die Analyse noch nicht abgeschlossen war. | audio:write | Kontingent: keines |
Spurentrennung 6
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /stem-tool/capabilitiesVerfügbarkeit, Grenzen, Modelle und Kontingent für die Stem-Trennung des Aufrufenden prüfen. | convert:read | Kontingent: keines |
| GET | /stem-tool/jobsPrivate Stem-Aufträge der aufrufenden Person mit optionalem Seiten-Cursor auflisten. | convert:read | Kontingent: keines |
| POST | /stem-tool/jobsAudiodatei hochladen und in zwei oder vier Spuren zerlegen. API-Schlüssel erfordern Premium. | stems:write | Kontingent: Stems |
| GET | /stem-tool/jobs/{id}Status, Fortschritt und verfügbare Dateien eines eigenen Auftrags abrufen. | convert:read | Kontingent: keines |
| DELETE | /stem-tool/jobs/{id}Einen eigenen Auftrag zur Stem-Trennung abbrechen. | stems:write | Kontingent: keines |
| GET | /stem-tool/jobs/{id}/files/{name}Eine kurzzeitig gültige, signierte Download-URL für eine MP3-Spur oder ein ZIP-Archiv abrufen. | convert:read | Kontingent: keines |
Mit einem API-Schlüssel verlangen alle diese Routen ein Premium-Konto, sonst lautet die Antwort 403 (api-premium-required). Die Grenzen des Aufrufers liefert GET /stem-tool/capabilities.
Mastering 8
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /mastering/capabilitiesLimits, Einstellbereiche, Lautheitsziele, integrierte Presets und Render-Berechtigung. | öffentlich (kein Schlüssel nötig) | Kontingent: keines |
| GET | /mastering/presetsDeine Mastering-Presets auflisten. | mastering:read | Kontingent: keines |
| POST | /mastering/presetsEin Mastering-Preset anlegen (Idempotency-Key erforderlich). | mastering:write | Kontingent: keines |
| DELETE | /mastering/presets/{id}Eines deiner Mastering-Presets löschen. | mastering:write | Kontingent: keines |
| POST | /mastering/jobsAudio hochladen und ein Mastering mit Preset oder Einstellungen starten. | mastering:write | Kontingent: Mastering (3/Woche kostenlos, unbegrenzt mit Premium) |
| GET | /mastering/jobs/{id}Den Status eines Mastering-Auftrags abrufen. | mastering:read | Kontingent: keines |
| DELETE | /mastering/jobs/{id}Einen Mastering-Auftrag abbrechen. | mastering:write | Kontingent: keines |
| GET | /mastering/jobs/{id}/resultDie gemasterte WAV-Datei herunterladen. | mastering:read | Kontingent: keines |
KI-Musikerkennung 7 + 1 intern
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /ai-music/availabilityVerfügbarkeit des Werkzeugs, akzeptierte Formate und verbleibende Kontingente des Kontos oder Besuchers. | öffentlich (kein Schlüssel nötig) | Kontingent: keines |
| POST | /ai-music/jobsReicht eine Audiodatei, einen Spotify-Link, einen direkten Audio-Link oder einen ISRC ein. Ein unfertiger Auftrag pro Konto; YouTube wird nicht unterstützt. | audio:write | Kontingent: KI-Erkennung |
| GET | /ai-music/jobsFindet deine laufende oder letzte Analyse. | queue:read | Kontingent: keines |
| GET | /ai-music/jobs/{id}Verfolgt eine Analyse und liest ihren Bericht. | queue:read | Kontingent: keines |
| DELETE | /ai-music/jobs/{id}Bricht eine Analyse ab und löscht ihre temporären Dateien. | audio:write | Kontingent: keines |
| GET | /ai-music/historyPrivater Verlauf der letzten 90 Tage, in Seiten zu 30; Konto erforderlich, kein Audio gespeichert. | queue:read | Kontingent: keines |
| DELETE | /ai-music/history/{id}Löscht einen Scan aus deinem Verlauf; das Kontingent einer erfolgreichen Analyse wird nicht erstattet. | audio:write | Kontingent: keines |
| GET | /ai-music/source/{token}/{filename}Temporäre Adresse, die dem Erkennungsdienst vorbehalten ist und höchstens 180 Sekunden gilt: Kein Client ruft sie auf. | intern | Kontingent: keines |
Status & Spezifikation 2
| Methode | Pfad | Scope | Kontingent |
|---|---|---|---|
| GET | /healthDienststatus und Verfügbarkeit je Engine (OMR, Audio, Video...); keine Authentifizierung nötig. | öffentlich (kein Schlüssel nötig) | Kontingent: keines |
| GET | /openapi.jsonDieser Vertrag, als maschinenlesbares JSON. | öffentlich (kein Schlüssel nötig) | Kontingent: keines |
Vollständiger, maschinenlesbarer Vertrag, immer mit dieser Tabelle synchron:
https://jam-jam.org/api/v1/openapi.json OpenAPI-Vertrag Kontingente und Grenzen
Den genauen Stand liefern GET /me/usage und die X-Quota-*-Header jeder Antwort.
Konvertierung
- Kostenloses Konto
- 6 / Woche
- Premium
- 500 / Monat
- Ohne Schlüssel und Sitzung
- 3 / 24 h
Derselbe Zähler wie der Liederbuch-Export in der App.
Lesen und Schreiben
| pro UTC-Tag | Kostenloses Konto | Premium |
|---|---|---|
| Lesezugriffe (Liederbuch, Profile) | 2.000 | 20.000 |
| Schreibzugriffe (Liederbuch) | 200 | 5.000 |
X-Read-Quota-* · X-Write-Quota-*
Spuren per Konvertierung
POST /jobs · output=stems Premium-API-Schlüssel erforderlich: Ohne Premium lautet die Antwort 403 (premium-required).
- Premium
- 200 pro UTC-Tag
Mit dem Aufruf dieser Routen versicherst du, die Rechte am gesendeten Audio zu besitzen.
Im Detail
POST /jobsmitoutput=stemsliefert ein.zip:vocals,accompanimentundmanifest.json.- Erforderliche Scopes:
stems:writeundconvert:write. - Ein eigener Zähler, getrennt von den Konvertierungen, gezählt pro UTC-Tag (nicht über rollierende 24 Stunden).
- Nicht zu verwechseln mit dem Werkzeug Spurentrennung (
/stem-tool/*): Dort verlangt ein API-Schlüssel ein Premium-Konto, mit eigenen Grenzen (GET /stem-tool/capabilities).
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.
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.
Open-Source-Credits
Diese API stützt sich auf echte Open-Source-Engines. Ehrlich genutzt, namentlich genannt:
- MuseScore 4
GPL-3.0Notenimport und -darstellung, Noten als PDF - Audiveris
AGPL-3.0Optische Notenerkennung (gescannte Noten) - Tesseract OCR
Apache-2.0Texterkennung in gescannten Seiten und Fotos - faster-whisper
MITSpracherkennung für Songtexte aus Audio - Basic Pitch
Apache-2.0Noten- und Melodieerkennung aus Audio - FluidSynth
LGPL-2.1Begleitspur aus MIDI rendern (SoundFont-Synthese) - FFmpeg
LGPL-2.1 / GPL-2.0Audio- und Videokodierung, Formatkonvertierung - Chromium
BSD-3-ClausePDF-Darstellung von Noten und Akkordblättern
Modelle und Daten
Sprechererkennung (Studio): Stimmabdruck-Modell WeSpeaker ResNet34-LM, Projekt WeNet (github.com/wenet-e2e/wespeaker), trainiert auf VoxCeleb (VGG, Universität Oxford), Lizenz CC BY 4.0 (creativecommons.org/licenses/by/4.0/). Von Jam Jam verändert: Gewichte in halbe Genauigkeit umgewandelt.