{
  "aboutHtml": "<p>Universal-3.5 Pro es el modelo de reconocimiento de voz de AssemblyAI para convertir voz grabada en texto. En su perfil Sync, un clip corto de audio produce una transcripción completa en una respuesta. Esto se adapta a mensajes de voz, entrada de pulsar para hablar y turnos de conversación discretos en los que la aplicación ya sabe cuándo debe terminar la grabación.</p><p>Prepara el audio como un clip acotado. Los requisitos Sync de AssemblyAI aceptan duraciones de 80 milisegundos a 120 segundos, con un tamaño máximo de archivo de 40 MB. Los formatos compatibles son WAV o PCM sin encabezado con signo de 16 bits y orden little-endian. El audio puede ser mono o estéreo, y el estéreo se mezcla internamente a mono. Las frecuencias de muestreo admitidas son 8, 16, 22.05, 24, 32, 44.1 y 48 kHz. Un encabezado WAV proporciona la frecuencia de muestreo y la cantidad de canales; PCM sin encabezado necesita que esos valores se proporcionen por separado en la configuración de transcripción.</p><p>Captura la intervención completa y conserva intactos el inicio y el final del habla. Una tarea original útil es un mensaje corto de voz de soporte de producto que contenga un nombre de producto, un identificador de pedido y una solicitud. Conserva el clip de origen para comprobar la transcripción frente a esos detalles importantes. Para una grabación más larga, prepara un flujo apropiado para transcripción extensa en lugar de tratar el límite de duración de clips cortos como una afirmación de capacidad de audio de todo el modelo.</p><p>El resultado contiene la transcripción completa, una lista de palabras con confianza por palabra y una confianza global entre cero y uno. También proporciona la duración del audio enviado y un identificador de solicitud, lo que permite mantener el texto asociado a su clip original. Usa la confianza por palabra para localizar pasajes que merezcan revisión auditiva, especialmente nombres, números y vocabulario de dominio importantes para la aplicación.</p><p>Las marcas de tiempo por palabra son opcionales y están desactivadas de forma predeterminada. Cuando se solicitan, cada palabra alineada puede incluir su inicio y final en milisegundos respecto al comienzo del clip. El perfil del creador deja ausentes esos valores cuando una palabra no se puede alinear, en lugar de inventar tiempos aproximados. La precisión de las marcas de tiempo es mejor para audio en inglés. Conserva explícitamente los tiempos faltantes al preparar resaltado de palabras, una forma de onda con búsqueda o alineación de subtítulos, y compara el texto con la grabación antes de usarlo como una pista de subtítulos terminada.</p><p>Un prompt contextual describe de qué trata la grabación. Puede indicar un dominio, un escenario o detalles específicos que la aplicación ya conoce, y su longitud máxima es de 6000 caracteres. Comienza con una descripción corta que se ajuste al audio, como una conversación de soporte técnico sobre un dispositivo concreto. El prompt aporta contexto de reconocimiento; no es una solicitud para reescribir el mensaje de quien habla como un documento distinto.</p><p>Una lista separada de términos clave orienta el reconocimiento hacia vocabulario específico. El perfil Sync acepta hasta 100 términos y 8000 caracteres en toda esa lista. Usa la ortografía exacta de nombres inusuales, siglas o términos de producto y deja fuera de la lista las palabras comunes que se reconocen bien. Las listas de términos grandes o innecesarias pueden causar correcciones excesivas, así que enfoca la lista en palabras importantes para la grabación. La descripción contextual y la lista de vocabulario se pueden usar juntas.</p><p>La conversación previa también puede ayudar a interpretar una respuesta corta. Proporciona las intervenciones anteriores en orden cronológico, de la más antigua a la más reciente, mientras que el audio actual sigue siendo el turno que se transcribe. La capacidad de contexto documentada es de 500 turnos o 16,000 caracteres en total. Si supera esos límites o el contexto disponible del modelo, primero se eliminan las entradas más antiguas. Esto resulta útil cuando una respuesta breve contiene un identificador o una referencia cuyo significado procede de la pregunta anterior.</p><p>La selección de idioma orienta el reconocimiento hacia uno o más idiomas esperados. La interfaz Sync actual acepta 32 códigos de idioma y usa inglés de forma predeterminada cuando no se proporciona una selección. Para audio que alterna idiomas, enumera los idiomas esperados. Un prompt contextual personalizado sustituye el predeterminado administrado y anula la orientación separada de códigos de idioma, así que indica los idiomas esperados dentro de ese prompt cuando se necesiten tanto idioma como contexto del escenario. Mantén la transcripción en los idiomas realmente hablados en lugar de tratar la transcripción como una instrucción de traducción.</p><p>El modelo también aparece en otros flujos de transcripción de AssemblyAI, mientras que los requisitos de clips cortos y los campos de resultado del perfil Sync pertenecen a esta interfaz particular. El flujo Dictation del creador añade una etapa separada de limpieza de texto; una transcripción y un mensaje reescrito son recursos distintos. Conserva el habla reconocida si un paso posterior de edición o resumen produce una versión depurada, para que la redacción original siga disponible para comparar.</p><p>Los entregables útiles incluyen un mensaje de voz transcrito, un turno completo para un asistente, texto corto de audio con búsqueda o una lista de palabras con tiempos para una interfaz de revisión. Comprueba las palabras decisivas frente a la grabación, conserva cualquier alineación faltante y mantén el clip vinculado al texto devuelto. El resultado de reconocimiento proporciona al siguiente paso de la aplicación una transcripción respaldada por la fuente; responder la solicitud o editar el mensaje corresponde al flujo que lo rodea.</p>",
  "aboutText": "Universal-3.5 Pro es el modelo de reconocimiento de voz de AssemblyAI para convertir voz grabada en texto. En su perfil Sync, un clip corto de audio produce una transcripción completa en una respuesta. Esto se adapta a mensajes de voz, entrada de pulsar para hablar y turnos de conversación discretos en los que la aplicación ya sabe cuándo debe terminar la grabación.\n\nPrepara el audio como un clip acotado. Los requisitos Sync de AssemblyAI aceptan duraciones de 80 milisegundos a 120 segundos, con un tamaño máximo de archivo de 40 MB. Los formatos compatibles son WAV o PCM sin encabezado con signo de 16 bits y orden little-endian. El audio puede ser mono o estéreo, y el estéreo se mezcla internamente a mono. Las frecuencias de muestreo admitidas son 8, 16, 22.05, 24, 32, 44.1 y 48 kHz. Un encabezado WAV proporciona la frecuencia de muestreo y la cantidad de canales; PCM sin encabezado necesita que esos valores se proporcionen por separado en la configuración de transcripción.\n\nCaptura la intervención completa y conserva intactos el inicio y el final del habla. Una tarea original útil es un mensaje corto de voz de soporte de producto que contenga un nombre de producto, un identificador de pedido y una solicitud. Conserva el clip de origen para comprobar la transcripción frente a esos detalles importantes. Para una grabación más larga, prepara un flujo apropiado para transcripción extensa en lugar de tratar el límite de duración de clips cortos como una afirmación de capacidad de audio de todo el modelo.\n\nEl resultado contiene la transcripción completa, una lista de palabras con confianza por palabra y una confianza global entre cero y uno. También proporciona la duración del audio enviado y un identificador de solicitud, lo que permite mantener el texto asociado a su clip original. Usa la confianza por palabra para localizar pasajes que merezcan revisión auditiva, especialmente nombres, números y vocabulario de dominio importantes para la aplicación.\n\nLas marcas de tiempo por palabra son opcionales y están desactivadas de forma predeterminada. Cuando se solicitan, cada palabra alineada puede incluir su inicio y final en milisegundos respecto al comienzo del clip. El perfil del creador deja ausentes esos valores cuando una palabra no se puede alinear, en lugar de inventar tiempos aproximados. La precisión de las marcas de tiempo es mejor para audio en inglés. Conserva explícitamente los tiempos faltantes al preparar resaltado de palabras, una forma de onda con búsqueda o alineación de subtítulos, y compara el texto con la grabación antes de usarlo como una pista de subtítulos terminada.\n\nUn prompt contextual describe de qué trata la grabación. Puede indicar un dominio, un escenario o detalles específicos que la aplicación ya conoce, y su longitud máxima es de 6000 caracteres. Comienza con una descripción corta que se ajuste al audio, como una conversación de soporte técnico sobre un dispositivo concreto. El prompt aporta contexto de reconocimiento; no es una solicitud para reescribir el mensaje de quien habla como un documento distinto.\n\nUna lista separada de términos clave orienta el reconocimiento hacia vocabulario específico. El perfil Sync acepta hasta 100 términos y 8000 caracteres en toda esa lista. Usa la ortografía exacta de nombres inusuales, siglas o términos de producto y deja fuera de la lista las palabras comunes que se reconocen bien. Las listas de términos grandes o innecesarias pueden causar correcciones excesivas, así que enfoca la lista en palabras importantes para la grabación. La descripción contextual y la lista de vocabulario se pueden usar juntas.\n\nLa conversación previa también puede ayudar a interpretar una respuesta corta. Proporciona las intervenciones anteriores en orden cronológico, de la más antigua a la más reciente, mientras que el audio actual sigue siendo el turno que se transcribe. La capacidad de contexto documentada es de 500 turnos o 16,000 caracteres en total. Si supera esos límites o el contexto disponible del modelo, primero se eliminan las entradas más antiguas. Esto resulta útil cuando una respuesta breve contiene un identificador o una referencia cuyo significado procede de la pregunta anterior.\n\nLa selección de idioma orienta el reconocimiento hacia uno o más idiomas esperados. La interfaz Sync actual acepta 32 códigos de idioma y usa inglés de forma predeterminada cuando no se proporciona una selección. Para audio que alterna idiomas, enumera los idiomas esperados. Un prompt contextual personalizado sustituye el predeterminado administrado y anula la orientación separada de códigos de idioma, así que indica los idiomas esperados dentro de ese prompt cuando se necesiten tanto idioma como contexto del escenario. Mantén la transcripción en los idiomas realmente hablados en lugar de tratar la transcripción como una instrucción de traducción.\n\nEl modelo también aparece en otros flujos de transcripción de AssemblyAI, mientras que los requisitos de clips cortos y los campos de resultado del perfil Sync pertenecen a esta interfaz particular. El flujo Dictation del creador añade una etapa separada de limpieza de texto; una transcripción y un mensaje reescrito son recursos distintos. Conserva el habla reconocida si un paso posterior de edición o resumen produce una versión depurada, para que la redacción original siga disponible para comparar.\n\nLos entregables útiles incluyen un mensaje de voz transcrito, un turno completo para un asistente, texto corto de audio con búsqueda o una lista de palabras con tiempos para una interfaz de revisión. Comprueba las palabras decisivas frente a la grabación, conserva cualquier alineación faltante y mantén el clip vinculado al texto devuelto. El resultado de reconocimiento proporciona al siguiente paso de la aplicación una transcripción respaldada por la fuente; responder la solicitud o editar el mensaje corresponde al flujo que lo rodea.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f52af7ce6283c3ce7489d6b0d3b1387398b39f0eb49aa7193e50e33a951c43da",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "es-mx",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">AssemblyAI: Universal-3.5 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Cerrar\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-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\">Inicio</button><button type=\"button\" data-card-jump=\"methods\">Entradas y métodos</button><button type=\"button\" data-card-jump=\"pricing\">Tarifas</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|assemblyai%2Funiversal-3-5-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\">Inicio</h3><p class=\"mdesc-full\">Universal-3.5 Pro es el modelo de voz a texto de AssemblyAI para convertir un clip corto de audio en una transcripción completa en una respuesta. Su perfil Sync añade confianza por palabra, marcas de tiempo opcionales por palabra, pistas de vocabulario y contexto de conversación previa para entrada de voz y flujos de pulsar para hablar.</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>Universal-3.5 Pro es el modelo de reconocimiento de voz de AssemblyAI para convertir voz grabada en texto. En su perfil Sync, un clip corto de audio produce una transcripción completa en una respuesta. Esto se adapta a mensajes de voz, entrada de pulsar para hablar y turnos de conversación discretos en los que la aplicación ya sabe cuándo debe terminar la grabación.</p><p>Prepara el audio como un clip acotado. Los requisitos Sync de AssemblyAI aceptan duraciones de 80 milisegundos a 120 segundos, con un tamaño máximo de archivo de 40 MB. Los formatos compatibles son WAV o PCM sin encabezado con signo de 16 bits y orden little-endian. El audio puede ser mono o estéreo, y el estéreo se mezcla internamente a mono. Las frecuencias de muestreo admitidas son 8, 16, 22.05, 24, 32, 44.1 y 48 kHz. Un encabezado WAV proporciona la frecuencia de muestreo y la cantidad de canales; PCM sin encabezado necesita que esos valores se proporcionen por separado en la configuración de transcripción.</p><p>Captura la intervención completa y conserva intactos el inicio y el final del habla. Una tarea original útil es un mensaje corto de voz de soporte de producto que contenga un nombre de producto, un identificador de pedido y una solicitud. Conserva el clip de origen para comprobar la transcripción frente a esos detalles importantes. Para una grabación más larga, prepara un flujo apropiado para transcripción extensa en lugar de tratar el límite de duración de clips cortos como una afirmación de capacidad de audio de todo el modelo.</p><p>El resultado contiene la transcripción completa, una lista de palabras con confianza por palabra y una confianza global entre cero y uno. También proporciona la duración del audio enviado y un identificador de solicitud, lo que permite mantener el texto asociado a su clip original. Usa la confianza por palabra para localizar pasajes que merezcan revisión auditiva, especialmente nombres, números y vocabulario de dominio importantes para la aplicación.</p><p>Las marcas de tiempo por palabra son opcionales y están desactivadas de forma predeterminada. Cuando se solicitan, cada palabra alineada puede incluir su inicio y final en milisegundos respecto al comienzo del clip. El perfil del creador deja ausentes esos valores cuando una palabra no se puede alinear, en lugar de inventar tiempos aproximados. La precisión de las marcas de tiempo es mejor para audio en inglés. Conserva explícitamente los tiempos faltantes al preparar resaltado de palabras, una forma de onda con búsqueda o alineación de subtítulos, y compara el texto con la grabación antes de usarlo como una pista de subtítulos terminada.</p><p>Un prompt contextual describe de qué trata la grabación. Puede indicar un dominio, un escenario o detalles específicos que la aplicación ya conoce, y su longitud máxima es de 6000 caracteres. Comienza con una descripción corta que se ajuste al audio, como una conversación de soporte técnico sobre un dispositivo concreto. El prompt aporta contexto de reconocimiento; no es una solicitud para reescribir el mensaje de quien habla como un documento distinto.</p><p>Una lista separada de términos clave orienta el reconocimiento hacia vocabulario específico. El perfil Sync acepta hasta 100 términos y 8000 caracteres en toda esa lista. Usa la ortografía exacta de nombres inusuales, siglas o términos de producto y deja fuera de la lista las palabras comunes que se reconocen bien. Las listas de términos grandes o innecesarias pueden causar correcciones excesivas, así que enfoca la lista en palabras importantes para la grabación. La descripción contextual y la lista de vocabulario se pueden usar juntas.</p><p>La conversación previa también puede ayudar a interpretar una respuesta corta. Proporciona las intervenciones anteriores en orden cronológico, de la más antigua a la más reciente, mientras que el audio actual sigue siendo el turno que se transcribe. La capacidad de contexto documentada es de 500 turnos o 16,000 caracteres en total. Si supera esos límites o el contexto disponible del modelo, primero se eliminan las entradas más antiguas. Esto resulta útil cuando una respuesta breve contiene un identificador o una referencia cuyo significado procede de la pregunta anterior.</p><p>La selección de idioma orienta el reconocimiento hacia uno o más idiomas esperados. La interfaz Sync actual acepta 32 códigos de idioma y usa inglés de forma predeterminada cuando no se proporciona una selección. Para audio que alterna idiomas, enumera los idiomas esperados. Un prompt contextual personalizado sustituye el predeterminado administrado y anula la orientación separada de códigos de idioma, así que indica los idiomas esperados dentro de ese prompt cuando se necesiten tanto idioma como contexto del escenario. Mantén la transcripción en los idiomas realmente hablados en lugar de tratar la transcripción como una instrucción de traducción.</p><p>El modelo también aparece en otros flujos de transcripción de AssemblyAI, mientras que los requisitos de clips cortos y los campos de resultado del perfil Sync pertenecen a esta interfaz particular. El flujo Dictation del creador añade una etapa separada de limpieza de texto; una transcripción y un mensaje reescrito son recursos distintos. Conserva el habla reconocida si un paso posterior de edición o resumen produce una versión depurada, para que la redacción original siga disponible para comparar.</p><p>Los entregables útiles incluyen un mensaje de voz transcrito, un turno completo para un asistente, texto corto de audio con búsqueda o una lista de palabras con tiempos para una interfaz de revisión. Comprueba las palabras decisivas frente a la grabación, conserva cualquier alineación faltante y mantén el clip vinculado al texto devuelto. El resultado de reconocimiento proporciona al siguiente paso de la aplicación una transcripción respaldada por la fuente; responder la solicitud o editar el mensaje corresponde al flujo que lo rodea.</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 · Transcripción</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Entrada</dt><dd><code>audio</code></dd></div><div><dt>Salida</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valores y límites</th><th>Predeterminado</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>assemblyai/universal-3-5-pro</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr></tbody></table></div><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>material_types</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>audio</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>material_conditions</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>El ejemplo lee tu archivo PCM WAV real y no vacío, codifica todos sus bytes en base64 y envía input_audio.format con el valor wav.</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 exacto de un registro multimedia existente que te pertenece</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifas</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 fast</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo fast</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 usa el ajuste 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.00025</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 monto 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-mx/billing/reserve/\">Cómo funcionan la reserva y la liquidación →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Solicitudes de ejemplo</h3><h4>Ailoot Ultra · Transcripción</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-1073-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1073-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · archivo WAV real y resultado original completo</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-1073-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1073-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;assemblyai/universal-3-5-pro&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recibir y guardar resultados</h3><h4>Ailoot Ultra · Transcripción</h4><p class=\"note-s\">Cuerpo completo de la respuesta original, estado y encabezados reenviados. Este manejador no agrega una estructura JSON universal, un campo de texto ni una estructura contenedora de tareas.</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 la respuesta completa y los encabezados, todas las salidas reales, los identificadores originales devueltos y todos los campos de uso. Recupera la operación original sin volver a enviar la solicitud de creación.</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 X-Client-Request-ID real y la respuesta completa. Consulta los recursos originales que te pertenecen y sus URL exactas de contenido firmadas; nunca vuelvas a enviar una creación incierta.</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></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>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>El cuerpo JSON o el ID canónico explícito del modelo no son válidos.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva la respuesta y corrige el campo indicado de la solicitud.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La clave API de Ailoot no es válida.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Usa tu clave API autorizada de Ailoot.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>403 · <code>permission_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El grupo de la clave no admite este método.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva los detalles del error devueltos.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El método seleccionado no tiene una ruta admitida.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva los detalles del error devueltos.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La tarifa aceptada no puede obtener la cantidad de entrada o el límite que requiere.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva la respuesta; usa la representación de entrada que requiere la tarifa aceptada.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>503 · <code></code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El almacenamiento requerido, la ruta, el precio del método o la reserva de fondos no están disponibles.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva la respuesta original completa. Una reserva incierta no autoriza un reenvío.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>502 · <code>server_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El resultado original, el uso o la liquidación del cargo requieren verificación.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva el ID real de solicitud y la respuesta original. Consulta el registro existente que te pertenece; no vuelvas a enviar la 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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "assemblyai/universal-3-5-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "El cuerpo JSON o el ID canónico explícito del modelo no son válidos.",
                "http_status": 400,
                "recovery": "Conserva la respuesta y corrige el campo indicado de la solicitud.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clave API de Ailoot no es válida.",
                "http_status": 401,
                "recovery": "Usa tu clave API autorizada de Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "El grupo de la clave no admite este método.",
                "http_status": 403,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "El método seleccionado no tiene una ruta admitida.",
                "http_status": 404,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "La tarifa aceptada no puede obtener la cantidad de entrada o el límite que requiere.",
                "http_status": 422,
                "recovery": "Conserva la respuesta; usa la representación de entrada que requiere la tarifa aceptada.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "El almacenamiento requerido, la ruta, el precio del método o la reserva de fondos no están disponibles.",
                "http_status": 503,
                "recovery": "Conserva la respuesta original completa. Una reserva incierta no autoriza un reenvío.",
                "type": null
              },
              {
                "code": null,
                "condition": "El resultado original, el uso o la liquidación del cargo requieren verificación.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conserva el ID real de solicitud y la respuesta original. Consulta el registro existente que te pertenece; no vuelvas a enviar la creación.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el X-Client-Request-ID real y la respuesta completa. Consulta los recursos originales que te pertenecen y sus URL exactas de contenido firmadas; nunca vuelvas a enviar una creación incierta."
            },
            "outputs": {
              "all_results": "Conserva la respuesta completa y los encabezados, todas las salidas reales, los identificadores originales devueltos y todos los campos de uso. Recupera la operación original sin volver a enviar la solicitud de creación.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Cuerpo completo de la respuesta original, estado y encabezados reenviados. Este manejador no agrega una estructura JSON universal, un campo de texto ni una estructura contenedora de tareas."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "assemblyai/universal-3-5-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "assemblyai/universal-3-5-pro"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "El ejemplo lee tu archivo PCM WAV real y no vacío, codifica todos sus bytes en base64 y envía input_audio.format con el valor wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id exacto de un registro multimedia existente que te pertenece",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00025",
                "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.00025",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'assemblyai/universal-3-5-pro', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Transcripción",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "907c49eb733950459d39b4cb9b70ef58dea3ebfc876a4483c9e4bd8b044d54bd",
    "input_html_sha256": "5bd88a60a6758a28b4265537f1ed7000529c7b5649e645a32bab1848d76d7528",
    "private_audit_sha256": "f3e368669f6973ff1ff2b6d9c9d7529ff6d122b22945efa61f53893745033615",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/es-mx/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro es el modelo de voz a texto de AssemblyAI para convertir un clip corto de audio en una transcripción completa en una respuesta. Su perfil Sync añade confianza por palabra, marcas de tiempo opcionales por palabra, pistas de vocabulario y contexto de conversación previa para entrada de voz y flujos de pulsar para hablar.",
    "locale": "es-mx",
    "md_url": "https://ailoot.ai/models/es-mx/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/es-mx/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro es el modelo de reconocimiento de voz de AssemblyAI para convertir voz grabada en texto. En su perfil Sync, un clip corto de audio produce una transcripción completa en una respuesta. Esto se adapta a mensajes de voz, entrada de pulsar para hablar y turnos de conversación discretos en los que la aplicación ya sabe cuándo debe terminar la grabación.\n\nPrepara el audio como un clip acotado. Los requisitos Sync de AssemblyAI aceptan duraciones de 80 milisegundos a 120 segundos, con un tamaño máximo de archivo de 40 MB. Los formatos compatibles son WAV o PCM sin encabezado con signo de 16 bits y orden little-endian. El audio puede ser mono o estéreo, y el estéreo se mezcla internamente a mono. Las frecuencias de muestreo admitidas son 8, 16, 22.05, 24, 32, 44.1 y 48 kHz. Un encabezado WAV proporciona la frecuencia de muestreo y la cantidad de canales; PCM sin encabezado necesita que esos valores se proporcionen por separado en la configuración de transcripción.\n\nCaptura la intervención completa y conserva intactos el inicio y el final del habla. Una tarea original útil es un mensaje corto de voz de soporte de producto que contenga un nombre de producto, un identificador de pedido y una solicitud. Conserva el clip de origen para comprobar la transcripción frente a esos detalles importantes. Para una grabación más larga, prepara un flujo apropiado para transcripción extensa en lugar de tratar el límite de duración de clips cortos como una afirmación de capacidad de audio de todo el modelo.\n\nEl resultado contiene la transcripción completa, una lista de palabras con confianza por palabra y una confianza global entre cero y uno. También proporciona la duración del audio enviado y un identificador de solicitud, lo que permite mantener el texto asociado a su clip original. Usa la confianza por palabra para localizar pasajes que merezcan revisión auditiva, especialmente nombres, números y vocabulario de dominio importantes para la aplicación.\n\nLas marcas de tiempo por palabra son opcionales y están desactivadas de forma predeterminada. Cuando se solicitan, cada palabra alineada puede incluir su inicio y final en milisegundos respecto al comienzo del clip. El perfil del creador deja ausentes esos valores cuando una palabra no se puede alinear, en lugar de inventar tiempos aproximados. La precisión de las marcas de tiempo es mejor para audio en inglés. Conserva explícitamente los tiempos faltantes al preparar resaltado de palabras, una forma de onda con búsqueda o alineación de subtítulos, y compara el texto con la grabación antes de usarlo como una pista de subtítulos terminada.\n\nUn prompt contextual describe de qué trata la grabación. Puede indicar un dominio, un escenario o detalles específicos que la aplicación ya conoce, y su longitud máxima es de 6000 caracteres. Comienza con una descripción corta que se ajuste al audio, como una conversación de soporte técnico sobre un dispositivo concreto. El prompt aporta contexto de reconocimiento; no es una solicitud para reescribir el mensaje de quien habla como un documento distinto.\n\nUna lista separada de términos clave orienta el reconocimiento hacia vocabulario específico. El perfil Sync acepta hasta 100 términos y 8000 caracteres en toda esa lista. Usa la ortografía exacta de nombres inusuales, siglas o términos de producto y deja fuera de la lista las palabras comunes que se reconocen bien. Las listas de términos grandes o innecesarias pueden causar correcciones excesivas, así que enfoca la lista en palabras importantes para la grabación. La descripción contextual y la lista de vocabulario se pueden usar juntas.\n\nLa conversación previa también puede ayudar a interpretar una respuesta corta. Proporciona las intervenciones anteriores en orden cronológico, de la más antigua a la más reciente, mientras que el audio actual sigue siendo el turno que se transcribe. La capacidad de contexto documentada es de 500 turnos o 16,000 caracteres en total. Si supera esos límites o el contexto disponible del modelo, primero se eliminan las entradas más antiguas. Esto resulta útil cuando una respuesta breve contiene un identificador o una referencia cuyo significado procede de la pregunta anterior.\n\nLa selección de idioma orienta el reconocimiento hacia uno o más idiomas esperados. La interfaz Sync actual acepta 32 códigos de idioma y usa inglés de forma predeterminada cuando no se proporciona una selección. Para audio que alterna idiomas, enumera los idiomas esperados. Un prompt contextual personalizado sustituye el predeterminado administrado y anula la orientación separada de códigos de idioma, así que indica los idiomas esperados dentro de ese prompt cuando se necesiten tanto idioma como contexto del escenario. Mantén la transcripción en los idiomas realmente hablados en lugar de tratar la transcripción como una instrucción de traducción.\n\nEl modelo también aparece en otros flujos de transcripción de AssemblyAI, mientras que los requisitos de clips cortos y los campos de resultado del perfil Sync pertenecen a esta interfaz particular. El flujo Dictation del creador añade una etapa separada de limpieza de texto; una transcripción y un mensaje reescrito son recursos distintos. Conserva el habla reconocida si un paso posterior de edición o resumen produce una versión depurada, para que la redacción original siga disponible para comparar.\n\nLos entregables útiles incluyen un mensaje de voz transcrito, un turno completo para un asistente, texto corto de audio con búsqueda o una lista de palabras con tiempos para una interfaz de revisión. Comprueba las palabras decisivas frente a la grabación, conserva cualquier alineación faltante y mantén el clip vinculado al texto devuelto. El resultado de reconocimiento proporciona al siguiente paso de la aplicación una transcripción respaldada por la fuente; responder la solicitud o editar el mensaje corresponde al flujo que lo rodea.",
    "alias_of": null,
    "aliases": [],
    "author": "AssemblyAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00025",
            "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.00025",
            "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,
    "formats": [
      "transcriptions"
    ],
    "id": "assemblyai/universal-3-5-pro",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "El cuerpo JSON o el ID canónico explícito del modelo no son válidos.",
                "http_status": 400,
                "recovery": "Conserva la respuesta y corrige el campo indicado de la solicitud.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clave API de Ailoot no es válida.",
                "http_status": 401,
                "recovery": "Usa tu clave API autorizada de Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "El grupo de la clave no admite este método.",
                "http_status": 403,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "El método seleccionado no tiene una ruta admitida.",
                "http_status": 404,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "La tarifa aceptada no puede obtener la cantidad de entrada o el límite que requiere.",
                "http_status": 422,
                "recovery": "Conserva la respuesta; usa la representación de entrada que requiere la tarifa aceptada.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "El almacenamiento requerido, la ruta, el precio del método o la reserva de fondos no están disponibles.",
                "http_status": 503,
                "recovery": "Conserva la respuesta original completa. Una reserva incierta no autoriza un reenvío.",
                "type": null
              },
              {
                "code": null,
                "condition": "El resultado original, el uso o la liquidación del cargo requieren verificación.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conserva el ID real de solicitud y la respuesta original. Consulta el registro existente que te pertenece; no vuelvas a enviar la creación.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el X-Client-Request-ID real y la respuesta completa. Consulta los recursos originales que te pertenecen y sus URL exactas de contenido firmadas; nunca vuelvas a enviar una creación incierta."
            },
            "outputs": {
              "all_results": "Conserva la respuesta completa y los encabezados, todas las salidas reales, los identificadores originales devueltos y todos los campos de uso. Recupera la operación original sin volver a enviar la solicitud de creación.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Cuerpo completo de la respuesta original, estado y encabezados reenviados. Este manejador no agrega una estructura JSON universal, un campo de texto ni una estructura contenedora de tareas."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "assemblyai/universal-3-5-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "assemblyai/universal-3-5-pro"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "El ejemplo lee tu archivo PCM WAV real y no vacío, codifica todos sus bytes en base64 y envía input_audio.format con el valor wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id exacto de un registro multimedia existente que te pertenece",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00025",
                "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.00025",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'assemblyai/universal-3-5-pro', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Transcripción",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "AssemblyAI: Universal-3.5 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Universal-3.5 Pro es el modelo de voz a texto de AssemblyAI para convertir un clip corto de audio en una transcripción completa en una respuesta. Su perfil Sync añade confianza por palabra, marcas de tiempo opcionales por palabra, pistas de vocabulario y contexto de conversación previa para entrada de voz y flujos de pulsar para hablar."
  },
  "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": "Universal-3.5 Pro es el modelo de voz a texto de AssemblyAI para convertir un clip corto de audio en una transcripción completa en una respuesta. Su perfil Sync añade confianza por palabra, marcas de tiempo opcionales por palabra, pistas de vocabulario y contexto de conversación previa para entrada de voz y flujos de pulsar para hablar.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6f1b39c4a8a1d9ed6acb564ab6f840b24f93ba5cd9b4eaa59bf5eebcddca2192",
    "renderer_sha256": "50c5984577eac7205687c05e1c36de5d3ba7a0afdff02194efad3a88143581e8"
  },
  "sourceRevision": "db68d97a3cfac4f98f8f23a7129c6ab24520cdff47a4600a71027ec16c27e530"
}
