Kubeey
    Conoce a Kubeey, tu agente creativo con IA
    Pruébalo ya

    Herramientas de medios

    Genera imágenes y vídeos con más de 40 modelos de IA. Llama siempre primero a get_models para ver modelos disponibles, costes y si un modelo necesita imagen de entrada.

    Clientes HTTP REST: los mismos límites están documentados en Requisitos por modelo (API REST) (y devueltos por modelo desde GET /v1/models).

    #generate_media

    Inicia una generación de imagen o vídeo.

    Parámetros:

    ParámetroTipoObligatorioDescripción
    promptstringQué generar (p. ej. «Un coche rojo en una carretera de montaña»).
    modelstringID de modelo (desde get_models). Ejemplos: nano-banana, kling-2-6-image-to-video.
    generation_typestringNotext-to-image, text-to-video, image-to-video o image-to-image. Predeterminado: text-to-image.
    negative_promptstringNoQué evitar en la salida.
    source_media_urlsstring o arrayNoObligatorio para imagen a vídeo e imagen a imagen. URL(s) de imagen(es), o para algunos modelos (p. ej. Kling 2.6 Motion) imagen + vídeo. Ver límites de entrada abajo. Omite en texto a imagen y texto a vídeo.
    aspect_ratiostringNop. ej. 1:1, 16:9, 9:16, 4:5, 21:9. Predeterminado: 1:1. Nota: cada modelo solo acepta un subconjunto — get_models devuelve la lista permitida.
    durationstringNoDuración del vídeo. Solo ciertos modelos de vídeo la usan. Ver abajo.
    qualitystringNop. ej. fast, standard, pro, ultra. Predeterminado: standard.
    resolutionstringNoNivel de resolución de salida. Solo ciertos modelos de imagen lo usangpt-image-2 (1K/2K/4K), nano-banana-pro/nano-banana-2 (1K/2K/4K), flux-2 (1K/2K). Cada nivel es un SKU de precio independiente; get_models devuelve el coste en créditos por nivel. Se ignora en modelos donde la resolución está codificada en el model_id de la variante (Seedance, Kling, P-Video). Ver la tabla Niveles de resolución más abajo para las restricciones por modelo.
    soundbooleanNoCon true, solicita vídeo con audio generado. Solo ciertos modelos de vídeo. Predeterminado: false. Ver abajo.
    seednumberNoSemilla para resultados reproducibles.

    Ejemplo (texto a imagen):

    {
      "prompt": "Ciudad futurista al atardecer con coches voladores",
      "model": "nano-banana",
      "generation_type": "text-to-image",
      "aspect_ratio": "16:9",
      "quality": "pro"
    }
    

    Ejemplo (imagen a vídeo, se requiere una imagen):

    {
      "prompt": "Movimiento suave y sutil",
      "model": "kling-2-6-image-to-video",
      "generation_type": "image-to-video",
      "source_media_urls": ["https://example.com/your-image.jpg"],
      "aspect_ratio": "16:9",
      "duration": "5s"
    }
    

    Respuesta: Incluye generation_id, status (p. ej. pending), y a menudo estimated_time_seconds y estimated_cost_credits. Consulta con get_generation_status hasta que el estado sea completed o failed.

    Modelos que admiten duration:

    Modelo(s)Valores admitidosNotas
    kling-2-6-text-to-video, kling-2-6-image-to-video5s, 10sOpcional con/sin audio (variante del modelo).
    wan-2-5 (texto a vídeo, imagen a vídeo)5s, 10s
    wan-2-7-720p, wan-2-7-1080p (texto a vídeo, imagen a vídeo)2s15s (entero, por segundo)Precio POR SEGUNDO; la resolución va codificada en el model_id. Pasa duration (2–15) + generation_type.
    v1-pro-fast-i2v5s, 10s
    seedance-1-5-pro4s, 8s, 12sAdmite texto a vídeo (0–1 imagen opcional) e imagen a vídeo (2 imágenes obligatorias).
    seedance-2 (Standard) / seedance-2-fast (Fast)Entero 4s15sByteDance Seedance 2. El nivel es la familia de modelo en sí — usa seedance-2-fast para el nivel económico y rápido, seedance-2 para el de mayor calidad. Cada familia expone model_ids concretos por resolución y combinación con vídeo de referencia (p. ej. seedance-2-fast-480p, seedance-2-480p-video-ref). Pasa el id de variante completo a generate_media; una etiqueta de familia sola devuelve un error variant_required con las opciones. Admite referencias multimodales en texto a vídeo (hasta 9 imágenes + 3 vídeos + 3 audios). Facturación con vídeo de referencia: credits = (ref_s + output_s) × rate/s.
    gemini-omni-video (Google)4, 6, 8, 10 (incluidos en el id de variante)Solo duraciones discretas — el parámetro duration se ignora; la resolución también va en el id de variante (gemini-omni-video-720p-6s, gemini-omni-video-1080p-6s, gemini-omni-video-4k-10s, etc.). Tres variantes video-ref (gemini-omni-video-720p-video-ref, gemini-omni-video-1080p-video-ref, gemini-omni-video-4k-video-ref) toman la duración del clip fuente recortado (≤ 10s). Pasar la etiqueta de familia gemini-omni-video devuelve un error variant_required con las 15 opciones.
    grok-text-to-video-6sFijo 6sSe ignora el parámetro duration.
    kling-3-0-std, kling-3-0-pro3s15sModo toma única. Máx. 2500 caracteres; admite referencias @element_name.
    kling-3-0-turbo-720p, kling-3-0-turbo-1080p (texto a vídeo, imagen a vídeo)3s15s (entero, por segundo)Hermano más rápido y simple de Kling 3.0. Precio POR SEGUNDO; la resolución va codificada en el model_id. Pasa duration (3–15) + generation_type. Incluye audio sincronizado (siempre activo); sin multitoma, sin @elementos.
    grok-image-to-video, kling-2-5-image-to-video-pro, veo3-1No configurableLa duración no se define con este parámetro.

    En modelos solo imagen, duration se ignora.

    Modelos que admiten negative_prompt:

    Modelo(s)Notas
    imagen-4, imagen-4-fast, imagen-4-ultraTexto a imagen.
    wan-2-5 (texto a vídeo, imagen a vídeo)
    wan-2-7-720p, wan-2-7-1080p (texto a vídeo, imagen a vídeo)Hasta 500 caracteres.
    kling-2-5-image-to-video-pro

    El resto de modelos ignoran negative_prompt.

    Modelos que admiten quality (o equivalente):

    Modelo(s)Cómo funcionaValores
    Variantes imagen-4Mapeado a model_variant.standard, fast, ultra (usa quality: standard / fast / ultra).
    seedream-v4, seedream-v4-editResolución mediante parámetro quality.1K (predeterminado), 2K, 4K.
    seedream-v4-5, seedream-v4-5-editUsa quality directamente.basic (2K, predeterminado), high (4K).
    5-lite-text-to-image, 5-lite-image-to-imageUsa quality directamente.basic (2K, predeterminado), high (4K).
    veo3-1 vs veo3-1-fastDistintos IDs de modelo, no un único parámetro quality.Usa modelo veo3-1 (calidad) o veo3-1-fast (velocidad).
    flux-2, nano-banana-pro, nano-banana-2Resolución (1K/2K/4K), no un string genérico «quality».Pasa mediante el parámetro dedicado resolution — ver abajo.
    gpt-image-2 (t2i + i2i)Resolución mediante el parámetro resolution.Ver Niveles de resolución abajo.

    En otros modelos, quality se ignora.

    <a id="niveles-resolucion"></a>

    Niveles de resolución (parámetro resolution):

    ModeloValoresPrecioRestricción
    gpt-image-2 (t2i + i2i)1K (predeterminado), 2K, 4K11 / 15 / 21 créditos2K y 4K requieren un aspect_ratio explícito, no cuadrado y no auto — uno de 9:16, 16:9, 4:3, 3:4. Llamar a 2K/4K con aspect_ratio=auto o aspect_ratio=1:1 devuelve HTTP 400 (error: "aspect_ratio_incompatible_with_high_res") y los créditos NO se retienen. 1K acepta todas las relaciones, incluso auto/1:1.
    nano-banana-21K (predeterminado), 2K, 4KVer get_modelsCada nivel es un SKU de precio independiente. La lista de aspect_ratio no cambia entre niveles.
    nano-banana-pro1K (predeterminado), 2K, 4KVer get_modelsMismo patrón que nano-banana-2.
    flux-2, flux-2-edit1K (predeterminado), 2KVer get_modelsSolo dos niveles.

    Cuándo elegir cada nivel (GPT Image 2):

    • 1K — predeterminado. Úsalo para publicaciones sociales, miniaturas, conceptos, vistas previas en app, cualquier cosa ≤ 1024 × 1024. El más barato; sin complicaciones de aspect ratio.
    • 2K — úsalo cuando el cliente necesita un hero web nítido, portada de newsletter, ilustración in-product a densidad retina. Debes elegir un aspecto direccional (landscape o portrait).
    • 4K — úsalo para impresión, publicidad exterior, banners, o cualquier caso en el que el usuario pida explícitamente el tamaño máximo. Confirma el aspecto con el usuario primero; 1:1 / auto no funcionarán.

    Los modelos no listados ignoran resolution. Para familias de vídeo (Seedance, Kling, P-Video, Gemini Omni) la resolución forma parte del model_id de la variante concreta — pasa la variante (p. ej. seedance-2-fast-480p, p-video-1080p, gemini-omni-video-1080p-6s), no este parámetro.

    Límites de caracteres del prompt:

    Algunos modelos aplican longitud máxima. Superarla puede devolver error o truncar.

    Modelo(s)Máx. caracteres
    wan-2-5800
    wan-2-7-720p, wan-2-7-1080p5.000
    kling-2-6 (texto a vídeo, imagen a vídeo)2.500
    kling-3-0-std, kling-3-0-pro2.500
    seedance-22.500
    kling-2-5-image-to-video-pro2.500
    seedream-v4, seedream-v4-edit2.500
    seedream-v4-5, seedream-v4-5-edit3.000
    5-lite-text-to-image, 5-lite-image-to-image2.995
    gpt-1.5-image-medium, gpt-1.5-image-high3.000
    nano-banana, imagen-4, flux-2, veo3-1, v1-pro-fast-i2v, grok (imagen/vídeo), p-image-edit5.000
    nano-banana-pro (todas las variantes)20.000
    nano-banana-2 (todas las variantes)20.000

    Otros pueden no tener límite documentado o usar predeterminados del servidor.

    Límites de archivos de entrada (imagen y vídeo):

    Para imagen a vídeo e imagen a imagen, source_media_urls es una lista de URLs. La mayoría aceptan solo imágenes (JPEG, PNG, WebP, típicamente 10 MB máx. por archivo). Algunos también aceptan vídeo; entonces aplican formato y tamaño (p. ej. MP4, duración máx.).

    Modelo(s)Tipo de entradaLímiteNotas
    kling-2-6-motion-control-720p, kling-2-6-motion-control-1080pImagen + vídeo1 imagen + 1 vídeoMotion Control: el vídeo de referencia guía el movimiento. Vídeo máx. 30 s; archivo típ. hasta 100 MB (MP4/WebM).
    kling-3-0-motion-control-720p, kling-3-0-motion-control-1080pImagen + vídeo1 imagen + 1 vídeoMotion Control Kling 3.0: igual que Kling 2.6. Facturación por segundo — consulta la tabla de Motion Control más abajo. Vídeo máx. 30 s; típ. hasta 100 MB (MP4/WebM).
    kling-2-6-image-to-video, wan-2-5 (imagen a vídeo), grok-image-to-video, v1-pro-fast-i2vSolo imágenes1 imagenExactamente una imagen de entrada.
    wan-2-7-720p, wan-2-7-1080p (imagen a vídeo)Solo imágenes1 imagenPrimer fotograma en source_media_urls; opcional last_frame_url para una transición primer+último fotograma.
    kling-2-5-image-to-video-proSolo imágenes2 imágenesFotograma inicial y final.
    seedance-1-5-proSolo imágenesSegún modoTexto a vídeo (generation_type: "text-to-video"): 0–1 imágenes opcionales. Imagen a vídeo (generation_type: "image-to-video"): exactamente 2 imágenes (inicio + fin).
    seedance-2Imagen + vídeo + audioSegún modoTexto a vídeo: hasta 9 imágenes + 3 vídeos + 3 audios de referencia, todas opcionales. Duración combinada de vídeos de referencia ≤ 15s; duración combinada de audios de referencia ≤ 15s. Imagen a vídeo: 1 imagen obligatoria (primer frame) + 1 imagen opcional (último frame) + hasta 3 audios de referencia opcionales; no se admiten vídeos de referencia en este modo. Mete todas las URLs en source_media_urls — el backend clasifica cada URL por extensión (.jpg/.png/.webp → imagen; .mp4/.mov/.webm → vídeo; .mp3/.wav/.m4a → audio).
    gemini-omni-video (todas las variantes)Imágenes + vídeo7 slots de referenciaUn único vídeo de referencia consume 2 slots; las imágenes ocupan el resto. Máximo 1 vídeo por petición; los primeros 10 segundos del clip se usan como clip director (sin parámetros de recorte expuestos). Un vídeo de referencia requiere una variante -video-ref — llamar a una variante de duración con una URL de vídeo devuelve variant_mismatch. No se admiten URLs de archivos de audio; la voz de salida se controla con el parámetro voice_id (una de las 29 voces built-in).
    kling-3-0-std, kling-3-0-proSolo imágenes1–2 imágenesFotograma inicial, o inicio + fin. PNG/JPG/JPEG. Admite elementos (ver abajo).
    kling-3-0-turbo-720p, kling-3-0-turbo-1080p (imagen a vídeo)Solo imágenes1 imagenSolo fotograma inicial. PNG/JPG/JPEG. Sin elementos.
    seedream-v4-editSolo imágenes10Para edición.
    5-lite-text-to-image, 5-lite-image-to-imageSolo imágenes10Para edición (imagen a imagen).
    nano-banana, nano-banana-editSolo imágenes10
    nano-banana-pro (todas las variantes)Solo imágenes8
    nano-banana-2 (todas las variantes)Solo imágenes8
    p-image-editSolo imágenes1–8Pruna AI P Image Edit. Solo imagen a imagen — usa generation_type: "image-to-image". Pasa 1–8 URLs en source_media_urls. aspect_ratio: auto coincide con la primera imagen de entrada, o 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. turbo opcional (activo por defecto). disable_safety_checker: true por defecto (moderación desactivada); false activa el comprobador. seed opcional.
    flux-2-edit (imagen a imagen)Solo imágenes8
    gpt-1.5-image (imagen a imagen)Solo imágenes16
    veo3-1 (imagen a vídeo / modos referencia)Solo imágenes1-3Depende del modo (1 ref opcional texto a vídeo; 2 primero+último fotograma; 3 referencia).

    Usa get_models para confirmar input_media_types y capacidades. Consulta Herramientas de cuenta para lista y precios.

    Kling 3.0 – elementos (opcional):

    Los elementos permiten referenciar imágenes o vídeos en el prompt con @element_name. Pasa kling_elements como array de objetos con name, description, y element_input_urls (2–4 URLs de imagen) o element_input_video_urls (1 URL de vídeo). Las imágenes de referencia de cada elemento provienen de su propio element_input_urls; el image_urls principal puede ir vacío para texto-a-vídeo, o contener cuadros de inicio/fin opcionales para imagen-a-vídeo. Cada elemento requiere título (name) y descripción. Elementos imagen: JPG/PNG, mín. 300×300px, máx. 10MB cada uno. Elementos vídeo: MP4/MOV, máx. 50MB.

    Seedance 1.5 Pro – dos modos (revisa generation_type antes de usar imágenes):

    Modogeneration_typesource_media_urls¿Puedes usar imágenes?
    Texto a vídeo"text-to-video"Vacío o 1 URLOpcional: 0–1 imágenes. Omite solo texto; incluye 1 URL para animar esa imagen.
    Imagen a vídeo"image-to-video"Exactamente 2 URLsObligatorio: exactamente 2 imágenes (inicio + fin).

    Seedance 2 – dos familias de modelo, dos modos, dos vías de facturación:

    Seedance 2 (ByteDance) se expone como tres familias de modelos separadasseedance-2-fast (económico, rápido), seedance-2 (estándar, mayor calidad) y seedance-2-mini (el más barato, ~50% por debajo de Fast, solo 480p/720p). Cada familia expone model_ids concretos por resolución y combinación con vídeo de referencia; pasa la variante completa (p. ej. seedance-2-fast-480p, seedance-2-mini-720p, seedance-2-720p-video-ref) — pasar solo el nombre de familia devuelve un error variant_required con las opciones disponibles. Resoluciones: 480p, 720p o 1080p (ids de variante seedance-2-480p / -720p / -1080p, cada una con su forma -video-ref). Duración: entero de 4 a 15 segundos. Aspect ratios admitidos: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive. Máximo de prompt: 2500 caracteres. El audio se activa con el toggle gratuito generate_audio (por defecto true) — a diferencia de Kling 3.0, no hay recargo por audio.

    Modos:

    Modogeneration_typeReferencias admitidas
    Texto a vídeo (multimodal)"text-to-video"Hasta 9 imágenes + 3 vídeos + 3 audios de referencia. Todas opcionales.
    Imagen a vídeo (keyframes)"image-to-video"1 imagen obligatoria (primer frame) + 1 imagen opcional (último frame) + hasta 3 audios de referencia opcionales. No se admiten vídeos de referencia en este modo — se rechazan con error.

    En ambos modos, mete todas las URLs de referencia en source_media_urls. El backend clasifica cada URL por extensión (.jpg/.png/.webp → imagen; .mp4/.mov/.webm → vídeo; .mp3/.wav/.m4a → audio) y la enruta al cubo correcto automáticamente.

    Vías de facturación (importante):

    • Sin vídeo de referencia: credits = output_s × base_credits/s
    • Con vídeo de referencia (vía proveedor upstream): credits = (ref_s + output_s) × base_credits/s, donde ref_s es la duración combinada de todos los vídeos de referencia, limitada a 15 segundos por petición.

    Nota para usuarios de API REST / MCP: el backend no puede consultar remotamente la duración de un vídeo desde su URL, así que factura en el peor caso pesimista (15s) para peticiones con vídeo de referencia enviadas desde MCP o la API REST. La web UI mide localmente y factura las duraciones exactas — si trabajas con clips de referencia cortos y quieres optimizar coste, recomendamos usar la web UI.

    Tarifas por segundo en vivo (extraídas del catálogo ai_models_config — siempre al día):

    ModelNameRateUnit
    seedance-2-1080pSeedance 2 (1080p)87credits / sec
    seedance-2-1080p-video-refSeedance 2 (1080p, video ref)55credits / sec
    seedance-2-480pSeedance 2 (480p)22credits / sec
    seedance-2-480p-video-refSeedance 2 (480p, video ref)17credits / sec
    seedance-2-4kSeedance 2 (4K)179credits / sec
    seedance-2-4k-video-refSeedance 2 (4K, video ref)112credits / sec
    seedance-2-720pSeedance 2 (720p)39credits / sec
    seedance-2-720p-video-refSeedance 2 (720p, video ref)29credits / sec
    seedance-2-fast-480pSeedance 2.0 Fast19credits / sec
    seedance-2-fast-480p-video-refSeedance 2.0 Fast (video ref)15credits / sec
    seedance-2-fast-720pSeedance 2.0 Fast31credits / sec
    seedance-2-fast-720p-video-refSeedance 2.0 Fast (video ref)22credits / sec
    seedance-2-mini-480pSeedance 2 Mini12credits / sec
    seedance-2-mini-480p-video-refSeedance 2 Mini (video ref)8credits / sec
    seedance-2-mini-720pSeedance 2 Mini24credits / sec
    seedance-2-mini-720p-video-refSeedance 2 Mini (video ref)15credits / sec

    Límites estrictos (se aplican con errores 400):

    • Más de 3 vídeos de referencia → too_many_videos.
    • Más de 3 audios de referencia → too_many_audios.
    • Más de 9 imágenes de referencia → too_many_images.
    • Duración combinada de vídeos de referencia > 15s → rechazado.
    • Duración combinada de audios de referencia > 15s → rechazado.
    • Cualquier archivo individual de vídeo o audio de referencia > 15s → rechazado.

    Gemini Omni Video — el modelo multi-modal de Google:

    Gemini Omni Video produce salida de vídeo con audio integrado (29 voces nombradas) y acepta entradas multi-modales (texto, referencias de imagen, una referencia de vídeo opcional). El modelo viene en 15 variantes concretas — elige la que coincida con la resolución y duración objetivo. 720p y 1080p tienen precio idéntico; 4K es un nivel de precio separado.

    Ids de variante (pasados a generate_media como model):

    Resolución4s6s8s10sVideo-ref (plano)
    720pgemini-omni-video-720p-4sgemini-omni-video-720p-6sgemini-omni-video-720p-8sgemini-omni-video-720p-10sgemini-omni-video-720p-video-ref
    1080pgemini-omni-video-1080p-4sgemini-omni-video-1080p-6sgemini-omni-video-1080p-8sgemini-omni-video-1080p-10sgemini-omni-video-1080p-video-ref
    4Kgemini-omni-video-4k-4sgemini-omni-video-4k-6sgemini-omni-video-4k-8sgemini-omni-video-4k-10sgemini-omni-video-4k-video-ref

    Las variantes video-ref toman la duración del clip fuente recortado (se usan los primeros 10s; sin parámetros de recorte expuestos). Las variantes basadas en duración aceptan 1–7 referencias de imagen; las variantes video-ref aceptan 1 clip fuente (consume 2 slots) + hasta 5 referencias de imagen.

    Tarifa plana por tarea. Tarifas en vivo (720p y 1080p comparten cada fila — Google las factura idénticamente):

    ModelNameRateUnit
    gemini-omni-video-4k-10sGemini Omni Video (4K)320credits
    gemini-omni-video-4k-4sGemini Omni Video (4K)230credits
    gemini-omni-video-4k-6sGemini Omni Video (4K)260credits
    gemini-omni-video-4k-8sGemini Omni Video (4K)290credits
    gemini-omni-video-4k-video-refGemini Omni Video (video ref, 4K)380credits
    gemini-omni-video-hd-10sGemini Omni Video200credits
    gemini-omni-video-hd-4sGemini Omni Video110credits
    gemini-omni-video-hd-6sGemini Omni Video140credits
    gemini-omni-video-hd-8sGemini Omni Video170credits
    gemini-omni-video-hd-video-refGemini Omni Video (video ref)260credits

    Parámetros específicos de Gemini Omni:

    ParámetroTipoNotas
    resolutionIgnorado — incluido en el id de variante.
    durationIgnorado — incluido en el id de variante. Las variantes video-ref toman la duración del clip fuente recortado.
    aspect_ratiostringEstrictamente 16:9 o 9:16. Cualquier otro valor devuelve aspect_ratio_invalid_for_model.
    voice_idstring (opcional)Una de las 29 voces built-in (p. ej. kore, puck, achernar, zephyr). Descubre la lista completa con la herramienta list_gemini_omni_voices — los ids desconocidos se rechazan client-side antes de cobrar créditos. Omítelo para usar la voz predeterminada del modelo.
    character_idsstring[] (opcional)Uno o varios personajes guardados de la biblioteca del usuario (creados con manage_library(kind="character", action="create", ...), listados con list_gemini_omni_characters). Cada uno consume 1 de los 7 slots de referencia. El proveedor renderiza una identidad consistente en varios clips.
    video_trim_start_snumber (opcional)Inicio de la ventana de recorte (segundos) para el vídeo de referencia. Predeterminado 0.
    video_trim_end_snumber (opcional)Fin de la ventana de recorte (segundos) para el vídeo de referencia. Predeterminado: min(duración_fuente, start+10) cuando la URL está en media_upload_metadata, si no start+10. Límites estrictos del proveedor: range ≤ 10s, ends ≤ 30s.
    seednumber (opcional)Resultados reproducibles.
    negative_promptNo soportado. Se elimina silenciosamente.
    soundNo soportado — el audio es intrínseco a cada salida.

    Media fuente (source_media_urls): 7 slots de referencia en total. Un único vídeo de referencia consume 2 slots; cada character_id consume 1 slot; las imágenes ocupan el resto. Máximo 1 vídeo por petición; pasar una URL de vídeo requiere una variante -video-ref (variante de duración + vídeo devuelve variant_mismatch). La ventana del clip director es por defecto los primeros 10 segundos; sobrescribe con video_trim_start_s / video_trim_end_s. Las URLs de archivos de audio no se aceptan (devuelve unsupported_audio_url); usa voice_id en su lugar.

    Herramientas complementarias (úsalas junto con las generaciones de Gemini Omni):

    HerramientaPropósito
    list_gemini_omni_voicesCatálogo estático de las 30 voces (id, label, género, carácter, preview_url a un sample mp3 de ~7s). Gratuito.
    play_gemini_omni_voiceDevuelve la preview_url para un id de voz único — más rápido que pedir el catálogo completo cuando ya conoces la voz. Muestra la URL al usuario para que la escuche antes de usarla.
    list_gemini_omni_charactersLista los personajes guardados del usuario. Cada fila tiene un character_id para pasar a generate_media y un id interno para borrar.
    manage_library(kind="character", action="create", ...)Persiste un personaje nuevo a partir de una imagen de referencia + descripción (+ character_name, voice_id opcionales). Devuelve el character_id opaco del proveedor.
    manage_library(kind="character", action="delete", character_id=...)Borrado local (el proveedor no tiene endpoint de delete). Las generaciones anteriores que usaron ese personaje conservan sus salidas.
    trim_videoRecorta un vídeo fuente largo a la ventana de ≤10s que Gemini Omni requiere para variantes -video-ref. Devuelve una URL alojada lista para usar como source_media_urls.

    Ejemplo de petición (1080p, 6s, vertical, reusando un personaje guardado + voz elegida):

    {
      "model": "gemini-omni-video-1080p-6s",
      "prompt": "Un barista prepara un espresso perfecto, narrando el proceso",
      "aspect_ratio": "9:16",
      "voice_id": "kore",
      "character_ids": ["char_4f2a9b7c"],
      "source_media_urls": ["https://media.kubeez.com/cafe-shot.jpg"]
    }
    

    Audio en vídeo (dos conceptos):

    1. capabilities.video_audio en get_models — si la salida hay sonido:
      • included — la salida suele incluir pista de audio sin el parámetro sound (p. ej. Veo, Wan, Grok, Kling 2.5 imagen a vídeo, Motion Control, Gemini Omni Video — este último expone un parámetro voice_id para elegir entre 29 voces built-in).
      • toggle_via_sound_param — el audio generado se activa/desactiva con sound: true / false (Kling 2.6, Kling 3.0, Seedance 1.5 Pro). El precio puede variar. Kling 3.0 enruta sound: true a filas dedicadas -audio en el catálogo — tú sigues usando kling-3-0-std / kling-3-0-pro como model id y solo cambias sound; el servidor escoge la fila con la tarifa correcta. Tarifas en vivo:
    ModelNameRateUnit
    kling-3-0-proKling 3.0 Pro21credits / sec
    kling-3-0-pro-audioKling 3.0 Pro (with audio)30credits / sec
    kling-3-0-stdKling 3.017credits / sec
    kling-3-0-std-audioKling 3.0 Std (with audio)23credits / sec

    Tarifas por segundo de Motion Control (Kling 3.0 y Kling 2.6):

    No models matched this family. kling-3-0-motion-control,kling-2-6-motion-control
    • silent — sin audio generado (solo Seedance 1.0 / v1-pro-fast-i2v).
    1. supports_sound — solo indica que la API acepta el conmutador sound en ese modelo; no significa que el resto de vídeo vaya sin sonido; la mayoría tienen video_audio: included.

    Los modelos solo imagen ignoran sound.

    #API REST: URLs para archivos locales o del navegador

    Si usas la API HTTP (POST /v1/generate/media) y tus entradas son archivos en disco o seleccionados en el navegador — aún no son URLs públicas — sube cada archivo primero con POST /v1/upload/media. Pasa los valores urls devueltos como source_media_urls.


    <a id="trim_video"></a>

    #trim_video

    Recorta una ventana de cualquier URL de vídeo accesible públicamente y aloja el clip recortado. Kubeez gestiona el recorte server-side y devuelve una url pública que puedes pasar directamente a generate_media como valor de source_media_urls.

    Cuándo usar esta herramienta:

    • El vídeo fuente del usuario es más largo que el límite del modelo para el clip de referencia y quieres resultados deterministas en lugar de depender de los hints de trim del proveedor.
    • Quieres usar una ventana específica de un asset más largo (p. ej. "usa los segundos 5–12, no los primeros 10").
    • Encadenas varias generaciones y quieres una única URL canónica recortada reutilizable entre llamadas.

    Límites por modelo (sáltate el trim cuando la fuente ya encaja):

    ModeloLímite del clip de referenciaNotas
    Gemini Omni Video (variantes -video-ref)≤ 10s ventana de los primeros 30s de la fuenteNecesario cuando una variante de duración + ref de vídeo devuelve variant_mismatch.
    Kling 2.6 / 3.0 Motion Control≤ 30s de vídeo de referenciaEl proveedor trunca clips más largos; recorta explícitamente para un encuadre predecible.
    Seedance 2 / 2 Fast≤ 15s tiempo combinado de vídeo de referenciaSi pasas varios vídeos de referencia, recorta cada uno para que la suma encaje.

    Parámetros:

    ParámetroTipoObligatorioDescripción
    source_urlstringURL de vídeo fuente accesible públicamente (URL de upload Kubeez, R2/S3, cualquier CDN público).
    end_snumberFin de la ventana de recorte, en segundos. Debe ser > start_s; el rango resultante end_s − start_s está limitado a 60s.
    start_snumberNoInicio de la ventana de recorte, en segundos. Predeterminado 0.

    Devuelve: { url, size_bytes, duration_s, start_s, end_s, elapsed_s }. La url es un enlace público alojado en Kubeez que apunta al bucket media-inputs de Supabase storage, seguro para usar como valor de source_media_urls. Los clips recortados conviven con los inputs subidos por el usuario y comparten la misma limpieza automática semanal — trátalos como efímeros, no como un asset permanente.

    Flujo típico (Gemini Omni Video con fuente larga del usuario):

    1. get_upload_url(model_id="gemini-omni-video-1080p-video-ref")
           → página de upload presignada
    2. (el usuario sube su clip de 25s a través del enlace)
    3. get_upload_session(token) → { media_urls: ["https://.../source.mp4"] }
    4. trim_video(source_url=media_urls[0], start_s=5, end_s=15)
           → { url: "https://.../trims/<uuid>.mp4", duration_s: 10 }
    5. generate_media(
           model="gemini-omni-video-1080p-video-ref",
           prompt="...",
           source_media_urls=[<url recortada>]
       )
    

    Trim standalone (URL fuente ya pública — sin paso de upload):

    trim_video(source_url="https://media.kubeez.com/<asset>.mp4", start_s=0, end_s=8)
           → { url, duration_s: 8 }
    generate_media(model="kling-3-0-motion-control-1080p", source_media_urls=[<imagen>, <url recortada>], ...)
    

    Errores:

    Código de errorCausa
    missing_source_urlsource_url no fue proporcionado.
    unsafe_source_urlsource_url usa un esquema no-http(s), contiene credenciales embebidas o resuelve a una IP privada/loopback/metadata. Kubeez rechaza acceder a hosts internos — usa una URL pública.
    invalid_trim_rangeend_sstart_s, start_s negativo o valores no numéricos.
    trim_too_longend_s − start_s > 60s.
    source_too_largeVídeo fuente > 500 MB.
    source_fetch_failedLa URL fuente devolvió 4xx, 5xx, fue inaccesible o superó el límite de redirecciones.
    ffmpeg_failedffmpeg rechazó el archivo (códec no soportado / contenedor corrupto).
    processor_timeoutEl servicio de trim excedió su presupuesto de descarga/procesamiento.
    processor_unavailableEl servicio de trim no está disponible temporalmente. Reintenta más tarde o contacta soporte si persiste.

    Ejemplo de petición:

    {
      "source_url": "https://media.kubeez.com/u123/uploads/long-take.mp4",
      "start_s": 5.2,
      "end_s": 14.7
    }
    

    Ejemplo de respuesta:

    {
      "url": "https://<project>.supabase.co/storage/v1/object/public/media-inputs/u123/trims/abc.mp4",
      "size_bytes": 1245678,
      "duration_s": 9.5,
      "start_s": 5.2,
      "end_s": 14.7,
      "elapsed_s": 1.83
    }
    

    Precisión por frame: -c copy alinea el inicio efectivo al keyframe precedente más cercano (desplazamiento ≤ 1 GOP, típicamente ≤ 1s). Comportamiento idéntico al stream-copy MP4 nativo de la web UI. Para cortes precisos por frame, recodifica la fuente previamente — el trade-off es una operación más lenta y con pérdidas, que evitamos deliberadamente aquí.

    No conserves el output: la URL apunta al bucket media-inputs que se limpia semanalmente. Si necesitas que el clip recortado sobreviva a la siguiente generación, usa manage_library(kind="asset", action="add", ...) para copiarlo a la Biblioteca de Assets permanente del usuario.


    #get_generation_status

    Comprueba el estado de una generación de medios y obtén URLs de salida al terminar.

    Parámetros:

    ParámetroTipoObligatorioDescripción
    generation_idstringID devuelto por generate_media.

    Respuesta: Incluye status (pending, queued, processing, completed, failed), progress, y al completarse un array outputs con url, thumbnail_url, optimized_url, media_type, dimensiones, etc.


    #get_generation_estimate

    Obtiene un tiempo de procesamiento estimado según parámetros (no se inicia ningún trabajo). Para duración estimada por modelo en una sola llamada, usa get_models; cada modelo incluye estimated_time_seconds. Usa get_generation_estimate cuando la estimación dependa de longitud del prompt, duration u otros parámetros.

    Parámetros:

    ParámetroTipoObligatorioDescripción
    modelstringID de modelo.
    generation_typestringNoIgual que en generate_media. Predeterminado: text-to-image.
    promptstringNoOpcional; puede afectar la estimación.
    negative_promptstringNoOpcional.
    parametersobjectNoParámetros extra opcionales.

    Respuesta: Tiempo estimado (y opcionalmente confianza/tamaño de muestra) para fijar expectativas antes de llamar a generate_media.


    #Reglas de modelo

    • Texto a imagen y texto a vídeo: No envíes source_media_urls (salvo que el modelo admita imagen de referencia opcional). Excepción: seedance-1-5-pro en modo texto a vídeo acepta 0–1 imágenes opcionales.
    • Imagen a vídeo e imagen a imagen: Envía URL(s) de imagen (y cuando corresponda, vídeo) en source_media_urls. La mayoría necesitan solo imágenes; algunos (p. ej. Kling 2.6 Motion Control) requieren 1 imagen + 1 vídeo. seedance-1-5-pro en imagen a vídeo exige exactamente 2 imágenes (inicio + fin). Respeta los límites de cada modelo.
    • Audio en vídeo: Usa capabilities.video_audio de get_models. included — audio sin el parámetro sound. toggle_via_sound_param — usa sound solo si supports_sound es true. silent — sin audio generado (solo Seedance 1.0). No infieras «sin audio» solo por supports_sound: false.
    • Usa get_models para ver qué modelos admiten qué tipos de generación, input_media_types (p. ej. image, video) y recuentos de entrada obligatorios.

    Consulta Limitaciones para límites de ritmo y créditos. Para una sola tabla de predeterminados API (máx. prompt, entradas, duración, banderas), consulta Requisitos por modelo (API REST).