{
  "aboutHtml": "<p>Transcribe 1 è il modello generale speech-to-text di Fish Audio per registrazioni brevi. Accetta un file audio e restituisce le parole riconosciute sotto forma di testo, insieme alla durata della registrazione, a segmenti temporizzati facoltativi e a informazioni sulla lingua, quando disponibili. Questo modello è utile per una breve nota vocale, un’istruzione parlata, un estratto di registrazione o una clip audio che necessita di una rappresentazione testuale leggibile.</p><p>Un flusso esemplificativo per note vocali conserva la registrazione insieme alla trascrizione completa e a un identificatore della clip originale. Un passaggio applicativo successivo può cercare in quel testo, organizzare la nota o sviluppare un riepilogo conservando la fonte parlata. Per un comando, la trascrizione fornisce all’applicazione le parole riconosciute; qualsiasi azione costituisce un passaggio separato di interpretazione ed esecuzione. Per un estratto di intervista, registra la posizione della clip nell’audio completo, così da poter controllare una citazione nel punto corretto.</p><p>Il produttore accetta WAV, MP3, AAC, inclusi M4A/MP4, FLAC e Ogg contenente Opus o Vorbis. Le registrazioni del browser in WebM devono essere convertite in Ogg/Opus, MP3 o WAV per questo modello; Pro documenta il supporto nativo per contenitori aggiuntivi. Fornisci un solo file audio per richiesta. Il limite documentato del modello base è fino a 50 MiB, mantenendo i file MP3 e Opus sotto 25 MiB. Dimensione del file e lunghezza della registrazione sono aspetti diversi: un file compresso può rientrare nel limite di caricamento e richiedere comunque troppo tempo per l’elaborazione.</p><p>Transcribe 1 è progettato per registrazioni brevi. Il produttore consiglia Pro per audio più lunghi di pochi minuti; una richiesta lunga al modello base può fallire se supera il limite di tempo di elaborazione. Quando prepari una fonte lunga per trascriverla in clip brevi, conserva l’offset iniziale di ogni clip e conferma che la trascrizione restituita copra l’intera clip prima di combinare i risultati. Aggiungi l’offset originale ai tempi locali dei segmenti per mantenere la navigazione collegata alla registrazione completa. Le indicazioni del modello base non devono essere interpretate come il distinto limite di 60 minuti di Pro.</p><p>La risposta del produttore comprende testo, durata e segmenti. La durata è espressa in secondi e la trascrizione completa leggibile deve essere conservata come formulazione principale della clip. I timestamp sono facoltativi: nell’API del produttore ignore_timestamps ha valore predefinito true, mentre false richiede segmenti a livello di parola con testo e tempi di inizio e fine in secondi. Richiedere l’allineamento aumenta il tempo di elaborazione. Un array segments vuoto può derivare da temporizzazione saltata, assenza di parlato o allineamento temporaneamente non disponibile, quindi non deve essere interpretato automaticamente come una trascrizione completa vuota.</p><p>I segmenti corrispondono generalmente a parole, oppure a uno o pochi caratteri in cinese e giapponese. Il loro testo omette la punteggiatura e può normalizzare un valore in modo diverso dalla trascrizione completa; non è una copia carattere per carattere della risposta leggibile. Un segmento può avere lo stesso tempo di inizio e di fine. Usa i segmenti per trovare una posizione nella registrazione o preparare una visualizzazione temporizzata e usa il testo completo quando contano formulazione e punteggiatura. Mantieni distinte queste due rappresentazioni nel risultato.</p><p>La lingua viene rilevata automaticamente, indipendentemente dalla presenza di un suggerimento linguistico facoltativo. Il produttore documenta codici ISO 639-1 minuscoli per i suggerimenti e restituisce un codice di lingua per la logica applicativa insieme a un nome di lingua da visualizzare, quando noto. La risposta riporta una sola lingua, anziché tutte le lingue di una registrazione che alterna più lingue. Conserva la formulazione originale e i metadati linguistici disponibili con il risultato, anziché trattare la richiesta di trascrizione come un’operazione di traduzione.</p><p>Per un flusso di sottotitolazione, raggruppa i segmenti temporizzati consecutivi in battute leggibili, anziché mostrare una parola alla volta. Un output utile è un file SRT o WebVTT collegato alla clip originale, con confini delle battute adatti alle pause e una quantità gestibile di testo sullo schermo. Controlla l’eventuale assenza di temporizzazione e assicurati che la fine di ogni battuta segua il suo inizio. Il raggruppamento dei sottotitoli e la formattazione dei file sono passaggi applicativi costruiti a partire dall’allineamento restituito; le scelte di visualizzazione devono adattarsi al lettore e al pubblico.</p><p>I controlli documentati di Transcribe 1 sono l’audio, un suggerimento linguistico e la scelta dei timestamp. I marcatori dei parlanti, i turni strutturati dei parlanti, i controlli degli eventi emotivi e i suggerimenti sul numero di parlanti di Pro sono funzionalità separate; non fanno parte del contratto di risposta documentato di questo modello base. Scegli il risultato necessario prima dell’elaborazione: testo semplice e leggibile per una nota, oppure testo con allineamento per navigazione durante la riproduzione e sottotitoli. Conservare l’identificatore della clip, la trascrizione e qualsiasi temporizzazione disponibile rende il risultato utile per la fase applicativa successiva.</p>",
  "aboutText": "Transcribe 1 è il modello generale speech-to-text di Fish Audio per registrazioni brevi. Accetta un file audio e restituisce le parole riconosciute sotto forma di testo, insieme alla durata della registrazione, a segmenti temporizzati facoltativi e a informazioni sulla lingua, quando disponibili. Questo modello è utile per una breve nota vocale, un’istruzione parlata, un estratto di registrazione o una clip audio che necessita di una rappresentazione testuale leggibile.\n\nUn flusso esemplificativo per note vocali conserva la registrazione insieme alla trascrizione completa e a un identificatore della clip originale. Un passaggio applicativo successivo può cercare in quel testo, organizzare la nota o sviluppare un riepilogo conservando la fonte parlata. Per un comando, la trascrizione fornisce all’applicazione le parole riconosciute; qualsiasi azione costituisce un passaggio separato di interpretazione ed esecuzione. Per un estratto di intervista, registra la posizione della clip nell’audio completo, così da poter controllare una citazione nel punto corretto.\n\nIl produttore accetta WAV, MP3, AAC, inclusi M4A/MP4, FLAC e Ogg contenente Opus o Vorbis. Le registrazioni del browser in WebM devono essere convertite in Ogg/Opus, MP3 o WAV per questo modello; Pro documenta il supporto nativo per contenitori aggiuntivi. Fornisci un solo file audio per richiesta. Il limite documentato del modello base è fino a 50 MiB, mantenendo i file MP3 e Opus sotto 25 MiB. Dimensione del file e lunghezza della registrazione sono aspetti diversi: un file compresso può rientrare nel limite di caricamento e richiedere comunque troppo tempo per l’elaborazione.\n\nTranscribe 1 è progettato per registrazioni brevi. Il produttore consiglia Pro per audio più lunghi di pochi minuti; una richiesta lunga al modello base può fallire se supera il limite di tempo di elaborazione. Quando prepari una fonte lunga per trascriverla in clip brevi, conserva l’offset iniziale di ogni clip e conferma che la trascrizione restituita copra l’intera clip prima di combinare i risultati. Aggiungi l’offset originale ai tempi locali dei segmenti per mantenere la navigazione collegata alla registrazione completa. Le indicazioni del modello base non devono essere interpretate come il distinto limite di 60 minuti di Pro.\n\nLa risposta del produttore comprende testo, durata e segmenti. La durata è espressa in secondi e la trascrizione completa leggibile deve essere conservata come formulazione principale della clip. I timestamp sono facoltativi: nell’API del produttore ignore_timestamps ha valore predefinito true, mentre false richiede segmenti a livello di parola con testo e tempi di inizio e fine in secondi. Richiedere l’allineamento aumenta il tempo di elaborazione. Un array segments vuoto può derivare da temporizzazione saltata, assenza di parlato o allineamento temporaneamente non disponibile, quindi non deve essere interpretato automaticamente come una trascrizione completa vuota.\n\nI segmenti corrispondono generalmente a parole, oppure a uno o pochi caratteri in cinese e giapponese. Il loro testo omette la punteggiatura e può normalizzare un valore in modo diverso dalla trascrizione completa; non è una copia carattere per carattere della risposta leggibile. Un segmento può avere lo stesso tempo di inizio e di fine. Usa i segmenti per trovare una posizione nella registrazione o preparare una visualizzazione temporizzata e usa il testo completo quando contano formulazione e punteggiatura. Mantieni distinte queste due rappresentazioni nel risultato.\n\nLa lingua viene rilevata automaticamente, indipendentemente dalla presenza di un suggerimento linguistico facoltativo. Il produttore documenta codici ISO 639-1 minuscoli per i suggerimenti e restituisce un codice di lingua per la logica applicativa insieme a un nome di lingua da visualizzare, quando noto. La risposta riporta una sola lingua, anziché tutte le lingue di una registrazione che alterna più lingue. Conserva la formulazione originale e i metadati linguistici disponibili con il risultato, anziché trattare la richiesta di trascrizione come un’operazione di traduzione.\n\nPer un flusso di sottotitolazione, raggruppa i segmenti temporizzati consecutivi in battute leggibili, anziché mostrare una parola alla volta. Un output utile è un file SRT o WebVTT collegato alla clip originale, con confini delle battute adatti alle pause e una quantità gestibile di testo sullo schermo. Controlla l’eventuale assenza di temporizzazione e assicurati che la fine di ogni battuta segua il suo inizio. Il raggruppamento dei sottotitoli e la formattazione dei file sono passaggi applicativi costruiti a partire dall’allineamento restituito; le scelte di visualizzazione devono adattarsi al lettore e al pubblico.\n\nI controlli documentati di Transcribe 1 sono l’audio, un suggerimento linguistico e la scelta dei timestamp. I marcatori dei parlanti, i turni strutturati dei parlanti, i controlli degli eventi emotivi e i suggerimenti sul numero di parlanti di Pro sono funzionalità separate; non fanno parte del contratto di risposta documentato di questo modello base. Scegli il risultato necessario prima dell’elaborazione: testo semplice e leggibile per una nota, oppure testo con allineamento per navigazione durante la riproduzione e sottotitoli. Conservare l’identificatore della clip, la trascrizione e qualsiasi temporizzazione disponibile rende il risultato utile per la fase applicativa successiva.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "47fa50270eefa1c3ba5d298fdb33c4bc353e381a5b771a6722d7903cb3a60cdc",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "it",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: Transcribe 1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Chiudi\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1</code><button type=\"button\" id=\"copy-id\">Copia ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sezioni della scheda del modello\"><button type=\"button\" data-card-jump=\"overview\">Introduzione</button><button type=\"button\" data-card-jump=\"methods\">Input e metodi</button><button type=\"button\" data-card-jump=\"pricing\">Tariffe</button><button type=\"button\" data-card-jump=\"examples\">Esempi</button><button type=\"button\" data-card-jump=\"results\">Risultati</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metodi 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\">Riconoscimento</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\">Introduzione</h3><p class=\"mdesc-full\">Transcribe 1 converte brevi registrazioni audio in testo con rilevamento automatico della lingua e timestamp facoltativi a livello di parola. Usa la trascrizione per note vocali, clip ricercabili o preparazione di sottotitoli, mantenendo i segmenti temporizzati separati dal testo completo leggibile.</p><dl class=\"card-io\" data-card-io><div><dt>Input accettati</dt><dd>Audio</dd></div><div><dt>Risultati</dt><dd>Testo</dd></div></dl><details class=\"card-about\"><summary>Informazioni sul modello</summary><p class=\"note-s\" data-model-method-boundary>Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1 è il modello generale speech-to-text di Fish Audio per registrazioni brevi. Accetta un file audio e restituisce le parole riconosciute sotto forma di testo, insieme alla durata della registrazione, a segmenti temporizzati facoltativi e a informazioni sulla lingua, quando disponibili. Questo modello è utile per una breve nota vocale, un’istruzione parlata, un estratto di registrazione o una clip audio che necessita di una rappresentazione testuale leggibile.</p><p>Un flusso esemplificativo per note vocali conserva la registrazione insieme alla trascrizione completa e a un identificatore della clip originale. Un passaggio applicativo successivo può cercare in quel testo, organizzare la nota o sviluppare un riepilogo conservando la fonte parlata. Per un comando, la trascrizione fornisce all’applicazione le parole riconosciute; qualsiasi azione costituisce un passaggio separato di interpretazione ed esecuzione. Per un estratto di intervista, registra la posizione della clip nell’audio completo, così da poter controllare una citazione nel punto corretto.</p><p>Il produttore accetta WAV, MP3, AAC, inclusi M4A/MP4, FLAC e Ogg contenente Opus o Vorbis. Le registrazioni del browser in WebM devono essere convertite in Ogg/Opus, MP3 o WAV per questo modello; Pro documenta il supporto nativo per contenitori aggiuntivi. Fornisci un solo file audio per richiesta. Il limite documentato del modello base è fino a 50 MiB, mantenendo i file MP3 e Opus sotto 25 MiB. Dimensione del file e lunghezza della registrazione sono aspetti diversi: un file compresso può rientrare nel limite di caricamento e richiedere comunque troppo tempo per l’elaborazione.</p><p>Transcribe 1 è progettato per registrazioni brevi. Il produttore consiglia Pro per audio più lunghi di pochi minuti; una richiesta lunga al modello base può fallire se supera il limite di tempo di elaborazione. Quando prepari una fonte lunga per trascriverla in clip brevi, conserva l’offset iniziale di ogni clip e conferma che la trascrizione restituita copra l’intera clip prima di combinare i risultati. Aggiungi l’offset originale ai tempi locali dei segmenti per mantenere la navigazione collegata alla registrazione completa. Le indicazioni del modello base non devono essere interpretate come il distinto limite di 60 minuti di Pro.</p><p>La risposta del produttore comprende testo, durata e segmenti. La durata è espressa in secondi e la trascrizione completa leggibile deve essere conservata come formulazione principale della clip. I timestamp sono facoltativi: nell’API del produttore ignore_timestamps ha valore predefinito true, mentre false richiede segmenti a livello di parola con testo e tempi di inizio e fine in secondi. Richiedere l’allineamento aumenta il tempo di elaborazione. Un array segments vuoto può derivare da temporizzazione saltata, assenza di parlato o allineamento temporaneamente non disponibile, quindi non deve essere interpretato automaticamente come una trascrizione completa vuota.</p><p>I segmenti corrispondono generalmente a parole, oppure a uno o pochi caratteri in cinese e giapponese. Il loro testo omette la punteggiatura e può normalizzare un valore in modo diverso dalla trascrizione completa; non è una copia carattere per carattere della risposta leggibile. Un segmento può avere lo stesso tempo di inizio e di fine. Usa i segmenti per trovare una posizione nella registrazione o preparare una visualizzazione temporizzata e usa il testo completo quando contano formulazione e punteggiatura. Mantieni distinte queste due rappresentazioni nel risultato.</p><p>La lingua viene rilevata automaticamente, indipendentemente dalla presenza di un suggerimento linguistico facoltativo. Il produttore documenta codici ISO 639-1 minuscoli per i suggerimenti e restituisce un codice di lingua per la logica applicativa insieme a un nome di lingua da visualizzare, quando noto. La risposta riporta una sola lingua, anziché tutte le lingue di una registrazione che alterna più lingue. Conserva la formulazione originale e i metadati linguistici disponibili con il risultato, anziché trattare la richiesta di trascrizione come un’operazione di traduzione.</p><p>Per un flusso di sottotitolazione, raggruppa i segmenti temporizzati consecutivi in battute leggibili, anziché mostrare una parola alla volta. Un output utile è un file SRT o WebVTT collegato alla clip originale, con confini delle battute adatti alle pause e una quantità gestibile di testo sullo schermo. Controlla l’eventuale assenza di temporizzazione e assicurati che la fine di ogni battuta segua il suo inizio. Il raggruppamento dei sottotitoli e la formattazione dei file sono passaggi applicativi costruiti a partire dall’allineamento restituito; le scelte di visualizzazione devono adattarsi al lettore e al pubblico.</p><p>I controlli documentati di Transcribe 1 sono l’audio, un suggerimento linguistico e la scelta dei timestamp. I marcatori dei parlanti, i turni strutturati dei parlanti, i controlli degli eventi emotivi e i suggerimenti sul numero di parlanti di Pro sono funzionalità separate; non fanno parte del contratto di risposta documentato di questo modello base. Scegli il risultato necessario prima dell’elaborazione: testo semplice e leggibile per una nota, oppure testo con allineamento per navigazione durante la riproduzione e sottotitoli. Conservare l’identificatore della clip, la trascrizione e qualsiasi temporizzazione disponibile rende il risultato utile per la fase applicativa successiva.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponibile in Ailoot · input e metodi</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Trascrizione</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Tipi di input</dt><dd><code>audio</code></dd></div><div><dt>Tipi di output</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valori e limiti</th><th>Predefinito</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>fish-audio/transcribe-1</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parametri e ciclo di vita del metodo</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametro</th><th>Contratto</th></tr></thead><tbody><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>content_type</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>application/json</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>required</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>model, input_audio</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_types</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>audio</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_conditions</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>L&#39;esempio legge il tuo file PCM WAV reale e non vuoto, codifica tutti i byte del file in base64 e invia input_audio.format con valore wav.</td></tr></tbody></table></div><p>Ciclo di vita: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id esatto di un record multimediale esistente di tua proprietà</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></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tariffe</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.</p><dl data-price-conditions><dt>Modalità rapida</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità rapida</span></dd><dt>Modalità flex</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità flex</span></dd><dt>Sforzo massimo di ragionamento</dt><dd>Non specificato <span class=\"note-s\">Quando lo sforzo massimo di ragionamento usa l&#39;adeguamento predefinito (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tariffe Ailoot</h4><h4>Prezzi per configurazione</h4><p class=\"note-s\">Associa ogni costo alle condizioni indicate. Usa una sola tariffa per ogni insieme di configurazioni alternative.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configurazione</th><th>Listino delle tariffe</th><th>Unità di fatturazione</th><th>Costo</th></tr></thead><tbody><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Tariffe base dei token</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>Tariffa base</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>—</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · Token in input</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token in output</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Lettura dalla cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache, 1 ora</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>secondo audio in ingresso</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>—</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>per secondo di audio in input</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · secondo audio in ingresso</span> <b>$0.0002</b> <span class=\"price-unit\">per secondo di audio in input</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. <a href=\"/docs/it/billing/reserve/\">Come funzionano la prenotazione e l’addebito finale →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esempi di richieste</h3><h4>Ailoot Ultra · Trascrizione</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><button class=\"cg-tab\" id=\"model-code-1361-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1361-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · file WAV effettivo e risultato originale completo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><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-1361-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1361-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 the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;fish-audio/transcribe-1&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\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 response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ricevi e salva i risultati</h3><h4>Ailoot Ultra · Trascrizione</h4><p class=\"note-s\">Corpo completo della risposta originale, stato e intestazioni inoltrate. Questo gestore non aggiunge alcuna struttura JSON universale, campo di testo o struttura contenitore dell&#39;attività.</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>Conserva tutti i risultati completati</h5><p class=\"note-s\">Conserva ogni risposta, file e parte di contenuto restituiti per intero.</p><p class=\"note-s\">Conserva la risposta completa e gli header, ogni output effettivo, gli identificatori originali restituiti e tutti i campi di utilizzo. Recupera l&#39;operazione originale senza inviare nuovamente la richiesta di creazione.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Se occorre verificare la risposta originale</h5><p class=\"note-s\">Conserva l&#39;X-Client-Request-ID effettivo e la risposta completa. Consulta le risorse originali di tua proprietà e i relativi URL firmati esatti del contenuto; non inviare mai nuovamente una creazione dall&#39;esito incerto.</p></div><details class=\"card-about\" data-output-fields><summary>Campi della risposta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errori e passaggi successivi</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Risposta</th><th>Condizione</th><th>Passaggio successivo</th></tr></thead><tbody><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>Il corpo JSON o l&#39;ID canonico esplicito del modello non è valido.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva la risposta e correggi il campo della richiesta indicato.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>La chiave API Ailoot non è valida.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Usa la tua chiave API Ailoot autorizzata.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>403 · <code>permission_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>Il gruppo della chiave non è autorizzato a utilizzare questo metodo.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva i dettagli dell&#39;errore restituiti.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>Il metodo selezionato non dispone di una rotta autorizzata all&#39;utilizzo.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva i dettagli dell&#39;errore restituiti.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>La tariffa accettata non può ottenere la quantità in ingresso o il limite richiesto.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva la risposta; usa la rappresentazione dell&#39;input richiesta dalla tariffa accettata.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>503 · <code></code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>L&#39;archiviazione richiesta, la rotta, il prezzo del metodo o la riserva dell&#39;importo non sono disponibili.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva l&#39;intera risposta originale. Una riserva dell&#39;importo dall&#39;esito incerto non autorizza un nuovo invio.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>502 · <code>server_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>Il risultato originale, i dati di utilizzo o il conguaglio dell&#39;addebito richiedono una verifica.</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva l&#39;ID effettivo della richiesta e la risposta originale. Consulta il record esistente di tua proprietà; non inviare nuovamente la richiesta di creazione.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modello</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></span></p><h4>Alias dei percorsi dei metodi</h4><p class=\"note-s\">Usa i percorsi dei metodi indicati sopra.</p><h4>ID di chiamata correlati</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Il corpo JSON o l'ID canonico esplicito del modello non è valido.",
                "http_status": 400,
                "recovery": "Conserva la risposta e correggi il campo della richiesta indicato.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La chiave API Ailoot non è valida.",
                "http_status": 401,
                "recovery": "Usa la tua chiave API Ailoot autorizzata.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Il gruppo della chiave non è autorizzato a utilizzare questo metodo.",
                "http_status": 403,
                "recovery": "Conserva i dettagli dell'errore restituiti.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Il metodo selezionato non dispone di una rotta autorizzata all'utilizzo.",
                "http_status": 404,
                "recovery": "Conserva i dettagli dell'errore restituiti.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "La tariffa accettata non può ottenere la quantità in ingresso o il limite richiesto.",
                "http_status": 422,
                "recovery": "Conserva la risposta; usa la rappresentazione dell'input richiesta dalla tariffa accettata.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "L'archiviazione richiesta, la rotta, il prezzo del metodo o la riserva dell'importo non sono disponibili.",
                "http_status": 503,
                "recovery": "Conserva l'intera risposta originale. Una riserva dell'importo dall'esito incerto non autorizza un nuovo invio.",
                "type": null
              },
              {
                "code": null,
                "condition": "Il risultato originale, i dati di utilizzo o il conguaglio dell'addebito richiedono una verifica.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conserva l'ID effettivo della richiesta e la risposta originale. Consulta il record esistente di tua proprietà; non inviare nuovamente la richiesta di creazione.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "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 content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva l'X-Client-Request-ID effettivo e la risposta completa. Consulta le risorse originali di tua proprietà e i relativi URL firmati esatti del contenuto; non inviare mai nuovamente una creazione dall'esito incerto."
            },
            "outputs": {
              "all_results": "Conserva la risposta completa e gli header, ogni output effettivo, gli identificatori originali restituiti e tutti i campi di utilizzo. Recupera l'operazione originale senza inviare nuovamente la richiesta di creazione.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Corpo completo della risposta originale, stato e intestazioni inoltrate. Questo gestore non aggiunge alcuna struttura JSON universale, campo di testo o struttura contenitore dell'attività."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "fish-audio/transcribe-1"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "L'esempio legge il tuo file PCM WAV reale e non vuoto, codifica tutti i byte del file in base64 e invia input_audio.format con valore wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "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 content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id esatto di un record multimediale esistente di tua proprietà",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "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 the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'fish-audio/transcribe-1', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\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 response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Trascrizione",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "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",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "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",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "f96060a5611bcb2d4206cc23d69493f80dc0da07a67ba408dbff681627d719ea",
    "input_html_sha256": "86334392167341f1e7756a276214188f33b7f718e49dc52a514e1bd0860bec92",
    "private_audit_sha256": "a11370009045799a64944e58bdac96fbc9a2886d7aafb61efdadab81e1f874fa",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/it/fish-audio-transcribe-1/",
    "description": "Transcribe 1 converte brevi registrazioni audio in testo con rilevamento automatico della lingua e timestamp facoltativi a livello di parola. Usa la trascrizione per note vocali, clip ricercabili o preparazione di sottotitoli, mantenendo i segmenti temporizzati separati dal testo completo leggibile.",
    "locale": "it",
    "md_url": "https://ailoot.ai/models/it/fish-audio-transcribe-1/index.md",
    "title": "Fish Audio: Transcribe 1 — Ailoot",
    "url": "https://ailoot.ai/models/it/fish-audio-transcribe-1/"
  },
  "rawModel": {
    "about": "Transcribe 1 è il modello generale speech-to-text di Fish Audio per registrazioni brevi. Accetta un file audio e restituisce le parole riconosciute sotto forma di testo, insieme alla durata della registrazione, a segmenti temporizzati facoltativi e a informazioni sulla lingua, quando disponibili. Questo modello è utile per una breve nota vocale, un’istruzione parlata, un estratto di registrazione o una clip audio che necessita di una rappresentazione testuale leggibile.\n\nUn flusso esemplificativo per note vocali conserva la registrazione insieme alla trascrizione completa e a un identificatore della clip originale. Un passaggio applicativo successivo può cercare in quel testo, organizzare la nota o sviluppare un riepilogo conservando la fonte parlata. Per un comando, la trascrizione fornisce all’applicazione le parole riconosciute; qualsiasi azione costituisce un passaggio separato di interpretazione ed esecuzione. Per un estratto di intervista, registra la posizione della clip nell’audio completo, così da poter controllare una citazione nel punto corretto.\n\nIl produttore accetta WAV, MP3, AAC, inclusi M4A/MP4, FLAC e Ogg contenente Opus o Vorbis. Le registrazioni del browser in WebM devono essere convertite in Ogg/Opus, MP3 o WAV per questo modello; Pro documenta il supporto nativo per contenitori aggiuntivi. Fornisci un solo file audio per richiesta. Il limite documentato del modello base è fino a 50 MiB, mantenendo i file MP3 e Opus sotto 25 MiB. Dimensione del file e lunghezza della registrazione sono aspetti diversi: un file compresso può rientrare nel limite di caricamento e richiedere comunque troppo tempo per l’elaborazione.\n\nTranscribe 1 è progettato per registrazioni brevi. Il produttore consiglia Pro per audio più lunghi di pochi minuti; una richiesta lunga al modello base può fallire se supera il limite di tempo di elaborazione. Quando prepari una fonte lunga per trascriverla in clip brevi, conserva l’offset iniziale di ogni clip e conferma che la trascrizione restituita copra l’intera clip prima di combinare i risultati. Aggiungi l’offset originale ai tempi locali dei segmenti per mantenere la navigazione collegata alla registrazione completa. Le indicazioni del modello base non devono essere interpretate come il distinto limite di 60 minuti di Pro.\n\nLa risposta del produttore comprende testo, durata e segmenti. La durata è espressa in secondi e la trascrizione completa leggibile deve essere conservata come formulazione principale della clip. I timestamp sono facoltativi: nell’API del produttore ignore_timestamps ha valore predefinito true, mentre false richiede segmenti a livello di parola con testo e tempi di inizio e fine in secondi. Richiedere l’allineamento aumenta il tempo di elaborazione. Un array segments vuoto può derivare da temporizzazione saltata, assenza di parlato o allineamento temporaneamente non disponibile, quindi non deve essere interpretato automaticamente come una trascrizione completa vuota.\n\nI segmenti corrispondono generalmente a parole, oppure a uno o pochi caratteri in cinese e giapponese. Il loro testo omette la punteggiatura e può normalizzare un valore in modo diverso dalla trascrizione completa; non è una copia carattere per carattere della risposta leggibile. Un segmento può avere lo stesso tempo di inizio e di fine. Usa i segmenti per trovare una posizione nella registrazione o preparare una visualizzazione temporizzata e usa il testo completo quando contano formulazione e punteggiatura. Mantieni distinte queste due rappresentazioni nel risultato.\n\nLa lingua viene rilevata automaticamente, indipendentemente dalla presenza di un suggerimento linguistico facoltativo. Il produttore documenta codici ISO 639-1 minuscoli per i suggerimenti e restituisce un codice di lingua per la logica applicativa insieme a un nome di lingua da visualizzare, quando noto. La risposta riporta una sola lingua, anziché tutte le lingue di una registrazione che alterna più lingue. Conserva la formulazione originale e i metadati linguistici disponibili con il risultato, anziché trattare la richiesta di trascrizione come un’operazione di traduzione.\n\nPer un flusso di sottotitolazione, raggruppa i segmenti temporizzati consecutivi in battute leggibili, anziché mostrare una parola alla volta. Un output utile è un file SRT o WebVTT collegato alla clip originale, con confini delle battute adatti alle pause e una quantità gestibile di testo sullo schermo. Controlla l’eventuale assenza di temporizzazione e assicurati che la fine di ogni battuta segua il suo inizio. Il raggruppamento dei sottotitoli e la formattazione dei file sono passaggi applicativi costruiti a partire dall’allineamento restituito; le scelte di visualizzazione devono adattarsi al lettore e al pubblico.\n\nI controlli documentati di Transcribe 1 sono l’audio, un suggerimento linguistico e la scelta dei timestamp. I marcatori dei parlanti, i turni strutturati dei parlanti, i controlli degli eventi emotivi e i suggerimenti sul numero di parlanti di Pro sono funzionalità separate; non fanno parte del contratto di risposta documentato di questo modello base. Scegli il risultato necessario prima dell’elaborazione: testo semplice e leggibile per una nota, oppure testo con allineamento per navigazione durante la riproduzione e sottotitoli. Conservare l’identificatore della clip, la trascrizione e qualsiasi temporizzazione disponibile rende il risultato utile per la fase applicativa successiva.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "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": "Tutte le tariffe della configurazione sono riportate nei dettagli."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Il corpo JSON o l'ID canonico esplicito del modello non è valido.",
                "http_status": 400,
                "recovery": "Conserva la risposta e correggi il campo della richiesta indicato.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La chiave API Ailoot non è valida.",
                "http_status": 401,
                "recovery": "Usa la tua chiave API Ailoot autorizzata.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Il gruppo della chiave non è autorizzato a utilizzare questo metodo.",
                "http_status": 403,
                "recovery": "Conserva i dettagli dell'errore restituiti.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Il metodo selezionato non dispone di una rotta autorizzata all'utilizzo.",
                "http_status": 404,
                "recovery": "Conserva i dettagli dell'errore restituiti.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "La tariffa accettata non può ottenere la quantità in ingresso o il limite richiesto.",
                "http_status": 422,
                "recovery": "Conserva la risposta; usa la rappresentazione dell'input richiesta dalla tariffa accettata.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "L'archiviazione richiesta, la rotta, il prezzo del metodo o la riserva dell'importo non sono disponibili.",
                "http_status": 503,
                "recovery": "Conserva l'intera risposta originale. Una riserva dell'importo dall'esito incerto non autorizza un nuovo invio.",
                "type": null
              },
              {
                "code": null,
                "condition": "Il risultato originale, i dati di utilizzo o il conguaglio dell'addebito richiedono una verifica.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conserva l'ID effettivo della richiesta e la risposta originale. Consulta il record esistente di tua proprietà; non inviare nuovamente la richiesta di creazione.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "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 content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva l'X-Client-Request-ID effettivo e la risposta completa. Consulta le risorse originali di tua proprietà e i relativi URL firmati esatti del contenuto; non inviare mai nuovamente una creazione dall'esito incerto."
            },
            "outputs": {
              "all_results": "Conserva la risposta completa e gli header, ogni output effettivo, gli identificatori originali restituiti e tutti i campi di utilizzo. Recupera l'operazione originale senza inviare nuovamente la richiesta di creazione.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Corpo completo della risposta originale, stato e intestazioni inoltrate. Questo gestore non aggiunge alcuna struttura JSON universale, campo di testo o struttura contenitore dell'attività."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "fish-audio/transcribe-1"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "L'esempio legge il tuo file PCM WAV reale e non vuoto, codifica tutti i byte del file in base64 e invia input_audio.format con valore wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "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 content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id esatto di un record multimediale esistente di tua proprietà",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "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 the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'fish-audio/transcribe-1', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\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 response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Trascrizione",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "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",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "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",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Transcribe 1 converte brevi registrazioni audio in testo con rilevamento automatico della lingua e timestamp facoltativi a livello di parola. Usa la trascrizione per note vocali, clip ricercabili o preparazione di sottotitoli, mantenendo i segmenti temporizzati separati dal testo completo leggibile."
  },
  "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 converte brevi registrazioni audio in testo con rilevamento automatico della lingua e timestamp facoltativi a livello di parola. Usa la trascrizione per note vocali, clip ricercabili o preparazione di sottotitoli, mantenendo i segmenti temporizzati separati dal testo completo leggibile.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6357e27cbf5b451fff4ff6e0b640e5c6c8d7730da69305cf83824993f55320a8",
    "renderer_sha256": "3be1a96012c3c76b38a7b9bea6a57c0def38c56103737bee6a5e77aaa75e488a"
  },
  "sourceRevision": "9564ba866a68f22892ca180e7e8d42dd5d47334d45b2906ed4da86d5a3e541bb"
}
