{
  "aboutHtml": "<p>Transcribe 1 Pro to model zamiany mowy na tekst firmy Fish Audio do krótkich klipów, rozmów z wieloma mówcami i długich nagrań. Przyjmuje nagrany dźwięk i zwraca transkrypcję, z opcjonalnym czasowaniem i uporządkowanymi wypowiedziami mówców. Wyróżniają go zmiany mówcy oznaczone w tekście i wskazówki dotyczące emocji lub zdarzeń głosowych, zachowujące więcej struktury rozmowy niż zwykła sekwencja słów.</p><p>W przypadku wywiadu, spotkania lub podcastu zachowaj całą rozmowę w jednym pliku, aby powracający mówcy mogli utrzymać spójne oznaczenia w obrębie odpowiedzi. Przydatnym materiałem do przeglądu jest transkrypcja powiązana z oryginalnym nagraniem, z osobno pokazanymi wypowiedziami i znacznikiem czasu do sprawdzenia cytatu. Podsumowanie lub lista działań to późniejszy krok aplikacji: zachowaj je osobno od transkrypcji, aby oryginalna treść wypowiedzi pozostała dostępna do porównania.</p><p>Producent przyjmuje nagrania do 60 minut i opisuje przetwarzanie długich plików ze skompresowanym dźwiękiem, takim jak MP3, Opus lub AAC. Obsługiwane formaty obejmują WAV, MP3, AAC w M4A lub MP4, FLAC, Ogg z Opus lub Vorbis, WebM/Matroska i MOV. W pliku wideo używa pierwszej ścieżki dźwiękowej. AIFF, CAF, WMA, AMR, AC-3 i surowy PCM bez nagłówka nie są obsługiwane. Na żądanie dostarcza się jeden plik audio; wynik przychodzi po transkrypcji całego nagrania, a przetwarzanie długiego nagrania może potrwać kilka minut. Klipy krótsze niż około 0,08 sekundy są odrzucane.</p><p>Odpowiedź producenta zawiera pełny tekst, czas trwania nagrania w sekundach i tablicę segments. Pro oznacza zmiany mówcy w tekście etykietami takimi jak &lt;|speaker:0|&gt; i &lt;|speaker:1|&gt;; etykieta dotyczy następującego po niej tekstu aż do kolejnego znacznika. Są to identyfikatory w obrębie jednej odpowiedzi, a nie zweryfikowane imiona ani tożsamości możliwe do dopasowania między żądaniami. Jeśli transkrypcja nie ma znacznika mówcy, przewodnik traktuje ją jako wynik dla jednego mówcy. Zachowaj tekst przed pierwszym znacznikiem w pierwszej wypowiedzi, zamiast go odrzucać.</p><p>Znaczniki czasu na poziomie słów są opcjonalne. W żądaniu producenta ignore_timestamps ma domyślnie wartość true; ustawienie false prosi o segmenty z tekstem oraz czasem początku i końca w sekundach. Segment jest zazwyczaj słowem albo jednym lub kilkoma znakami w języku chińskim i japońskim. Tekst segmentu pomija interpunkcję, znaczniki mówców i oznaczenia zdarzeń oraz może normalizować wypowiedzianą wartość inaczej niż pełna transkrypcja. Segment słowa może mieć ten sam czas początku i końca. Pusta tablica segments może oznaczać, że nie zażądano znaczników czasu, nie znaleziono mowy lub czasowanie było chwilowo niedostępne. Używaj pełnej transkrypcji do czytelnego zapisu, a segmentów do wyrównania czasowego, zamiast zakładać zgodność obu ciągów znak po znaku.</p><p>Ustawienie diarize ma domyślnie wartość auto. Gdy zażądano znaczników czasu i diarize nie jest false, Pro zwraca także speaker_turns. Każda wypowiedź zawiera etykietę mówcy, tekst i czas początku oraz końca, zachowując interpunkcję i pozostawione oznaczenia bez znacznika mówcy wewnątrz tekstu. Jeśli czasowanie słów jest niedostępne, czasy wypowiedzi mogą być przybliżone i obejmować całe nagranie; sąsiednie wypowiedzi nie muszą być ciągłe ani rozłączne czasowo. Wyłączenie diarize usuwa uporządkowaną listę wypowiedzi, ale pozostawia znaczniki mówców w pełnym tekście. Znana liczba mówców albo minimalna i maksymalna liczba mogą pomóc w rozróżnianiu mówców w dłuższych nagraniach, bez gwarancji wyniku. Dokładnej liczby mówców nie można łączyć z jej minimalną ani maksymalną wartością, a wskazówek dotyczących liczby nie można używać przy wyłączonym diarize.</p><p>Oznaczenia emocji i zdarzeń głosowych pojawiają się jako tekst w nawiasach kwadratowych, na przykład [laughter], obok rozpoznanej mowy. Są to wnioski z dźwięku, a nie słowa, które użytkownik musi dodać przed transkrypcją. Ustawienie tag_audio_events w Pro ma domyślnie wartość true; jego wyłączenie usuwa te oznaczenia z transkrypcji i tekstu wypowiedzi bez zmiany czasowania. Nie ma osobnego pola emocji ani stałej listy wartości emocji. Zachowaj transkrypcję z oznaczeniami, gdy sposób wypowiedzenia uwagi ma znaczenie, a używaj wersji bez nich, gdy dalszy rezultat wymaga tylko wypowiedzianych słów.</p><p>Język jest wykrywany automatycznie. Opcjonalna wskazówka ISO 639-1 zapisana małymi literami nie wymusza tłumaczenia ani nie zmienia transkrypcji Pro. Jeśli nie da się ustalić języka, zwrócony kod języka może odzwierciedlać wskazówkę bez zweryfikowania jej względem dźwięku. Producent raportuje jeden język, a nie wykaz wszystkich języków w nagraniu mieszanym. Przygotowując archiwum do przeszukiwania, przechowuj oryginalne sformułowania wraz z metadanymi języka, szczególnie gdy różne części rozmowy przechodzą między językami.</p><p>W przypadku napisów grupuj kolejne słowa ze znacznikami czasu w czytelne jednostki SRT lub WebVTT, zamiast tworzyć osobny napis dla każdego słowa. Rozdzielaj jednostki przy pauzach i dobieraj długość oraz czas wyświetlania do odtwarzacza i odbiorców. Granice wypowiedzi mogą utrzymywać różnych mówców w osobnych jednostkach. Sprawdzaj pusty wynik czasowania oraz jednostki, których koniec musi być późniejszy niż początek. Formatowanie napisów, nadawanie nazw anonimowym etykietom mówców i późniejsze podsumowania to rezultaty aplikacji zbudowane z wyniku transkrypcji.</p><p>W praktycznym procesie pracy z nagraniem zdecyduj przed transkrypcją, czy potrzebujesz zwykłego czytelnego tekstu, oznaczonych wypowiedzi rozmowy czy czasowanych napisów. Zachowaj identyfikator dźwięku z wynikiem, pozostaw pełny zwrócony tekst, gdy interpunkcja i oznaczenia mają znaczenie, oraz używaj uporządkowanych pól czasowania do nawigacji. Możliwości Pro dotyczące długich nagrań i wielu mówców są odrębne od ogólnego modelu Transcribe 1 do krótkich nagrań; ich limitów i ustawień nie należy traktować jako wymiennych.</p>",
  "aboutText": "Transcribe 1 Pro to model zamiany mowy na tekst firmy Fish Audio do krótkich klipów, rozmów z wieloma mówcami i długich nagrań. Przyjmuje nagrany dźwięk i zwraca transkrypcję, z opcjonalnym czasowaniem i uporządkowanymi wypowiedziami mówców. Wyróżniają go zmiany mówcy oznaczone w tekście i wskazówki dotyczące emocji lub zdarzeń głosowych, zachowujące więcej struktury rozmowy niż zwykła sekwencja słów.\n\nW przypadku wywiadu, spotkania lub podcastu zachowaj całą rozmowę w jednym pliku, aby powracający mówcy mogli utrzymać spójne oznaczenia w obrębie odpowiedzi. Przydatnym materiałem do przeglądu jest transkrypcja powiązana z oryginalnym nagraniem, z osobno pokazanymi wypowiedziami i znacznikiem czasu do sprawdzenia cytatu. Podsumowanie lub lista działań to późniejszy krok aplikacji: zachowaj je osobno od transkrypcji, aby oryginalna treść wypowiedzi pozostała dostępna do porównania.\n\nProducent przyjmuje nagrania do 60 minut i opisuje przetwarzanie długich plików ze skompresowanym dźwiękiem, takim jak MP3, Opus lub AAC. Obsługiwane formaty obejmują WAV, MP3, AAC w M4A lub MP4, FLAC, Ogg z Opus lub Vorbis, WebM/Matroska i MOV. W pliku wideo używa pierwszej ścieżki dźwiękowej. AIFF, CAF, WMA, AMR, AC-3 i surowy PCM bez nagłówka nie są obsługiwane. Na żądanie dostarcza się jeden plik audio; wynik przychodzi po transkrypcji całego nagrania, a przetwarzanie długiego nagrania może potrwać kilka minut. Klipy krótsze niż około 0,08 sekundy są odrzucane.\n\nOdpowiedź producenta zawiera pełny tekst, czas trwania nagrania w sekundach i tablicę segments. Pro oznacza zmiany mówcy w tekście etykietami takimi jak <|speaker:0|> i <|speaker:1|>; etykieta dotyczy następującego po niej tekstu aż do kolejnego znacznika. Są to identyfikatory w obrębie jednej odpowiedzi, a nie zweryfikowane imiona ani tożsamości możliwe do dopasowania między żądaniami. Jeśli transkrypcja nie ma znacznika mówcy, przewodnik traktuje ją jako wynik dla jednego mówcy. Zachowaj tekst przed pierwszym znacznikiem w pierwszej wypowiedzi, zamiast go odrzucać.\n\nZnaczniki czasu na poziomie słów są opcjonalne. W żądaniu producenta ignore_timestamps ma domyślnie wartość true; ustawienie false prosi o segmenty z tekstem oraz czasem początku i końca w sekundach. Segment jest zazwyczaj słowem albo jednym lub kilkoma znakami w języku chińskim i japońskim. Tekst segmentu pomija interpunkcję, znaczniki mówców i oznaczenia zdarzeń oraz może normalizować wypowiedzianą wartość inaczej niż pełna transkrypcja. Segment słowa może mieć ten sam czas początku i końca. Pusta tablica segments może oznaczać, że nie zażądano znaczników czasu, nie znaleziono mowy lub czasowanie było chwilowo niedostępne. Używaj pełnej transkrypcji do czytelnego zapisu, a segmentów do wyrównania czasowego, zamiast zakładać zgodność obu ciągów znak po znaku.\n\nUstawienie diarize ma domyślnie wartość auto. Gdy zażądano znaczników czasu i diarize nie jest false, Pro zwraca także speaker_turns. Każda wypowiedź zawiera etykietę mówcy, tekst i czas początku oraz końca, zachowując interpunkcję i pozostawione oznaczenia bez znacznika mówcy wewnątrz tekstu. Jeśli czasowanie słów jest niedostępne, czasy wypowiedzi mogą być przybliżone i obejmować całe nagranie; sąsiednie wypowiedzi nie muszą być ciągłe ani rozłączne czasowo. Wyłączenie diarize usuwa uporządkowaną listę wypowiedzi, ale pozostawia znaczniki mówców w pełnym tekście. Znana liczba mówców albo minimalna i maksymalna liczba mogą pomóc w rozróżnianiu mówców w dłuższych nagraniach, bez gwarancji wyniku. Dokładnej liczby mówców nie można łączyć z jej minimalną ani maksymalną wartością, a wskazówek dotyczących liczby nie można używać przy wyłączonym diarize.\n\nOznaczenia emocji i zdarzeń głosowych pojawiają się jako tekst w nawiasach kwadratowych, na przykład [laughter], obok rozpoznanej mowy. Są to wnioski z dźwięku, a nie słowa, które użytkownik musi dodać przed transkrypcją. Ustawienie tag_audio_events w Pro ma domyślnie wartość true; jego wyłączenie usuwa te oznaczenia z transkrypcji i tekstu wypowiedzi bez zmiany czasowania. Nie ma osobnego pola emocji ani stałej listy wartości emocji. Zachowaj transkrypcję z oznaczeniami, gdy sposób wypowiedzenia uwagi ma znaczenie, a używaj wersji bez nich, gdy dalszy rezultat wymaga tylko wypowiedzianych słów.\n\nJęzyk jest wykrywany automatycznie. Opcjonalna wskazówka ISO 639-1 zapisana małymi literami nie wymusza tłumaczenia ani nie zmienia transkrypcji Pro. Jeśli nie da się ustalić języka, zwrócony kod języka może odzwierciedlać wskazówkę bez zweryfikowania jej względem dźwięku. Producent raportuje jeden język, a nie wykaz wszystkich języków w nagraniu mieszanym. Przygotowując archiwum do przeszukiwania, przechowuj oryginalne sformułowania wraz z metadanymi języka, szczególnie gdy różne części rozmowy przechodzą między językami.\n\nW przypadku napisów grupuj kolejne słowa ze znacznikami czasu w czytelne jednostki SRT lub WebVTT, zamiast tworzyć osobny napis dla każdego słowa. Rozdzielaj jednostki przy pauzach i dobieraj długość oraz czas wyświetlania do odtwarzacza i odbiorców. Granice wypowiedzi mogą utrzymywać różnych mówców w osobnych jednostkach. Sprawdzaj pusty wynik czasowania oraz jednostki, których koniec musi być późniejszy niż początek. Formatowanie napisów, nadawanie nazw anonimowym etykietom mówców i późniejsze podsumowania to rezultaty aplikacji zbudowane z wyniku transkrypcji.\n\nW praktycznym procesie pracy z nagraniem zdecyduj przed transkrypcją, czy potrzebujesz zwykłego czytelnego tekstu, oznaczonych wypowiedzi rozmowy czy czasowanych napisów. Zachowaj identyfikator dźwięku z wynikiem, pozostaw pełny zwrócony tekst, gdy interpunkcja i oznaczenia mają znaczenie, oraz używaj uporządkowanych pól czasowania do nawigacji. Możliwości Pro dotyczące długich nagrań i wielu mówców są odrębne od ogólnego modelu Transcribe 1 do krótkich nagrań; ich limitów i ustawień nie należy traktować jako wymiennych.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "6107a19d41062f9ebe5d12250e3372c8e89419bd17f9a2fb75acccc43bd1cb0d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "pl",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: Transcribe 1 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zamknij\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1-pro</code><button type=\"button\" id=\"copy-id\">Kopiuj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcje karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Dane wejściowe i metody</button><button type=\"button\" data-card-jump=\"pricing\">Cennik</button><button type=\"button\" data-card-jump=\"examples\">Przykłady</button><button type=\"button\" data-card-jump=\"results\">Wyniki</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metody API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro\">Rozpoznawanie</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Start</h3><p class=\"mdesc-full\">Transcribe 1 Pro zamienia nagrania trwające do 60 minut na tekst ze znacznikami mówców i opcjonalnym czasowaniem na poziomie słów. Zachowuje wywnioskowane oznaczenia emocji i zdarzeń głosowych, ułatwiając przeglądanie i przeszukiwanie wywiadów, spotkań oraz podcastów, a także przygotowywanie do nich napisów.</p><dl class=\"card-io\" data-card-io><div><dt>Akceptowane dane wejściowe</dt><dd>Audio</dd></div><div><dt>Wyniki</dt><dd>Tekst</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1 Pro to model zamiany mowy na tekst firmy Fish Audio do krótkich klipów, rozmów z wieloma mówcami i długich nagrań. Przyjmuje nagrany dźwięk i zwraca transkrypcję, z opcjonalnym czasowaniem i uporządkowanymi wypowiedziami mówców. Wyróżniają go zmiany mówcy oznaczone w tekście i wskazówki dotyczące emocji lub zdarzeń głosowych, zachowujące więcej struktury rozmowy niż zwykła sekwencja słów.</p><p>W przypadku wywiadu, spotkania lub podcastu zachowaj całą rozmowę w jednym pliku, aby powracający mówcy mogli utrzymać spójne oznaczenia w obrębie odpowiedzi. Przydatnym materiałem do przeglądu jest transkrypcja powiązana z oryginalnym nagraniem, z osobno pokazanymi wypowiedziami i znacznikiem czasu do sprawdzenia cytatu. Podsumowanie lub lista działań to późniejszy krok aplikacji: zachowaj je osobno od transkrypcji, aby oryginalna treść wypowiedzi pozostała dostępna do porównania.</p><p>Producent przyjmuje nagrania do 60 minut i opisuje przetwarzanie długich plików ze skompresowanym dźwiękiem, takim jak MP3, Opus lub AAC. Obsługiwane formaty obejmują WAV, MP3, AAC w M4A lub MP4, FLAC, Ogg z Opus lub Vorbis, WebM/Matroska i MOV. W pliku wideo używa pierwszej ścieżki dźwiękowej. AIFF, CAF, WMA, AMR, AC-3 i surowy PCM bez nagłówka nie są obsługiwane. Na żądanie dostarcza się jeden plik audio; wynik przychodzi po transkrypcji całego nagrania, a przetwarzanie długiego nagrania może potrwać kilka minut. Klipy krótsze niż około 0,08 sekundy są odrzucane.</p><p>Odpowiedź producenta zawiera pełny tekst, czas trwania nagrania w sekundach i tablicę segments. Pro oznacza zmiany mówcy w tekście etykietami takimi jak &lt;|speaker:0|&gt; i &lt;|speaker:1|&gt;; etykieta dotyczy następującego po niej tekstu aż do kolejnego znacznika. Są to identyfikatory w obrębie jednej odpowiedzi, a nie zweryfikowane imiona ani tożsamości możliwe do dopasowania między żądaniami. Jeśli transkrypcja nie ma znacznika mówcy, przewodnik traktuje ją jako wynik dla jednego mówcy. Zachowaj tekst przed pierwszym znacznikiem w pierwszej wypowiedzi, zamiast go odrzucać.</p><p>Znaczniki czasu na poziomie słów są opcjonalne. W żądaniu producenta ignore_timestamps ma domyślnie wartość true; ustawienie false prosi o segmenty z tekstem oraz czasem początku i końca w sekundach. Segment jest zazwyczaj słowem albo jednym lub kilkoma znakami w języku chińskim i japońskim. Tekst segmentu pomija interpunkcję, znaczniki mówców i oznaczenia zdarzeń oraz może normalizować wypowiedzianą wartość inaczej niż pełna transkrypcja. Segment słowa może mieć ten sam czas początku i końca. Pusta tablica segments może oznaczać, że nie zażądano znaczników czasu, nie znaleziono mowy lub czasowanie było chwilowo niedostępne. Używaj pełnej transkrypcji do czytelnego zapisu, a segmentów do wyrównania czasowego, zamiast zakładać zgodność obu ciągów znak po znaku.</p><p>Ustawienie diarize ma domyślnie wartość auto. Gdy zażądano znaczników czasu i diarize nie jest false, Pro zwraca także speaker_turns. Każda wypowiedź zawiera etykietę mówcy, tekst i czas początku oraz końca, zachowując interpunkcję i pozostawione oznaczenia bez znacznika mówcy wewnątrz tekstu. Jeśli czasowanie słów jest niedostępne, czasy wypowiedzi mogą być przybliżone i obejmować całe nagranie; sąsiednie wypowiedzi nie muszą być ciągłe ani rozłączne czasowo. Wyłączenie diarize usuwa uporządkowaną listę wypowiedzi, ale pozostawia znaczniki mówców w pełnym tekście. Znana liczba mówców albo minimalna i maksymalna liczba mogą pomóc w rozróżnianiu mówców w dłuższych nagraniach, bez gwarancji wyniku. Dokładnej liczby mówców nie można łączyć z jej minimalną ani maksymalną wartością, a wskazówek dotyczących liczby nie można używać przy wyłączonym diarize.</p><p>Oznaczenia emocji i zdarzeń głosowych pojawiają się jako tekst w nawiasach kwadratowych, na przykład [laughter], obok rozpoznanej mowy. Są to wnioski z dźwięku, a nie słowa, które użytkownik musi dodać przed transkrypcją. Ustawienie tag_audio_events w Pro ma domyślnie wartość true; jego wyłączenie usuwa te oznaczenia z transkrypcji i tekstu wypowiedzi bez zmiany czasowania. Nie ma osobnego pola emocji ani stałej listy wartości emocji. Zachowaj transkrypcję z oznaczeniami, gdy sposób wypowiedzenia uwagi ma znaczenie, a używaj wersji bez nich, gdy dalszy rezultat wymaga tylko wypowiedzianych słów.</p><p>Język jest wykrywany automatycznie. Opcjonalna wskazówka ISO 639-1 zapisana małymi literami nie wymusza tłumaczenia ani nie zmienia transkrypcji Pro. Jeśli nie da się ustalić języka, zwrócony kod języka może odzwierciedlać wskazówkę bez zweryfikowania jej względem dźwięku. Producent raportuje jeden język, a nie wykaz wszystkich języków w nagraniu mieszanym. Przygotowując archiwum do przeszukiwania, przechowuj oryginalne sformułowania wraz z metadanymi języka, szczególnie gdy różne części rozmowy przechodzą między językami.</p><p>W przypadku napisów grupuj kolejne słowa ze znacznikami czasu w czytelne jednostki SRT lub WebVTT, zamiast tworzyć osobny napis dla każdego słowa. Rozdzielaj jednostki przy pauzach i dobieraj długość oraz czas wyświetlania do odtwarzacza i odbiorców. Granice wypowiedzi mogą utrzymywać różnych mówców w osobnych jednostkach. Sprawdzaj pusty wynik czasowania oraz jednostki, których koniec musi być późniejszy niż początek. Formatowanie napisów, nadawanie nazw anonimowym etykietom mówców i późniejsze podsumowania to rezultaty aplikacji zbudowane z wyniku transkrypcji.</p><p>W praktycznym procesie pracy z nagraniem zdecyduj przed transkrypcją, czy potrzebujesz zwykłego czytelnego tekstu, oznaczonych wypowiedzi rozmowy czy czasowanych napisów. Zachowaj identyfikator dźwięku z wynikiem, pozostaw pełny zwrócony tekst, gdy interpunkcja i oznaczenia mają znaczenie, oraz używaj uporządkowanych pól czasowania do nawigacji. Możliwości Pro dotyczące długich nagrań i wielu mówców są odrębne od ogólnego modelu Transcribe 1 do krótkich nagrań; ich limitów i ustawień nie należy traktować jako wymiennych.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Dostępne w Ailoot · dane wejściowe i metody</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Rozpoznawanie mowy</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Wejście</dt><dd><code>audio</code></dd></div><div><dt>Wyjście</dt><dd><code>text</code></dd></div><div><dt>Format wyjściowy</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Pole</th><th>Typ</th><th>Wymaganie</th><th>Wartości i limity</th><th>Domyślnie</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>fish-audio/transcribe-1-pro</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Dokładne klucze: data, format</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">input_audio.data</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>base64_string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Maksymalna liczba zdekodowanych bajtów: 26 214 400</div><div>Ścisły Base64: Tak</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">input_audio.format</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Wymagane</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>Warunki: Musi odpowiadać rzeczywistemu formatowi ustalonemu przy badaniu pliku</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Wymaganie\"><span class=\"card-cell-label\">Wymaganie</span>Opcjonalne</td><td data-cell-label=\"Wartości i limity\"><span class=\"card-cell-label\">Wartości i limity</span><div>json</div></td><td data-cell-label=\"Domyślnie\" data-default=\"unspecified\"><span class=\"card-cell-label\">Domyślnie</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacje materiałów wejściowych</summary><p class=\"note-s\"><b>speech_to_text</b> · Wymagane: input_audio.data, input_audio.format</p></details><details class=\"note-s\" data-method-contract><summary>Parametry i cykl życia metody</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametr</th><th>Kontrakt</th></tr></thead><tbody><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>content_type</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>application/json</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>required</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>model, input_audio</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>additional_properties</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>false</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>parameters</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;fish-audio/transcribe-1-pro&quot;]}, {&quot;name&quot;:&quot;input_audio&quot;,&quot;type&quot;:&quot;object&quot;,&quot;required&quot;:true,&quot;exact_keys&quot;:[&quot;data&quot;,&quot;format&quot;],&quot;data&quot;:&quot;ścisłe kodowanie base64 rzeczywistych bajtów obsługiwanego dźwięku&quot;,&quot;format&quot;:&quot;dokładny format ustalony przy badaniu pliku; musi odpowiadać rzeczywistym bajtom&quot;}, {&quot;name&quot;:&quot;response_format&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:false,&quot;enum&quot;:[&quot;json&quot;]}</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>max_audio_bytes</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>26214400</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>multipart_for_this_profile</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>false</td></tr><tr><th data-cell-label=\"Parametr\" scope=\"row\"><span class=\"card-cell-label\">Parametr</span><code>material_types</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>audio</td></tr></tbody></table></div><p>Cykl życia: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Rzeczywiście zwrócony task_id lub wpis w bibliotece multimediów</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Zachowaj kompletną odpowiedź i pierwotne zwrócone identyfikatory.</p><p class=\"note-s\">Nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cennik</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.</p><dl data-price-conditions><dt>Tryb szybki</dt><dd>Nie określono <span class=\"note-s\">Gdy wybrany jest tryb szybki</span></dd><dt>Tryb flex</dt><dd>Nie określono <span class=\"note-s\">Gdy wybrany jest tryb flex</span></dd><dt>Maksymalna intensywność rozumowania</dt><dd>Nie określono <span class=\"note-s\">Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Stawki Ailoot</h4><h4>Ceny według konfiguracji</h4><p class=\"note-s\">Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Tabela stawek</th><th>Jednostka rozliczeniowa</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>Bazowe stawki za tokeny</th><td data-cell-label=\"Tabela stawek\"><span class=\"card-cell-label\">Tabela stawek</span>Stawka podstawowa</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>—</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Tokeny wejściowe</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wyjście · Tokeny wyjściowe</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Odczyt cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div><div><span>Wejście · Zapis do cache, 1 godz.</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenów</span></div></td></tr><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>sekunda wejściowego audio</th><td data-cell-label=\"Tabela stawek\"><span class=\"card-cell-label\">Tabela stawek</span>—</td><td data-cell-label=\"Jednostka rozliczeniowa\"><span class=\"card-cell-label\">Jednostka rozliczeniowa</span>za sekundę dźwięku wejściowego</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · sekunda wejściowego audio</span> <b>$0.0002</b> <span class=\"price-unit\">za sekundę dźwięku wejściowego</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. <a href=\"/docs/pl/billing/reserve/\">Jak działają rezerwacja i rozliczenie →</a></p><div data-declared-reference-pricing><h4>Szczegóły taryfy referencyjnej</h4><p class=\"note-s\">Referencyjne tabele modelu nie zmieniają wyboru metody, wyceny ani opłat. Naliczane opłaty korzystają ze stawek wybranej metody Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Fish Audio: Transcribe 1 Pro</summary><h4>Ceny według konfiguracji</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguracja</th><th>Warunki rozliczania</th><th>Opłata</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguracja\" scope=\"row\"><span class=\"card-cell-label\">Konfiguracja</span>Fish Audio: Transcribe 1 Pro · Domyślna konfiguracja</th><td data-cell-label=\"Warunki rozliczania\"><span class=\"card-cell-label\">Warunki rozliczania</span>Konfiguracja domyślna</td><td data-cell-label=\"Opłata\"><span class=\"card-cell-label\">Opłata</span><div><span>Wejście · Sekundy wejściowego audio</span> <b>0,0002 USD</b> <span class=\"price-unit\">za sekundę dźwięku wejściowego</span></div></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Przykładowe żądania</h3><h4>Ailoot Ultra · Rozpoznawanie mowy</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Warianty kodu\"><button class=\"cg-tab\" id=\"model-code-1362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · rzeczywiste bajty audio i sprawdzony format</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiuj kod\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1362-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set your actual audio file}&quot;\n: &quot;${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}&quot;\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;fish-audio/transcribe-1-pro&quot;, &quot;response_format&quot;: &quot;json&quot;}&#39;)\nimport base64\nf=Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;])\nraw=f.read_bytes()\nif not raw or len(raw)&gt;26214400:raise SystemExit(&#39;Use actual audio bytes within 25 MiB&#39;)\nfmt=os.environ[&#39;AILOOT_AUDIO_FORMAT&#39;].strip()\nif not fmt:raise SystemExit(&#39;Use the actual probed format; the server checks it against the bytes&#39;)\np[&#39;input_audio&#39;]={&#39;data&#39;:base64.b64encode(raw).decode(),&#39;format&#39;:fmt}\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Odbieranie i zapisywanie wyników</h3><h4>Ailoot Ultra · Rozpoznawanie mowy</h4><p class=\"note-s\">json</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Zachowaj wszystkie ukończone wyniki</h5><p class=\"note-s\">Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.</p><p class=\"note-s\">Zachowaj kompletny JSON, nagłówki odpowiedzi, tekst i każde faktycznie zwrócone pole użycia. Używaj rzeczywistych identyfikatorów zadań i zasobów z odpowiedzi lub biblioteki zasobów należących do użytkownika; operation_id nie jest task_id.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jeśli trzeba sprawdzić pierwotną odpowiedź</h5><p class=\"note-s\">Zachowaj pierwotny operation_id/X-Client-Request-ID do uzgodnienia danych bez ponownego wysyłania żądania; brak osobnej ścieżki API do cyklicznego sprawdzania stanu audio.</p></div><details class=\"card-about\" data-output-fields><summary>Pola odpowiedzi</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Pole</th><th>Typ</th><th>Znaczenie</th></tr></thead><tbody><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">text</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Znaczenie\"><span class=\"card-cell-label\">Znaczenie</span>Tekst transkrypcji.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object</td><td data-cell-label=\"Znaczenie\"><span class=\"card-cell-label\">Znaczenie</span>Użycie dźwięku.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">usage.seconds</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number</td><td data-cell-label=\"Znaczenie\"><span class=\"card-cell-label\">Znaczenie</span>Czas trwania dźwięku w sekundach.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number</td><td data-cell-label=\"Znaczenie\"><span class=\"card-cell-label\">Znaczenie</span>Czas trwania dźwięku w sekundach.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Znaczenie\"><span class=\"card-cell-label\">Znaczenie</span>Identyfikator zadania transkrypcji; zwracany wraz z asset_url, gdy niepusta transkrypcja zostanie zapisana, opublikowana i otrzyma podpisany URL treści.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Znaczenie\"><span class=\"card-cell-label\">Znaczenie</span>Podpisany URL treści transkrypcji; zwracany wraz z task_id, gdy niepusta transkrypcja zostanie zapisana, opublikowana i otrzyma podpisany URL treści.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Błędy i dalsze kroki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odpowiedź</th><th>Warunek</th><th>Następny krok</th></tr></thead><tbody><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Popraw wskazane pola przed nowym żądaniem utworzenia.</td></tr><tr><th data-cell-label=\"Odpowiedź\" scope=\"row\"><span class=\"card-cell-label\">Odpowiedź</span><code>server_error</code></th><td data-cell-label=\"Warunek\"><span class=\"card-cell-label\">Warunek</span>Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia</td><td data-cell-label=\"Następny krok\"><span class=\"card-cell-label\">Następny krok</span>Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasy</h3><h4>Aliasy modelu</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></span></p><h4>Aliasy ścieżek metod</h4><p class=\"note-s\">Użyj ścieżek metod podanych powyżej.</p><h4>Powiązane ID modeli</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed nowym żądaniem utworzenia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia",
                "http_status": null,
                "recovery": "Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Zachowaj pierwotny operation_id/X-Client-Request-ID do uzgodnienia danych bez ponownego wysyłania żądania; brak osobnej ścieżki API do cyklicznego sprawdzania stanu audio."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Zachowaj kompletny JSON, nagłówki odpowiedzi, tekst i każde faktycznie zwrócone pole użycia. Używaj rzeczywistych identyfikatorów zadań i zasobów z odpowiedzi lub biblioteki zasobów należących do użytkownika; operation_id nie jest task_id.",
              "family": "transcription",
              "fields": [
                {
                  "description": "Tekst transkrypcji.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Użycie dźwięku.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "Czas trwania dźwięku w sekundach.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Czas trwania dźwięku w sekundach.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Identyfikator zadania transkrypcji; zwracany wraz z asset_url, gdy niepusta transkrypcja zostanie zapisana, opublikowana i otrzyma podpisany URL treści.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Podpisany URL treści transkrypcji; zwracany wraz z task_id, gdy niepusta transkrypcja zostanie zapisana, opublikowana i otrzyma podpisany URL treści.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "Musi odpowiadać rzeczywistemu formatowi ustalonemu przy badaniu pliku",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "Zachowaj kompletną odpowiedź i pierwotne zwrócone identyfikatory.",
            "Nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "ścisłe kodowanie base64 rzeczywistych bajtów obsługiwanego dźwięku",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "dokładny format ustalony przy badaniu pliku; musi odpowiadać rzeczywistym bajtom",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Rzeczywiście zwrócony task_id lub wpis w bibliotece multimediów",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/transcribe-1-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "299fc63a6841b91ac16e03e8479dfa84bc42276e8f1114a5df5b52bb32b935c1",
    "input_html_sha256": "6e3d1bf0e31de8c0386bcb32d78d3eca5b02dcbb0cc11f77eb6f57c5ce507fab",
    "private_audit_sha256": "eca472fa48bba083e957b8e67be8d4eb952902b04b3a53abc03340d243c0a2c7",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/pl/fish-audio-transcribe-1-pro/",
    "description": "Transcribe 1 Pro zamienia nagrania trwające do 60 minut na tekst ze znacznikami mówców i opcjonalnym czasowaniem na poziomie słów. Zachowuje wywnioskowane oznaczenia emocji i zdarzeń głosowych, ułatwiając przeglądanie i przeszukiwanie wywiadów, spotkań oraz podcastów, a także przygotowywanie do nich napisów.",
    "locale": "pl",
    "md_url": "https://ailoot.ai/models/pl/fish-audio-transcribe-1-pro/index.md",
    "title": "Fish Audio: Transcribe 1 Pro — Ailoot",
    "url": "https://ailoot.ai/models/pl/fish-audio-transcribe-1-pro/"
  },
  "rawModel": {
    "about": "Transcribe 1 Pro to model zamiany mowy na tekst firmy Fish Audio do krótkich klipów, rozmów z wieloma mówcami i długich nagrań. Przyjmuje nagrany dźwięk i zwraca transkrypcję, z opcjonalnym czasowaniem i uporządkowanymi wypowiedziami mówców. Wyróżniają go zmiany mówcy oznaczone w tekście i wskazówki dotyczące emocji lub zdarzeń głosowych, zachowujące więcej struktury rozmowy niż zwykła sekwencja słów.\n\nW przypadku wywiadu, spotkania lub podcastu zachowaj całą rozmowę w jednym pliku, aby powracający mówcy mogli utrzymać spójne oznaczenia w obrębie odpowiedzi. Przydatnym materiałem do przeglądu jest transkrypcja powiązana z oryginalnym nagraniem, z osobno pokazanymi wypowiedziami i znacznikiem czasu do sprawdzenia cytatu. Podsumowanie lub lista działań to późniejszy krok aplikacji: zachowaj je osobno od transkrypcji, aby oryginalna treść wypowiedzi pozostała dostępna do porównania.\n\nProducent przyjmuje nagrania do 60 minut i opisuje przetwarzanie długich plików ze skompresowanym dźwiękiem, takim jak MP3, Opus lub AAC. Obsługiwane formaty obejmują WAV, MP3, AAC w M4A lub MP4, FLAC, Ogg z Opus lub Vorbis, WebM/Matroska i MOV. W pliku wideo używa pierwszej ścieżki dźwiękowej. AIFF, CAF, WMA, AMR, AC-3 i surowy PCM bez nagłówka nie są obsługiwane. Na żądanie dostarcza się jeden plik audio; wynik przychodzi po transkrypcji całego nagrania, a przetwarzanie długiego nagrania może potrwać kilka minut. Klipy krótsze niż około 0,08 sekundy są odrzucane.\n\nOdpowiedź producenta zawiera pełny tekst, czas trwania nagrania w sekundach i tablicę segments. Pro oznacza zmiany mówcy w tekście etykietami takimi jak <|speaker:0|> i <|speaker:1|>; etykieta dotyczy następującego po niej tekstu aż do kolejnego znacznika. Są to identyfikatory w obrębie jednej odpowiedzi, a nie zweryfikowane imiona ani tożsamości możliwe do dopasowania między żądaniami. Jeśli transkrypcja nie ma znacznika mówcy, przewodnik traktuje ją jako wynik dla jednego mówcy. Zachowaj tekst przed pierwszym znacznikiem w pierwszej wypowiedzi, zamiast go odrzucać.\n\nZnaczniki czasu na poziomie słów są opcjonalne. W żądaniu producenta ignore_timestamps ma domyślnie wartość true; ustawienie false prosi o segmenty z tekstem oraz czasem początku i końca w sekundach. Segment jest zazwyczaj słowem albo jednym lub kilkoma znakami w języku chińskim i japońskim. Tekst segmentu pomija interpunkcję, znaczniki mówców i oznaczenia zdarzeń oraz może normalizować wypowiedzianą wartość inaczej niż pełna transkrypcja. Segment słowa może mieć ten sam czas początku i końca. Pusta tablica segments może oznaczać, że nie zażądano znaczników czasu, nie znaleziono mowy lub czasowanie było chwilowo niedostępne. Używaj pełnej transkrypcji do czytelnego zapisu, a segmentów do wyrównania czasowego, zamiast zakładać zgodność obu ciągów znak po znaku.\n\nUstawienie diarize ma domyślnie wartość auto. Gdy zażądano znaczników czasu i diarize nie jest false, Pro zwraca także speaker_turns. Każda wypowiedź zawiera etykietę mówcy, tekst i czas początku oraz końca, zachowując interpunkcję i pozostawione oznaczenia bez znacznika mówcy wewnątrz tekstu. Jeśli czasowanie słów jest niedostępne, czasy wypowiedzi mogą być przybliżone i obejmować całe nagranie; sąsiednie wypowiedzi nie muszą być ciągłe ani rozłączne czasowo. Wyłączenie diarize usuwa uporządkowaną listę wypowiedzi, ale pozostawia znaczniki mówców w pełnym tekście. Znana liczba mówców albo minimalna i maksymalna liczba mogą pomóc w rozróżnianiu mówców w dłuższych nagraniach, bez gwarancji wyniku. Dokładnej liczby mówców nie można łączyć z jej minimalną ani maksymalną wartością, a wskazówek dotyczących liczby nie można używać przy wyłączonym diarize.\n\nOznaczenia emocji i zdarzeń głosowych pojawiają się jako tekst w nawiasach kwadratowych, na przykład [laughter], obok rozpoznanej mowy. Są to wnioski z dźwięku, a nie słowa, które użytkownik musi dodać przed transkrypcją. Ustawienie tag_audio_events w Pro ma domyślnie wartość true; jego wyłączenie usuwa te oznaczenia z transkrypcji i tekstu wypowiedzi bez zmiany czasowania. Nie ma osobnego pola emocji ani stałej listy wartości emocji. Zachowaj transkrypcję z oznaczeniami, gdy sposób wypowiedzenia uwagi ma znaczenie, a używaj wersji bez nich, gdy dalszy rezultat wymaga tylko wypowiedzianych słów.\n\nJęzyk jest wykrywany automatycznie. Opcjonalna wskazówka ISO 639-1 zapisana małymi literami nie wymusza tłumaczenia ani nie zmienia transkrypcji Pro. Jeśli nie da się ustalić języka, zwrócony kod języka może odzwierciedlać wskazówkę bez zweryfikowania jej względem dźwięku. Producent raportuje jeden język, a nie wykaz wszystkich języków w nagraniu mieszanym. Przygotowując archiwum do przeszukiwania, przechowuj oryginalne sformułowania wraz z metadanymi języka, szczególnie gdy różne części rozmowy przechodzą między językami.\n\nW przypadku napisów grupuj kolejne słowa ze znacznikami czasu w czytelne jednostki SRT lub WebVTT, zamiast tworzyć osobny napis dla każdego słowa. Rozdzielaj jednostki przy pauzach i dobieraj długość oraz czas wyświetlania do odtwarzacza i odbiorców. Granice wypowiedzi mogą utrzymywać różnych mówców w osobnych jednostkach. Sprawdzaj pusty wynik czasowania oraz jednostki, których koniec musi być późniejszy niż początek. Formatowanie napisów, nadawanie nazw anonimowym etykietom mówców i późniejsze podsumowania to rezultaty aplikacji zbudowane z wyniku transkrypcji.\n\nW praktycznym procesie pracy z nagraniem zdecyduj przed transkrypcją, czy potrzebujesz zwykłego czytelnego tekstu, oznaczonych wypowiedzi rozmowy czy czasowanych napisów. Zachowaj identyfikator dźwięku z wynikiem, pozostaw pełny zwrócony tekst, gdy interpunkcja i oznaczenia mają znaczenie, oraz używaj uporządkowanych pól czasowania do nawigacji. Możliwości Pro dotyczące długich nagrań i wielu mówców są odrębne od ogólnego modelu Transcribe 1 do krótkich nagrań; ich limitów i ustawień nie należy traktować jako wymiennych.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/transcribe-1-pro",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Pełny cennik konfiguracji w szczegółach."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "aeebfac63d7ddd8619fb",
        "label": "Fish Audio: Transcribe 1 Pro",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Konfiguracja domyślna"
            },
            "label": "Fish Audio: Transcribe 1 Pro · Domyślna konfiguracja",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "0949942d98ce2e4c35b418d6",
                "label": "Input audio seconds",
                "public_unit_label": "per input audio second",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_audio_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1-pro",
    "input": [
      "audio"
    ],
    "kind": "transcription",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "Nieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru",
                "http_status": 400,
                "recovery": "Popraw wskazane pola przed nowym żądaniem utworzenia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Zwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia",
                "http_status": null,
                "recovery": "Zachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Zachowaj pierwotny operation_id/X-Client-Request-ID do uzgodnienia danych bez ponownego wysyłania żądania; brak osobnej ścieżki API do cyklicznego sprawdzania stanu audio."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Zachowaj kompletny JSON, nagłówki odpowiedzi, tekst i każde faktycznie zwrócone pole użycia. Używaj rzeczywistych identyfikatorów zadań i zasobów z odpowiedzi lub biblioteki zasobów należących do użytkownika; operation_id nie jest task_id.",
              "family": "transcription",
              "fields": [
                {
                  "description": "Tekst transkrypcji.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Użycie dźwięku.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "Czas trwania dźwięku w sekundach.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Czas trwania dźwięku w sekundach.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Identyfikator zadania transkrypcji; zwracany wraz z asset_url, gdy niepusta transkrypcja zostanie zapisana, opublikowana i otrzyma podpisany URL treści.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Podpisany URL treści transkrypcji; zwracany wraz z task_id, gdy niepusta transkrypcja zostanie zapisana, opublikowana i otrzyma podpisany URL treści.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "Musi odpowiadać rzeczywistemu formatowi ustalonemu przy badaniu pliku",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "Zachowaj kompletną odpowiedź i pierwotne zwrócone identyfikatory.",
            "Nigdy nie ponawiaj żądania utworzenia o nieznanym wyniku."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "ścisłe kodowanie base64 rzeczywistych bajtów obsługiwanego dźwięku",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "dokładny format ustalony przy badaniu pliku; musi odpowiadać rzeczywistym bajtom",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Rzeczywiście zwrócony task_id lub wpis w bibliotece multimediów",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/transcribe-1-pro",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_declared_unit",
            "conditions": {},
            "key": "prompt",
            "label": "prompt",
            "quantity": "1",
            "rate_role": "typed_active_maker_rate",
            "side": "in",
            "unit": "input_audio_second"
          }
        ]
      }
    ],
    "public_id": "fish-audio/transcribe-1-pro",
    "short": "Transcribe 1 Pro zamienia nagrania trwające do 60 minut na tekst ze znacznikami mówców i opcjonalnym czasowaniem na poziomie słów. Zachowuje wywnioskowane oznaczenia emocji i zdarzeń głosowych, ułatwiając przeglądanie i przeszukiwanie wywiadów, spotkań oraz podcastów, a także przygotowywanie do nich napisów."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Transcribe 1 Pro zamienia nagrania trwające do 60 minut na tekst ze znacznikami mówców i opcjonalnym czasowaniem na poziomie słów. Zachowuje wywnioskowane oznaczenia emocji i zdarzeń głosowych, ułatwiając przeglądanie i przeszukiwanie wywiadów, spotkań oraz podcastów, a także przygotowywanie do nich napisów.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7f049a6ce8d54e7644f765de9363a9f7571a222886e79a855c68a7c5ff914645",
    "renderer_sha256": "1217dcf19a93e99ac1d6fd7bf974dc19adc12fea4bd4470c2601f04e48f688cb"
  },
  "sourceRevision": "f855a8f92ece8087df6bbed9971f6c39a8c9201cb84fdf208ba545d3e57f1c09"
}
