API REST za dokładnie tym samym silnikiem
API działa pod adresem jam-jam.org/api/v1 i uruchamia dokładnie ten sam proces co aplikacja webowa, aplikacja mobilna i jam-jam.org/app/convert: plik wgrany przez którekolwiek z nich przechodzi tę samą ścieżkę kodu i daje ten sam wynik. Pełna dokumentacja, z prawdziwymi przykładami curl i Python oraz sposobem na wygenerowanie klucza, jest na jam-jam.org/developers. Czytelna dla maszyn specyfikacja OpenAPI 3.1 pod jam-jam.org/api/v1/openapi.json zawiera zalecaną kolejność wywołań dla agenta lub skryptu, a jam-jam.org/llms.txt wymienia każdą możliwość poniżej dla asystenta, który czyta ją bezpośrednio. Oficjalny serwer MCP (Model Context Protocol), @jam-jam/convert-mcp, udostępnia to samo API jako pięć narzędzi, list_formats, convert_file, convert_text, get_job i get_usage, dla agentów obsługujących MCP, takich jak Claude Desktop, Claude Code czy Cursor.
Klucz, limit i żadnej kolejki
Wywołanie GET /formats nie wymaga żadnego uwierzytelnienia i zwraca każdy format, jaki ten serwer przyjmuje dzisiaj, wraz z limitami rozmiaru i czasu trwania, więc skrypt może sprawdzić, zanim cokolwiek wyśle. Wszystko inne oczekuje nagłówka Authorization: Bearer, albo tokenu sesji Supabase, albo osobistego klucza API z przedrostkiem jj_live_..., tworzonego za darmo w Ustawieniach > Klucze API w aplikacji. Bez klucza wywołanie traktowane jest jako anonimowe: 3 konwersje na każde kroczące 24 godziny. Darmowe konto podnosi to do 10 tygodniowo, tego samego kroczącego limitu, jaki dzielą już eksport i import śpiewnika; Premium podnosi go do 500 miesięcznie. Każda odpowiedź zużywająca limit niesie nagłówki X-Quota-* z dokładnym stanem, a zarówno wgrane pliki, jak i wyniki są usuwane 24 godziny po utworzeniu zadania, niezależnie od jego powodzenia.
Wyślij zadanie, potem odpytuj je lub subskrybuj
Konwersja to zadanie, nie natychmiastowa odpowiedź: POST /jobs z plikiem jako multipart/form-data, albo z adresem URL lub wklejonym tekstem jako JSON, zwraca 202 z identyfikatorem zadania. Stamtąd GET /jobs/{id} odpytuje jego stan (z poszanowaniem nagłówka Retry-After), albo GET /jobs/{id}/events otwiera strumień Server-Sent Events tego samego zadania dla skryptu, który woli czekać niż pytać. Gdy faza osiągnie done, GET /jobs/{id}/result pobiera gotowy plik, a GET /jobs/{id}/result/songbook zwraca ten sam wynik co własny pivot JSON Jam Jam, akordy, tekst, sekcje, tonację, tempo, gotowy do odczytu wprost. Każdy błąd wraca jako standardowe ciało application/problem+json zamiast gołego kodu statusu.
Na wejściu: nagranie, link, skan albo zdjęcie
Plik audio albo wideo staje się śpiewnikiem z już ustalonymi akordami, tekstem, tonacją i tempem, tym samym rozpoznawaniem, jakie aplikacja uruchamia na żywym mikrofonie albo wgranym nagraniu, i stamtąd może trafić prosto do wygenerowanego wideo karaoke albo podkładu. Strona wklejona jako URL, albo zapytanie wyszukiwania, jest czytana tak samo jak strona z tabulaturami w aplikacji. PDF albo zdjęcie, wydrukowana kartka z akordami, zeskanowane nuty, cały śpiewnik, tabulatura gitarowa, nawet zdjęcie tablicy zrobione telefonem, przechodzi przez OCR i optyczne rozpoznawanie nut do tego samego pivotu. Zamiana samego surowego audio na notację, na nuty albo na tabulaturę, na razie pozostaje za bramką jakości: ten kierunek wymaga źródła, które już niesie melodię, a nie nagrania na żywo.
Na wejściu: tekst i notacja, które już masz
Pliki ChordPro i OnSong, zwykły tekst z akordami albo tekstem, albo tabulaturą ASCII, dokument Word albo RTF, slajdy prezentacji, arkusz kalkulacyjny albo setlista w CSV, oraz HTML wklejonej strony internetowej, wszystko to zamienia się w ten sam śpiewnik, bo kartka z akordami rzadko przychodzi w jednej postaci. Pliki MusicXML i MIDI przynoszą własne nuty, a gdy je mają, także tekst; plik projektu Guitar Pro albo MuseScore (.gp, .gpx, .mscz i podobne rozszerzenia) dociera do śpiewnika tak samo, w wersji beta; plik zsynchronizowanego tekstu (.lrc, .srt, .vtt, .ass) przynosi swoje znaczniki czasu; a plik .jamsong albo spakowany eksport importuje się z powrotem bezstratnie, dokładnie tak, jak opuścił Jam Jam.
Na wyjściu: dowolny format, jakiego zadanie naprawdę potrzebuje
Z tego samego śpiewnika API eksportuje PDF akordów, tekstu albo pustej siatki; obraz PNG, stronę HTML, zwykły tekst, ChordPro, adnotację akordów chords-lab albo chords-csv, albo samą tonację i tempo; wersję transponowaną albo z kapodastrem; diagramy akordów na gitarę, ukulele, pianino i pozostałe instrumenty, które obejmuje Jam Jam; zsynchronizowany tekst jako .lrc albo .srt; wideo karaoke; wygenerowany podkład; albo bezstratny plik .jamsong, gotowy do druku na życzenie. Gdy melodia jest już naprawdę obecna, zaimportowana z MusicXML, MIDI, projektu Guitar Pro, zeskanowanych nut albo tabulatury zamiast surowego audio, ten sam śpiewnik eksportuje się też jako nuty, jako PDF tabulatury gitarowej, jako MIDI albo jako MusicXML, te dwa ostatnie w Premium.
Aby poznać pełny obraz procesu konwersji Jam Jam, przeczytaj artykuł o uniwersalnej konwersji plików.
Najczęstsze pytania o API
Czym jest API Jam Jam?
Publiczne API REST pod adresem jam-jam.org/api/v1, które uruchamia własny silnik konwersji Jam Jam: wyślij mu plik audio, PDF, zdjęcie, link, MIDI, MusicXML, ChordPro albo zwykły tekst, a otrzymasz ustrukturyzowany śpiewnik (akordy, tekst, tonację, tempo) albo przenośny eksport, taki jak PDF, wideo karaoke albo podkład.
Czy API jest darmowe?
Tak, do pewnego limitu. Anonimowe wywołania mają 3 konwersje na każde kroczące 24 godziny, darmowe konto 10 tygodniowo, a Premium podnosi to do 500 miesięcznie. Wgrane pliki i wyniki są usuwane 24 godziny po wykonaniu zadania.
Czy API potrafi zamienić plik audio na akordy i tekst?
Tak. Wysłanie pliku audio albo wideo z output: songbook zwraca akordy ze znacznikami czasu, tonację, tempo i tekst, to samo rozpoznawanie, jakie uruchamia sama aplikacja. Pełna notacja melodyczna z surowego audio (MIDI, MusicXML, nuty albo tabulatura) nie wchodzi w to: wymaga źródła, które już niesie melodię.
Czy istnieje serwer MCP dla agentów AI?
Tak, @jam-jam/convert-mcp udostępnia to samo API jako pięć narzędzi, list_formats, convert_file, convert_text, get_job i get_usage, dzięki czemu agent obsługujący MCP, taki jak Claude Desktop, Claude Code czy Cursor, może wywołać je bezpośrednio.
Gdzie zdobyć klucz API?
Załóż darmowe konto Jam Jam, potem otwórz Ustawienia > Klucze API w aplikacji (mobilnej albo webowej) i wygeneruj klucz. Pokazuje się tylko raz, zaczyna się od jj_live_, i można go odwołać w każdej chwili; maksymalnie 5 kluczy na konto.
Przeczytaj pełną dokumentację, z prawdziwymi przykładami curl i Python, na jam-jam.org/developers: