{
  "aboutHtml": "<p>Transcribe 1 Pro es el modelo de voz a texto de Fish Audio para clips cortos, conversaciones con varios hablantes y grabaciones largas. Recibe audio grabado y devuelve una transcripción, con tiempos opcionales y turnos de habla estructurados. Sus características distintivas son los cambios de hablante marcados en el texto y los indicios de emoción o eventos vocales, que conservan más estructura conversacional de la grabación que una secuencia simple de palabras.</p><p>Para una entrevista, reunión o pódcast, mantén la conversación completa en un archivo para que los hablantes que vuelven a intervenir puedan conservar etiquetas coherentes dentro de la respuesta. Un artefacto útil de revisión es una transcripción vinculada a la grabación original, con turnos mostrados por separado y una marca de tiempo disponible para comprobar una cita. Un resumen o lista de acciones son un paso posterior de la aplicación: mantenlos separados de la transcripción para que la fuente hablada siga disponible para comparación.</p><p>El productor acepta grabaciones de hasta 60 minutos y describe el procesamiento de archivos largos con audio comprimido como MP3, Opus o AAC. Los formatos compatibles incluyen WAV, MP3, AAC en M4A o MP4, FLAC, Ogg con Opus o Vorbis, WebM/Matroska y MOV. Para un archivo de vídeo utiliza la primera pista de audio. AIFF, CAF, WMA, AMR, AC-3 y PCM sin cabecera no son compatibles. Se proporciona un archivo de audio por solicitud; el resultado llega después de transcribir la grabación completa y una grabación larga puede tardar varios minutos. Se rechazan clips de menos de aproximadamente 0,08 segundos.</p><p>La respuesta del productor contiene el texto completo, la duración de la grabación en segundos y un array segments. Pro marca los cambios de hablante dentro del texto con etiquetas como &lt;|speaker:0|&gt; y &lt;|speaker:1|&gt;; una etiqueta se aplica al texto siguiente hasta el próximo marcador. Son identificadores dentro de una respuesta, no nombres ni identidades verificadas que puedan relacionarse entre solicitudes. Si la transcripción no tiene un marcador de hablante, la guía la trata como un resultado de un solo hablante. Conserva cualquier texto anterior al primer marcador dentro del primer turno, en lugar de descartarlo.</p><p>Las marcas de tiempo a nivel de palabra son opcionales. En la solicitud al productor, ignore_timestamps tiene true como valor predeterminado; establecerlo en false solicita segmentos con text y tiempos start y end en segundos. Un segmento suele ser una palabra, o un carácter o unos pocos en chino y japonés. El texto de segmento omite puntuación, marcadores de hablante e indicios de eventos y puede normalizar un valor hablado de forma distinta al texto completo de la transcripción. Un segmento de palabra puede tener los mismos tiempos start y end. Un array segments vacío puede significar que no se pidieron marcas de tiempo, que no se encontró habla o que los tiempos no estaban disponibles temporalmente. Utiliza la transcripción completa para una formulación legible y los segmentos para alineación, en lugar de suponer que ambas cadenas coinciden carácter por carácter.</p><p>El ajuste diarize tiene auto como valor predeterminado. Cuando se solicitan marcas de tiempo y diarize no es false, Pro también devuelve speaker_turns. Cada turno contiene su etiqueta de hablante, texto y tiempos start/end, conservando la puntuación y los indicios retenidos sin el marcador de hablante dentro del texto. Si no están disponibles los tiempos de palabras, los tiempos de turno pueden ser aproximados y cubrir la grabación completa; los turnos adyacentes no son necesariamente contiguos ni están necesariamente libres de solapamiento. Desactivar diarize elimina la lista estructurada de turnos, pero deja los marcadores de hablante en el texto completo. Una cantidad conocida de hablantes, o cantidades mínima y máxima, pueden orientar la diarización de grabaciones más largas con el mejor esfuerzo disponible. La cantidad exacta no puede combinarse con sus límites y las indicaciones de cantidad no pueden utilizarse con diarize desactivado.</p><p>Los indicios de emoción y eventos vocales aparecen como texto entre corchetes, por ejemplo [laughter], junto al habla reconocida. Son inferencias del audio, no palabras que un usuario deba añadir antes de transcribir. El ajuste tag_audio_events de Pro tiene true como valor predeterminado; desactivarlo elimina estos indicios de la transcripción y del texto de turnos sin cambiar los tiempos. No hay un campo separado de emoción ni una enumeración fija de emociones. Conserva la transcripción anotada cuando importe cómo suena un comentario y utiliza una versión sin indicios cuando el artefacto posterior necesite únicamente las palabras pronunciadas.</p><p>El idioma se detecta automáticamente. Una indicación opcional ISO 639-1 en minúsculas no fuerza traducción ni cambia la transcripción de Pro. Si el idioma no puede determinarse, el código de idioma devuelto puede reflejar la indicación sin verificarla frente al audio. El productor comunica un idioma, en lugar de un inventario de todos los idiomas de una grabación multilingüe. Mantén juntos la formulación original y los metadatos de idioma al preparar un archivo consultable, especialmente cuando distintas partes de una conversación cambien de idioma.</p><p>Para subtítulos, agrupa palabras consecutivas con tiempos en entradas legibles SRT o WebVTT, en lugar de producir un subtítulo por palabra. Separa las entradas alrededor de las pausas y elige su longitud y tiempo de visualización según el reproductor y el público. Los límites de turnos de habla pueden mantener a hablantes diferentes en entradas separadas. Comprueba si el resultado de tiempos está vacío y verifica que el final de cada entrada sea posterior a su inicio. El formato de subtítulos, los nombres de etiquetas anónimas de hablante y cualquier resumen posterior son artefactos de la aplicación construidos a partir del resultado de transcripción.</p><p>Para un flujo práctico de grabaciones, decide antes de transcribir si necesitas una transcripción simple y legible, turnos conversacionales anotados o subtítulos con tiempos. Mantén el identificador de audio junto al resultado, conserva el texto completo devuelto cuando importen puntuación e indicios y utiliza los campos estructurados de tiempos para navegación. Las capacidades de Pro para grabaciones largas y varios hablantes son distintas del modelo general Transcribe 1 de grabaciones cortas; sus límites y controles no deben tratarse como intercambiables.</p>",
  "aboutText": "Transcribe 1 Pro es el modelo de voz a texto de Fish Audio para clips cortos, conversaciones con varios hablantes y grabaciones largas. Recibe audio grabado y devuelve una transcripción, con tiempos opcionales y turnos de habla estructurados. Sus características distintivas son los cambios de hablante marcados en el texto y los indicios de emoción o eventos vocales, que conservan más estructura conversacional de la grabación que una secuencia simple de palabras.\n\nPara una entrevista, reunión o pódcast, mantén la conversación completa en un archivo para que los hablantes que vuelven a intervenir puedan conservar etiquetas coherentes dentro de la respuesta. Un artefacto útil de revisión es una transcripción vinculada a la grabación original, con turnos mostrados por separado y una marca de tiempo disponible para comprobar una cita. Un resumen o lista de acciones son un paso posterior de la aplicación: mantenlos separados de la transcripción para que la fuente hablada siga disponible para comparación.\n\nEl productor acepta grabaciones de hasta 60 minutos y describe el procesamiento de archivos largos con audio comprimido como MP3, Opus o AAC. Los formatos compatibles incluyen WAV, MP3, AAC en M4A o MP4, FLAC, Ogg con Opus o Vorbis, WebM/Matroska y MOV. Para un archivo de vídeo utiliza la primera pista de audio. AIFF, CAF, WMA, AMR, AC-3 y PCM sin cabecera no son compatibles. Se proporciona un archivo de audio por solicitud; el resultado llega después de transcribir la grabación completa y una grabación larga puede tardar varios minutos. Se rechazan clips de menos de aproximadamente 0,08 segundos.\n\nLa respuesta del productor contiene el texto completo, la duración de la grabación en segundos y un array segments. Pro marca los cambios de hablante dentro del texto con etiquetas como <|speaker:0|> y <|speaker:1|>; una etiqueta se aplica al texto siguiente hasta el próximo marcador. Son identificadores dentro de una respuesta, no nombres ni identidades verificadas que puedan relacionarse entre solicitudes. Si la transcripción no tiene un marcador de hablante, la guía la trata como un resultado de un solo hablante. Conserva cualquier texto anterior al primer marcador dentro del primer turno, en lugar de descartarlo.\n\nLas marcas de tiempo a nivel de palabra son opcionales. En la solicitud al productor, ignore_timestamps tiene true como valor predeterminado; establecerlo en false solicita segmentos con text y tiempos start y end en segundos. Un segmento suele ser una palabra, o un carácter o unos pocos en chino y japonés. El texto de segmento omite puntuación, marcadores de hablante e indicios de eventos y puede normalizar un valor hablado de forma distinta al texto completo de la transcripción. Un segmento de palabra puede tener los mismos tiempos start y end. Un array segments vacío puede significar que no se pidieron marcas de tiempo, que no se encontró habla o que los tiempos no estaban disponibles temporalmente. Utiliza la transcripción completa para una formulación legible y los segmentos para alineación, en lugar de suponer que ambas cadenas coinciden carácter por carácter.\n\nEl ajuste diarize tiene auto como valor predeterminado. Cuando se solicitan marcas de tiempo y diarize no es false, Pro también devuelve speaker_turns. Cada turno contiene su etiqueta de hablante, texto y tiempos start/end, conservando la puntuación y los indicios retenidos sin el marcador de hablante dentro del texto. Si no están disponibles los tiempos de palabras, los tiempos de turno pueden ser aproximados y cubrir la grabación completa; los turnos adyacentes no son necesariamente contiguos ni están necesariamente libres de solapamiento. Desactivar diarize elimina la lista estructurada de turnos, pero deja los marcadores de hablante en el texto completo. Una cantidad conocida de hablantes, o cantidades mínima y máxima, pueden orientar la diarización de grabaciones más largas con el mejor esfuerzo disponible. La cantidad exacta no puede combinarse con sus límites y las indicaciones de cantidad no pueden utilizarse con diarize desactivado.\n\nLos indicios de emoción y eventos vocales aparecen como texto entre corchetes, por ejemplo [laughter], junto al habla reconocida. Son inferencias del audio, no palabras que un usuario deba añadir antes de transcribir. El ajuste tag_audio_events de Pro tiene true como valor predeterminado; desactivarlo elimina estos indicios de la transcripción y del texto de turnos sin cambiar los tiempos. No hay un campo separado de emoción ni una enumeración fija de emociones. Conserva la transcripción anotada cuando importe cómo suena un comentario y utiliza una versión sin indicios cuando el artefacto posterior necesite únicamente las palabras pronunciadas.\n\nEl idioma se detecta automáticamente. Una indicación opcional ISO 639-1 en minúsculas no fuerza traducción ni cambia la transcripción de Pro. Si el idioma no puede determinarse, el código de idioma devuelto puede reflejar la indicación sin verificarla frente al audio. El productor comunica un idioma, en lugar de un inventario de todos los idiomas de una grabación multilingüe. Mantén juntos la formulación original y los metadatos de idioma al preparar un archivo consultable, especialmente cuando distintas partes de una conversación cambien de idioma.\n\nPara subtítulos, agrupa palabras consecutivas con tiempos en entradas legibles SRT o WebVTT, en lugar de producir un subtítulo por palabra. Separa las entradas alrededor de las pausas y elige su longitud y tiempo de visualización según el reproductor y el público. Los límites de turnos de habla pueden mantener a hablantes diferentes en entradas separadas. Comprueba si el resultado de tiempos está vacío y verifica que el final de cada entrada sea posterior a su inicio. El formato de subtítulos, los nombres de etiquetas anónimas de hablante y cualquier resumen posterior son artefactos de la aplicación construidos a partir del resultado de transcripción.\n\nPara un flujo práctico de grabaciones, decide antes de transcribir si necesitas una transcripción simple y legible, turnos conversacionales anotados o subtítulos con tiempos. Mantén el identificador de audio junto al resultado, conserva el texto completo devuelto cuando importen puntuación e indicios y utiliza los campos estructurados de tiempos para navegación. Las capacidades de Pro para grabaciones largas y varios hablantes son distintas del modelo general Transcribe 1 de grabaciones cortas; sus límites y controles no deben tratarse como intercambiables.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "05c78763c33f94e5b77fdc8c87227a73efc44f57726564ff158c12189e4e0a21",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "es",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: Transcribe 1 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Cerrar\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1-pro</code><button type=\"button\" id=\"copy-id\">Copiar ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Secciones de la ficha del modelo\"><button type=\"button\" data-card-jump=\"overview\">Primeros pasos</button><button type=\"button\" data-card-jump=\"methods\">Entradas y métodos</button><button type=\"button\" data-card-jump=\"pricing\">Planes</button><button type=\"button\" data-card-jump=\"examples\">Ejemplos</button><button type=\"button\" data-card-jump=\"results\">Resultados</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Métodos de API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro\">Transcripción</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\">Primeros pasos</h3><p class=\"mdesc-full\">Transcribe 1 Pro convierte grabaciones de hasta 60 minutos en texto con marcadores de hablante y marcas de tiempo opcionales a nivel de palabra. Conserva indicios inferidos de emoción y eventos vocales, facilitando la revisión, búsqueda o preparación de subtítulos para entrevistas, reuniones y pódcast.</p><dl class=\"card-io\" data-card-io><div><dt>Entradas aceptadas</dt><dd>Audio</dd></div><div><dt>Resultados</dt><dd>Texto</dd></div></dl><details class=\"card-about\"><summary>Sobre el modelo</summary><p class=\"note-s\" data-model-method-boundary>Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1 Pro es el modelo de voz a texto de Fish Audio para clips cortos, conversaciones con varios hablantes y grabaciones largas. Recibe audio grabado y devuelve una transcripción, con tiempos opcionales y turnos de habla estructurados. Sus características distintivas son los cambios de hablante marcados en el texto y los indicios de emoción o eventos vocales, que conservan más estructura conversacional de la grabación que una secuencia simple de palabras.</p><p>Para una entrevista, reunión o pódcast, mantén la conversación completa en un archivo para que los hablantes que vuelven a intervenir puedan conservar etiquetas coherentes dentro de la respuesta. Un artefacto útil de revisión es una transcripción vinculada a la grabación original, con turnos mostrados por separado y una marca de tiempo disponible para comprobar una cita. Un resumen o lista de acciones son un paso posterior de la aplicación: mantenlos separados de la transcripción para que la fuente hablada siga disponible para comparación.</p><p>El productor acepta grabaciones de hasta 60 minutos y describe el procesamiento de archivos largos con audio comprimido como MP3, Opus o AAC. Los formatos compatibles incluyen WAV, MP3, AAC en M4A o MP4, FLAC, Ogg con Opus o Vorbis, WebM/Matroska y MOV. Para un archivo de vídeo utiliza la primera pista de audio. AIFF, CAF, WMA, AMR, AC-3 y PCM sin cabecera no son compatibles. Se proporciona un archivo de audio por solicitud; el resultado llega después de transcribir la grabación completa y una grabación larga puede tardar varios minutos. Se rechazan clips de menos de aproximadamente 0,08 segundos.</p><p>La respuesta del productor contiene el texto completo, la duración de la grabación en segundos y un array segments. Pro marca los cambios de hablante dentro del texto con etiquetas como &lt;|speaker:0|&gt; y &lt;|speaker:1|&gt;; una etiqueta se aplica al texto siguiente hasta el próximo marcador. Son identificadores dentro de una respuesta, no nombres ni identidades verificadas que puedan relacionarse entre solicitudes. Si la transcripción no tiene un marcador de hablante, la guía la trata como un resultado de un solo hablante. Conserva cualquier texto anterior al primer marcador dentro del primer turno, en lugar de descartarlo.</p><p>Las marcas de tiempo a nivel de palabra son opcionales. En la solicitud al productor, ignore_timestamps tiene true como valor predeterminado; establecerlo en false solicita segmentos con text y tiempos start y end en segundos. Un segmento suele ser una palabra, o un carácter o unos pocos en chino y japonés. El texto de segmento omite puntuación, marcadores de hablante e indicios de eventos y puede normalizar un valor hablado de forma distinta al texto completo de la transcripción. Un segmento de palabra puede tener los mismos tiempos start y end. Un array segments vacío puede significar que no se pidieron marcas de tiempo, que no se encontró habla o que los tiempos no estaban disponibles temporalmente. Utiliza la transcripción completa para una formulación legible y los segmentos para alineación, en lugar de suponer que ambas cadenas coinciden carácter por carácter.</p><p>El ajuste diarize tiene auto como valor predeterminado. Cuando se solicitan marcas de tiempo y diarize no es false, Pro también devuelve speaker_turns. Cada turno contiene su etiqueta de hablante, texto y tiempos start/end, conservando la puntuación y los indicios retenidos sin el marcador de hablante dentro del texto. Si no están disponibles los tiempos de palabras, los tiempos de turno pueden ser aproximados y cubrir la grabación completa; los turnos adyacentes no son necesariamente contiguos ni están necesariamente libres de solapamiento. Desactivar diarize elimina la lista estructurada de turnos, pero deja los marcadores de hablante en el texto completo. Una cantidad conocida de hablantes, o cantidades mínima y máxima, pueden orientar la diarización de grabaciones más largas con el mejor esfuerzo disponible. La cantidad exacta no puede combinarse con sus límites y las indicaciones de cantidad no pueden utilizarse con diarize desactivado.</p><p>Los indicios de emoción y eventos vocales aparecen como texto entre corchetes, por ejemplo [laughter], junto al habla reconocida. Son inferencias del audio, no palabras que un usuario deba añadir antes de transcribir. El ajuste tag_audio_events de Pro tiene true como valor predeterminado; desactivarlo elimina estos indicios de la transcripción y del texto de turnos sin cambiar los tiempos. No hay un campo separado de emoción ni una enumeración fija de emociones. Conserva la transcripción anotada cuando importe cómo suena un comentario y utiliza una versión sin indicios cuando el artefacto posterior necesite únicamente las palabras pronunciadas.</p><p>El idioma se detecta automáticamente. Una indicación opcional ISO 639-1 en minúsculas no fuerza traducción ni cambia la transcripción de Pro. Si el idioma no puede determinarse, el código de idioma devuelto puede reflejar la indicación sin verificarla frente al audio. El productor comunica un idioma, en lugar de un inventario de todos los idiomas de una grabación multilingüe. Mantén juntos la formulación original y los metadatos de idioma al preparar un archivo consultable, especialmente cuando distintas partes de una conversación cambien de idioma.</p><p>Para subtítulos, agrupa palabras consecutivas con tiempos en entradas legibles SRT o WebVTT, en lugar de producir un subtítulo por palabra. Separa las entradas alrededor de las pausas y elige su longitud y tiempo de visualización según el reproductor y el público. Los límites de turnos de habla pueden mantener a hablantes diferentes en entradas separadas. Comprueba si el resultado de tiempos está vacío y verifica que el final de cada entrada sea posterior a su inicio. El formato de subtítulos, los nombres de etiquetas anónimas de hablante y cualquier resumen posterior son artefactos de la aplicación construidos a partir del resultado de transcripción.</p><p>Para un flujo práctico de grabaciones, decide antes de transcribir si necesitas una transcripción simple y legible, turnos conversacionales anotados o subtítulos con tiempos. Mantén el identificador de audio junto al resultado, conserva el texto completo devuelto cuando importen puntuación e indicios y utiliza los campos estructurados de tiempos para navegación. Las capacidades de Pro para grabaciones largas y varios hablantes son distintas del modelo general Transcribe 1 de grabaciones cortas; sus límites y controles no deben tratarse como intercambiables.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible en Ailoot · entradas y métodos</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Reconocimiento de voz</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Tipos de entrada</dt><dd><code>audio</code></dd></div><div><dt>Tipos de salida</dt><dd><code>text</code></dd></div><div><dt>Formato de salida</dt><dd>json</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>Valores y límites</th><th>Predeterminado</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><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>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>fish-audio/transcribe-1-pro</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Claves exactas: data, format</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input_audio.data</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>base64_string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Máximo de bytes decodificados: 26.214.400</div><div>Base64 estricto: Sí</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input_audio.format</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>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Condiciones: Debe coincidir con el formato detectado al analizar el archivo real</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">response_format</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>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>json</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaciones de materiales de entrada</summary><p class=\"note-s\"><b>speech_to_text</b> · Obligatorio: input_audio.data, input_audio.format</p></details><details class=\"note-s\" data-method-contract><summary>Parámetros del método y ciclo de vida</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parámetro</th><th>Contrato</th></tr></thead><tbody><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>content_type</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>application/json</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>required</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>model, input_audio</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>additional_properties</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>false</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>parameters</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;fish-audio/transcribe-1-pro&quot;]}, {&quot;name&quot;:&quot;input_audio&quot;,&quot;type&quot;:&quot;object&quot;,&quot;required&quot;:true,&quot;exact_keys&quot;:[&quot;data&quot;,&quot;format&quot;],&quot;data&quot;:&quot;base64 estricto de los bytes reales de audio compatible&quot;,&quot;format&quot;:&quot;formato exacto detectado al analizar el archivo; debe coincidir con los bytes reales&quot;}, {&quot;name&quot;:&quot;response_format&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:false,&quot;enum&quot;:[&quot;json&quot;]}</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>max_audio_bytes</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>26214400</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>multipart_for_this_profile</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>false</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>material_types</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>audio</td></tr></tbody></table></div><p>Ciclo de vida: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id real devuelto o registro de la biblioteca multimedia</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Conserva la respuesta completa y los ID originales devueltos.</p><p class=\"note-s\">No vuelvas a enviar nunca una creación de resultado desconocido.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Planes</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.</p><dl data-price-conditions><dt>Modo rápido</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo rápido</span></dd><dt>Modo flex</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo flex</span></dd><dt>Esfuerzo máximo de razonamiento</dt><dd>Sin especificar <span class=\"note-s\">Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifas de Ailoot</h4><h4>Precios por configuración</h4><p class=\"note-s\">Relaciona cada cargo con las condiciones mostradas. Usa una tarifa para cada conjunto de configuraciones alternativas.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuración</th><th>Tabla de tarifas</th><th>Unidad de facturación</th><th>Cargo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>Tarifas base por token</th><td data-cell-label=\"Tabla de tarifas\"><span class=\"card-cell-label\">Tabla de tarifas</span>Tarifa base</td><td data-cell-label=\"Unidad de facturación\"><span class=\"card-cell-label\">Unidad de facturación</span>—</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · Tokens de entrada</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Salida · Tokens de salida</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Lectura de caché</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escritura en caché</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escritura en caché, 1 hora</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>segundo de audio de entrada</th><td data-cell-label=\"Tabla de tarifas\"><span class=\"card-cell-label\">Tabla de tarifas</span>—</td><td data-cell-label=\"Unidad de facturación\"><span class=\"card-cell-label\">Unidad de facturación</span>por segundo de audio de entrada</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · segundo de audio de entrada</span> <b>$0.0002</b> <span class=\"price-unit\">por segundo de audio de entrada</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. <a href=\"/docs/es/billing/reserve/\">Cómo funcionan la reserva y la liquidación →</a></p><div data-declared-reference-pricing><h4>Detalles de la tarifa de referencia</h4><p class=\"note-s\">Las tablas de referencia del modelo no cambian la selección del método, las estimaciones de coste ni los cargos. Los cargos aplicados usan las tarifas del método Ailoot seleccionado.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Fish Audio: Transcribe 1 Pro</summary><h4>Precios por configuración</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuración</th><th>Condiciones de facturación</th><th>Cargo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>Fish Audio: Transcribe 1 Pro · Configuración predeterminada</th><td data-cell-label=\"Condiciones de facturación\"><span class=\"card-cell-label\">Condiciones de facturación</span>Configuración predeterminada</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · Segundos de audio de entrada</span> <b>0,0002 US$</b> <span class=\"price-unit\">por segundo de audio de entrada</span></div></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Solicitudes de ejemplo</h3><h4>Ailoot Ultra · Reconocimiento de voz</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-1362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · bytes de audio reales y formato detectado</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1362-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set your actual audio file}&quot;\n: &quot;${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}&quot;\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;fish-audio/transcribe-1-pro&quot;, &quot;response_format&quot;: &quot;json&quot;}&#39;)\nimport base64\nf=Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;])\nraw=f.read_bytes()\nif not raw or len(raw)&gt;26214400:raise SystemExit(&#39;Use actual audio bytes within 25 MiB&#39;)\nfmt=os.environ[&#39;AILOOT_AUDIO_FORMAT&#39;].strip()\nif not fmt:raise SystemExit(&#39;Use the actual probed format; the server checks it against the bytes&#39;)\np[&#39;input_audio&#39;]={&#39;data&#39;:base64.b64encode(raw).decode(),&#39;format&#39;:fmt}\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recibir y guardar resultados</h3><h4>Ailoot Ultra · Reconocimiento de voz</h4><p class=\"note-s\">json</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Conserva todos los resultados completados</h5><p class=\"note-s\">Conserva todas las respuestas, archivos y partes de contenido completos recibidos.</p><p class=\"note-s\">Conserva el JSON completo, las cabeceras de respuesta, el texto y todos los campos reales de uso devueltos. Usa las identidades reales de tareas y recursos de la respuesta o de la biblioteca bajo tu titularidad; operation_id no es task_id.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si es necesario revisar la respuesta original</h5><p class=\"note-s\">Conserva el operation_id/X-Client-Request-ID original para la conciliación sin volver a enviar la solicitud; no hay una ruta dedicada para consultar periódicamente el audio.</p></div><details class=\"card-about\" data-output-fields><summary>Campos de respuesta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th><th>Significado</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</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Texto transcrito.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>object</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Uso de audio.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">usage.seconds</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>number</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Duración del audio en segundos.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>number</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>Duración del audio en segundos.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>ID de tarea de transcripción; se devuelve junto con asset_url cuando se almacena y publica una transcripción no vacía y se le asigna una URL firmada de contenido.</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td><td data-cell-label=\"Significado\"><span class=\"card-cell-label\">Significado</span>URL firmada del contenido de la transcripción; se devuelve junto con task_id cuando se almacena y publica una transcripción no vacía y se le asigna una URL firmada de contenido.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errores y siguientes pasos</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respuesta</th><th>Condición</th><th>Siguiente paso</th></tr></thead><tbody><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>Campos obligatorios, representación del material o valor del parámetro no válidos</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Corrige los campos indicados antes de una nueva solicitud de creación.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span><code>server_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La respuesta devuelta indica que la operación o el resultado requiere una comprobación</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva el ID original de operación o tarea devuelto, las cabeceras de la solicitud y la respuesta; continúa con las lecturas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modelo</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></span></p><h4>Alias de rutas de métodos</h4><p class=\"note-s\">Usa las rutas de método indicadas arriba.</p><h4>ID de modelo relacionados</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "Campos obligatorios, representación del material o valor del parámetro no válidos",
                "http_status": 400,
                "recovery": "Corrige los campos indicados antes de una nueva solicitud de creación.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La respuesta devuelta indica que la operación o el resultado requiere una comprobación",
                "http_status": null,
                "recovery": "Conserva el ID original de operación o tarea devuelto, las cabeceras de la solicitud y la respuesta; continúa con las lecturas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el operation_id/X-Client-Request-ID original para la conciliación sin volver a enviar la solicitud; no hay una ruta dedicada para consultar periódicamente el audio."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Conserva el JSON completo, las cabeceras de respuesta, el texto y todos los campos reales de uso devueltos. Usa las identidades reales de tareas y recursos de la respuesta o de la biblioteca bajo tu titularidad; operation_id no es task_id.",
              "family": "transcription",
              "fields": [
                {
                  "description": "Texto transcrito.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Uso de audio.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "Duración del audio en segundos.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Duración del audio en segundos.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "ID de tarea de transcripción; se devuelve junto con asset_url cuando se almacena y publica una transcripción no vacía y se le asigna una URL firmada de contenido.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "URL firmada del contenido de la transcripción; se devuelve junto con task_id cuando se almacena y publica una transcripción no vacía y se le asigna una URL firmada de contenido.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "Debe coincidir con el formato detectado al analizar el archivo real",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "Conserva la respuesta completa y los ID originales devueltos.",
            "No vuelvas a enviar nunca una creación de resultado desconocido."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "base64 estricto de los bytes reales de audio compatible",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "formato exacto detectado al analizar el archivo; debe coincidir con los bytes reales",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id real devuelto o registro de la biblioteca multimedia",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/transcribe-1-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "398fe42c249f4d840dace76836284358887c8de362ff07781a57c99d9e8a8fa0",
    "input_html_sha256": "855f2316c652d84047d9c7febde32186fbb55d55c8f606cc927a042f6c25558b",
    "private_audit_sha256": "1b81a3e349cde623f3f4ed4472607218d882b97394bc3f2a41803ee55a23491a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/es/fish-audio-transcribe-1-pro/",
    "description": "Transcribe 1 Pro convierte grabaciones de hasta 60 minutos en texto con marcadores de hablante y marcas de tiempo opcionales a nivel de palabra. Conserva indicios inferidos de emoción y eventos vocales, facilitando la revisión, búsqueda o preparación de subtítulos para entrevistas, reuniones y pódcast.",
    "locale": "es",
    "md_url": "https://ailoot.ai/models/es/fish-audio-transcribe-1-pro/index.md",
    "title": "Fish Audio: Transcribe 1 Pro — Ailoot",
    "url": "https://ailoot.ai/models/es/fish-audio-transcribe-1-pro/"
  },
  "rawModel": {
    "about": "Transcribe 1 Pro es el modelo de voz a texto de Fish Audio para clips cortos, conversaciones con varios hablantes y grabaciones largas. Recibe audio grabado y devuelve una transcripción, con tiempos opcionales y turnos de habla estructurados. Sus características distintivas son los cambios de hablante marcados en el texto y los indicios de emoción o eventos vocales, que conservan más estructura conversacional de la grabación que una secuencia simple de palabras.\n\nPara una entrevista, reunión o pódcast, mantén la conversación completa en un archivo para que los hablantes que vuelven a intervenir puedan conservar etiquetas coherentes dentro de la respuesta. Un artefacto útil de revisión es una transcripción vinculada a la grabación original, con turnos mostrados por separado y una marca de tiempo disponible para comprobar una cita. Un resumen o lista de acciones son un paso posterior de la aplicación: mantenlos separados de la transcripción para que la fuente hablada siga disponible para comparación.\n\nEl productor acepta grabaciones de hasta 60 minutos y describe el procesamiento de archivos largos con audio comprimido como MP3, Opus o AAC. Los formatos compatibles incluyen WAV, MP3, AAC en M4A o MP4, FLAC, Ogg con Opus o Vorbis, WebM/Matroska y MOV. Para un archivo de vídeo utiliza la primera pista de audio. AIFF, CAF, WMA, AMR, AC-3 y PCM sin cabecera no son compatibles. Se proporciona un archivo de audio por solicitud; el resultado llega después de transcribir la grabación completa y una grabación larga puede tardar varios minutos. Se rechazan clips de menos de aproximadamente 0,08 segundos.\n\nLa respuesta del productor contiene el texto completo, la duración de la grabación en segundos y un array segments. Pro marca los cambios de hablante dentro del texto con etiquetas como <|speaker:0|> y <|speaker:1|>; una etiqueta se aplica al texto siguiente hasta el próximo marcador. Son identificadores dentro de una respuesta, no nombres ni identidades verificadas que puedan relacionarse entre solicitudes. Si la transcripción no tiene un marcador de hablante, la guía la trata como un resultado de un solo hablante. Conserva cualquier texto anterior al primer marcador dentro del primer turno, en lugar de descartarlo.\n\nLas marcas de tiempo a nivel de palabra son opcionales. En la solicitud al productor, ignore_timestamps tiene true como valor predeterminado; establecerlo en false solicita segmentos con text y tiempos start y end en segundos. Un segmento suele ser una palabra, o un carácter o unos pocos en chino y japonés. El texto de segmento omite puntuación, marcadores de hablante e indicios de eventos y puede normalizar un valor hablado de forma distinta al texto completo de la transcripción. Un segmento de palabra puede tener los mismos tiempos start y end. Un array segments vacío puede significar que no se pidieron marcas de tiempo, que no se encontró habla o que los tiempos no estaban disponibles temporalmente. Utiliza la transcripción completa para una formulación legible y los segmentos para alineación, en lugar de suponer que ambas cadenas coinciden carácter por carácter.\n\nEl ajuste diarize tiene auto como valor predeterminado. Cuando se solicitan marcas de tiempo y diarize no es false, Pro también devuelve speaker_turns. Cada turno contiene su etiqueta de hablante, texto y tiempos start/end, conservando la puntuación y los indicios retenidos sin el marcador de hablante dentro del texto. Si no están disponibles los tiempos de palabras, los tiempos de turno pueden ser aproximados y cubrir la grabación completa; los turnos adyacentes no son necesariamente contiguos ni están necesariamente libres de solapamiento. Desactivar diarize elimina la lista estructurada de turnos, pero deja los marcadores de hablante en el texto completo. Una cantidad conocida de hablantes, o cantidades mínima y máxima, pueden orientar la diarización de grabaciones más largas con el mejor esfuerzo disponible. La cantidad exacta no puede combinarse con sus límites y las indicaciones de cantidad no pueden utilizarse con diarize desactivado.\n\nLos indicios de emoción y eventos vocales aparecen como texto entre corchetes, por ejemplo [laughter], junto al habla reconocida. Son inferencias del audio, no palabras que un usuario deba añadir antes de transcribir. El ajuste tag_audio_events de Pro tiene true como valor predeterminado; desactivarlo elimina estos indicios de la transcripción y del texto de turnos sin cambiar los tiempos. No hay un campo separado de emoción ni una enumeración fija de emociones. Conserva la transcripción anotada cuando importe cómo suena un comentario y utiliza una versión sin indicios cuando el artefacto posterior necesite únicamente las palabras pronunciadas.\n\nEl idioma se detecta automáticamente. Una indicación opcional ISO 639-1 en minúsculas no fuerza traducción ni cambia la transcripción de Pro. Si el idioma no puede determinarse, el código de idioma devuelto puede reflejar la indicación sin verificarla frente al audio. El productor comunica un idioma, en lugar de un inventario de todos los idiomas de una grabación multilingüe. Mantén juntos la formulación original y los metadatos de idioma al preparar un archivo consultable, especialmente cuando distintas partes de una conversación cambien de idioma.\n\nPara subtítulos, agrupa palabras consecutivas con tiempos en entradas legibles SRT o WebVTT, en lugar de producir un subtítulo por palabra. Separa las entradas alrededor de las pausas y elige su longitud y tiempo de visualización según el reproductor y el público. Los límites de turnos de habla pueden mantener a hablantes diferentes en entradas separadas. Comprueba si el resultado de tiempos está vacío y verifica que el final de cada entrada sea posterior a su inicio. El formato de subtítulos, los nombres de etiquetas anónimas de hablante y cualquier resumen posterior son artefactos de la aplicación construidos a partir del resultado de transcripción.\n\nPara un flujo práctico de grabaciones, decide antes de transcribir si necesitas una transcripción simple y legible, turnos conversacionales anotados o subtítulos con tiempos. Mantén el identificador de audio junto al resultado, conserva el texto completo devuelto cuando importen puntuación e indicios y utiliza los campos estructurados de tiempos para navegación. Las capacidades de Pro para grabaciones largas y varios hablantes son distintas del modelo general Transcribe 1 de grabaciones cortas; sus límites y controles no deben tratarse como intercambiables.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/transcribe-1-pro",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Consulta los precios completos de la configuración en los detalles."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "aeebfac63d7ddd8619fb",
        "label": "Fish Audio: Transcribe 1 Pro",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Configuración predeterminada"
            },
            "label": "Fish Audio: Transcribe 1 Pro · Configuración predeterminada",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "0949942d98ce2e4c35b418d6",
                "label": "Input audio seconds",
                "public_unit_label": "per input audio second",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_audio_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1-pro",
    "input": [
      "audio"
    ],
    "kind": "transcription",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "Campos obligatorios, representación del material o valor del parámetro no válidos",
                "http_status": 400,
                "recovery": "Corrige los campos indicados antes de una nueva solicitud de creación.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La respuesta devuelta indica que la operación o el resultado requiere una comprobación",
                "http_status": null,
                "recovery": "Conserva el ID original de operación o tarea devuelto, las cabeceras de la solicitud y la respuesta; continúa con las lecturas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el operation_id/X-Client-Request-ID original para la conciliación sin volver a enviar la solicitud; no hay una ruta dedicada para consultar periódicamente el audio."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Conserva el JSON completo, las cabeceras de respuesta, el texto y todos los campos reales de uso devueltos. Usa las identidades reales de tareas y recursos de la respuesta o de la biblioteca bajo tu titularidad; operation_id no es task_id.",
              "family": "transcription",
              "fields": [
                {
                  "description": "Texto transcrito.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Uso de audio.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "Duración del audio en segundos.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Duración del audio en segundos.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "ID de tarea de transcripción; se devuelve junto con asset_url cuando se almacena y publica una transcripción no vacía y se le asigna una URL firmada de contenido.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "URL firmada del contenido de la transcripción; se devuelve junto con task_id cuando se almacena y publica una transcripción no vacía y se le asigna una URL firmada de contenido.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "Debe coincidir con el formato detectado al analizar el archivo real",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "Conserva la respuesta completa y los ID originales devueltos.",
            "No vuelvas a enviar nunca una creación de resultado desconocido."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "base64 estricto de los bytes reales de audio compatible",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "formato exacto detectado al analizar el archivo; debe coincidir con los bytes reales",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id real devuelto o registro de la biblioteca multimedia",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/transcribe-1-pro",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_declared_unit",
            "conditions": {},
            "key": "prompt",
            "label": "prompt",
            "quantity": "1",
            "rate_role": "typed_active_maker_rate",
            "side": "in",
            "unit": "input_audio_second"
          }
        ]
      }
    ],
    "public_id": "fish-audio/transcribe-1-pro",
    "short": "Transcribe 1 Pro convierte grabaciones de hasta 60 minutos en texto con marcadores de hablante y marcas de tiempo opcionales a nivel de palabra. Conserva indicios inferidos de emoción y eventos vocales, facilitando la revisión, búsqueda o preparación de subtítulos para entrevistas, reuniones y pódcast."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Transcribe 1 Pro convierte grabaciones de hasta 60 minutos en texto con marcadores de hablante y marcas de tiempo opcionales a nivel de palabra. Conserva indicios inferidos de emoción y eventos vocales, facilitando la revisión, búsqueda o preparación de subtítulos para entrevistas, reuniones y pódcast.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "538b57d70093170cbe8e2419af6b04938d86f5ced16a8290029d8f7c8f5c538d",
    "renderer_sha256": "b6d488b4bdee68568e5b17d2d4871b2ba1885e1032091b635a7a58ad2ca224e7"
  },
  "sourceRevision": "fb3cbe4e66f5144836ffb1f58e4d4b30c64730b0c0d0218949a26e7c7316275e"
}
