DeepSeek Vision and Grok Imagine models are now live on CometAPI →
guide/Investigación de CometAPI

Cómo conectar varios modelos de IA a n8n con una única clave de CometAPI

Cree un flujo de trabajo de bajo código en n8n que enrute tareas de hojas de cálculo a múltiples proveedores de IA utilizando una única clave de CometAPI, sondee las tareas de vídeo y almacene cada resultado.

CometAPI
AnnaEquipo de investigación de modelos de IA y API
Actualizado Aug 25, 2026 13 min de lectura
Cómo conectar varios modelos de IA a n8n con una única clave de CometAPI
Usa este patrón

Haz la primera llamada a la API.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

¿Cómo conectar múltiples modelos de IA a n8n con una sola API?

Conectar modelos de IA proveedor por proveedor puede funcionar para un prototipo, pero se vuelve frágil a medida que crece el uso. Cada proveedor aporta credenciales, endpoints, formatos de solicitud, límites de tasa, facturación y estructuras de respuesta independientes. En n8n, esto a menudo crea nodos HTTP duplicados y ramas específicas del proveedor, por lo que agregar un modelo o cambiar una ruta de respaldo implica editar varias partes del flujo de trabajo.

n8n y CometAPI resuelven capas diferentes de ese problema. n8n controla cuándo se ejecuta un trabajo, valida entradas, enruta tareas síncronas y asíncronas, reintenta fallas y almacena resultados. CometAPI centraliza el acceso a modelos detrás de una única clave de API y una única URL base. Juntos, mantienen los cambios de proveedor fuera de la capa de orquestación: puedes cambiar un ID de modelo preservando la misma cola, sondeo, almacenamiento y lógica de monitoreo.

Esta combinación es especialmente útil para trabajos mixtos de imagen y video provenientes de hojas de cálculo o herramientas internas. El flujo de trabajo permanece visual y auditable en n8n, mientras que las credenciales, la disponibilidad de modelos y los costos de uso se mantienen más fáciles de gestionar a través de una única capa de API.

La forma más sencilla de integrar múltiples proveedores de IA en una sola aplicación es separar la orquestación del acceso a los modelos. Deja que n8n gestione disparadores, ramificaciones, reintentos y almacenamiento, mientras CometAPI proporciona a cada rama una única clave de API y una única URL base. El ID del modelo se convierte en un campo en cada trabajo en lugar de una cuenta de proveedor, SDK y configuración de facturación separados.

En esta guía, construirás una canalización low‑code funcional que lea trabajos de imagen y video desde Google Sheets, los envíe a modelos de OpenAI y ByteDance a través de CometAPI, guarde IDs de tareas de video asíncronas, sondee hasta su finalización y haga upsert del resultado final en una n8n Data Table.

Lo que construirás

El flujo de trabajo final sigue este camino:

Google Sheets Trigger → Normalizar trabajo → Switch por tipo de medio → Solicitud de imagen o video en CometAPI → Esperar y sondear tareas de video → Subir o referenciar el resultado → Upsert en Data Table.

Usa estas columnas en la hoja de origen:

job_id | media_type | model | prompt | size | seconds | status

Una fila típica de imagen usa image, gpt-image-2 y 1024x1024. Una fila de video usa video, seedance-2-5, 1280x720 y una duración de 4 a 30 segundos.

Antes de empezar

Necesitas una instancia de n8n, una hoja de Google, una clave de API de CometAPI y una n8n Data Table llamada ai_jobs. Crea estas columnas en la Data Table: job_id, media_type, model, status, task_id, result_url, error y updated_at.

Para n8n autoalojado, agrega los siguientes valores al entorno utilizado por tu proceso de n8n:

COMETAPI_BASE_URL=https://api.cometapi.com/v1COMETAPI_KEY=your_cometapi_key

Reinicia n8n después de cambiar su entorno. En n8n Cloud, o cuando no quieras exponer variables de entorno en expresiones de nodos, crea una credencial HTTP Header Auth llamada CometAPI Bearer. Establece el nombre del encabezado en Authorization y el valor en Bearer your_cometapi_key. Los ejemplos a continuación usan esta credencial y la URL base compatible con OpenAI fija https://api.cometapi.com/v1.

Usa IDs de modelos actuales

TareaProveedor y modeloSolicitudResultado
ImagenOpenAI · gpt-image-2POST /v1/images/generationsImagen base64 síncrona
VideoByteDance · seedance-2-5POST /v1/videosTarea asíncrona, luego sondeo

Tanto los IDs como las capacidades estaban disponibles en la API en vivo del directorio de modelos de CometAPI el 11 de agosto de 2026. El modelo de imagen admite generación de texto a imagen. Seedance 2.5 admite generación de texto a video e imagen a video, clips de 4 a 30 segundos y los tamaños documentados 480p y 720p.

Precios al 11 de agosto de 2026: la página del modelo GPT Image 2 indica $4 por millón de tokens de entrada y $24 por millón de tokens de salida. La página del modelo Seedance 2.5 indica $0.103 por segundo a 480p y $0.231 por segundo a 720p. Los precios pueden cambiar, así que utiliza el directorio de modelos en vivo o la página del modelo como fuente de verdad en tiempo de ejecución.

La diferencia arquitectónica importante es que la generación de imágenes puede manejarse como una operación de petición‑respuesta, mientras que la generación de video debe tratarse como un trabajo con estado. Persistir el ID de la tarea de video antes del sondeo evita que un reinicio de ejecución de n8n pierda el trabajo.

Construye el flujo de trabajo en n8n

1. Dispara nuevos trabajos desde Google Sheets

Añade un nodo Google Sheets Trigger y elige Row added or updated. Señálalo a la hoja que contiene tu cola de trabajos. Agrega un nodo IF inmediatamente después del disparador y continúa solo cuando status esté vacío o sea igual a queued. Esto evita que filas completadas se envíen de nuevo cuando cambia la hoja.

2. Normaliza y valida cada fila

Añade un nodo Code llamado Normalize Job. Este nodo aplica valores predeterminados seguros, restringe el flujo de trabajo a IDs de modelo aprobados y produce los mismos campos para ambas ramas.

const row = $json;​const allowedModels = {  image: new Set(['gpt-image-2']),  video: new Set(['seedance-2-5']),};​const mediaType = String(row.media_type || '').trim().toLowerCase();if (!allowedModels[mediaType]) {  throw new Error(`media_type must be image or video; received: ${row.media_type}`);}​const defaultModel = mediaType === 'image' ? 'gpt-image-2' : 'seedance-2-5';const model = String(row.model || defaultModel).trim();if (!allowedModels[mediaType].has(model)) {  throw new Error(`Model ${model} is not allowed for ${mediaType} jobs`);}​const prompt = String(row.prompt || '').trim();if (!prompt) throw new Error('prompt is required');​const seconds = mediaType === 'video' ? Number(row.seconds || 4) : null;if (mediaType === 'video' && (!Number.isInteger(seconds) || seconds < 4 || seconds > 30)) {  throw new Error('Seedance 2.5 seconds must be an integer from 4 to 30');}​return [{  json: {    job_id: String(row.job_id || $execution.id),    media_type: mediaType,    model,    prompt,    size: String(row.size || (mediaType === 'image' ? '1024x1024' : '1280x720')),    seconds,    status: 'processing',    updated_at: new Date().toISOString(),  },}];

Añade un nodo Switch después de Normalize Job. Enruta image a la rama de imagen y video a la rama de video.

3. Genera imágenes a través de un único endpoint

Añade un nodo HTTP Request llamado Create Image con estas configuraciones:

  • Method: POST
  • URL: https://api.cometapi.com/v1/images/generations
  • Authentication: la credencial Header Auth CometAPI Bearer
  • Body Content Type: JSON
{  "model": "={{ $('Normalize Job').item.json.model }}",  "prompt": "={{ $('Normalize Job').item.json.prompt }}",  "size": "={{ $('Normalize Job').item.json.size }}"}

GPT Image 2 devuelve datos de imagen en base64. Añade un nodo Code llamado Prepare Image File para convertir esos datos en un elemento binario de n8n:

const job = $('Normalize Job').item.json;const b64 = $json.data?.[0]?.b64_json;if (!b64) throw new Error('CometAPI returned no image data');​return [{  json: {    ...job,    status: 'completed',    task_id: '',    result_url: '',    error: '',    updated_at: new Date().toISOString(),  },  binary: {    media: {      data: b64,      mimeType: 'image/png',      fileName: `${job.job_id}.png`,    },  },}];

Conecta este nodo a tu nodo de almacenamiento de objetos preferido, como S3 o Google Drive. Almacena la URL del archivo devuelta en result_url, luego haz upsert de la fila en ai_jobs. Mantén las cargas útiles base64 grandes fuera de la Data Table.

4. Crea una tarea de video asíncrona

Añade un nodo HTTP Request llamado Create Video:

  • Method: POST
  • URL: https://api.cometapi.com/v1/videos
  • Authentication: CometAPI Bearer
  • Body Content Type: Form-Data

Añade cuatro campos de formulario: model, prompt, seconds y size. Mapea sus valores desde Normalize Job.

A continuación, añade un nodo Code llamado Save Video Task:

const job = $('Normalize Job').item.json;const taskId = $json.id || $json.task_id;if (!taskId) throw new Error('Video task ID missing from create response');​return [{  json: {    ...job,    task_id: taskId,    status: $json.status || 'queued',    result_url: '',    error: '',    updated_at: new Date().toISOString(),  },}];

Haz upsert de este elemento en ai_jobs antes del sondeo. Guardar el ID de la tarea inmediatamente significa que un reinicio o tiempo de espera no pierde el trabajo.

5. Espera, sondea y guarda la URL del video

Añade un nodo Wait configurado a 15 segundos. Luego añade un nodo HTTP Request llamado Get Video:

  • Method: GET
  • URL: =https://api.cometapi.com/v1/videos/{{ $json.task_id }}
  • Authentication: CometAPI Bearer

Después de la solicitud, usa un nodo Switch sobre status:

  • queued o in_progress: regresa al nodo Wait.
  • completed: continúa a Finalize Video.
  • failed o error: escribe el error en ai_jobs y detente.

Añade este nodo Code para la rama completada:

const prior = $('Save Video Task').item.json;const resultUrl = $json.video_url || $json.url || $json.data?.video_url;if (!resultUrl) throw new Error('Completed video response has no video URL');​return [{  json: {    ...prior,    status: 'completed',    result_url: resultUrl,    error: '',    updated_at: new Date().toISOString(),  },}];

Haz upsert del elemento final en ai_jobs por job_id. Las URLs de video de CometAPI pueden estar firmadas y ser temporales, por lo que los flujos de trabajo de producción deberían descargar y volver a alojar el archivo antes de guardar la URL permanente. Si tu app puede recibir solicitudes entrantes, reemplaza el sondeo por un webhook cuando el modelo seleccionado admita callbacks.

Mapa completo de nodos

El flujo completo puede ensamblarse con los siguientes nodos:

  1. Google Sheets Trigger — Row added or updated
  2. IF — Procesar solo filas nuevas o en cola
  3. Code — Normalize Job
  4. Switch — Imagen o video
  5. Rama de imagen: HTTP Request → Prepare Image File → Almacenamiento de objetos → Data Table Upsert
  6. Rama de video: HTTP Request → Save Video Task → Data Table Upsert → Wait → HTTP Request → Status Switch
  7. Video completado: Finalize Video → Almacenamiento de objetos o URL permanente → Data Table Upsert
  8. Video fallido: Set Error → Data Table Upsert

Para una rama de fallas, usa esta expresión en un nodo Edit Fields:

{  "job_id": "={{ $('Save Video Task').item.json.job_id }}",  "status": "failed",  "task_id": "={{ $('Save Video Task').item.json.task_id }}",  "result_url": "",  "error": "={{ $json.error?.message || $json.message || 'Video generation failed' }}",  "updated_at": "={{ $now.toISO() }}"}

Prueba el flujo de trabajo

Añade estas dos filas a la hoja de origen:

img-001 | image | gpt-image-2 | A cinematic product photo of a glass robot on a dark desk | 1024x1024 | | queuedvid-001 | video | seedance-2-5 | A paper airplane flies through a sunlit studio, smooth tracking shot | 1280x720 | 4 | queued

La solicitud de imagen debería devolver una estructura similar a:

{  "created": 1786400000,  "data": [    { "b64_json": "iVBORw0KGgoAAA..." }  ]}

La solicitud de creación de video debería devolver una estructura de tarea similar a:

{  "id": "video_task_abc123",  "object": "video",  "status": "queued",  "progress": 0}

Después del sondeo, una respuesta completada debería contener el mismo ID de tarea, status: completed y un video_url. Los campos opcionales exactos pueden variar según el modelo, por lo que el código de normalización lee el estado estable de la tarea y la URL del resultado en lugar de copiar toda la respuesta del proveedor en tu base de datos.

Errores comunes y soluciones

ErrorSolución
401 UnauthorizedConfirma que el valor del Header Auth comienza con Bearer y que la clave está activa.
404 model or task not foundVerifica el directorio de modelos en vivo y confirma que el ID de tarea se usa en GET /v1/videos/{id}.
400 invalid size or secondsUsa un tamaño compatible y mantén la duración de Seedance 2.5 entre 4 y 30 segundos.
429 rate limitedReduce la concurrencia de n8n y reintenta con backoff exponencial y jitter.
Polling never endsPersiste el conteo de intentos y detén después de un tiempo límite definido; trata failed y error como terminales.
Image payload is too largeConvierte base64 a binario, súbelo y almacena solo la URL permanente.

Lista de comprobación para producción

  • Protege las credenciales. Mantén la clave de API en credenciales de n8n o variables de entorno del servidor. Nunca la coloques en la hoja de cálculo ni la devuelvas a un navegador.
  • Haz que cada trabajo sea idempotente. Usa job_id como clave de upsert en la Data Table. Antes de crear una nueva tarea, omite filas ya marcadas como processing o completed.
  • Controla el sondeo y la concurrencia. Sondea trabajos de video cada 10–20 segundos, limita el número de intentos y restringe ejecuciones simultáneas. Retrocede ante respuestas 429, 500 y 503 en lugar de crear tareas duplicadas.
  • Valida la política de modelos antes de cada solicitud. Mantén una lista permitida por tipo de medio. Actualiza la disponibilidad de modelos y precios desde el directorio en vivo según una programación, pero despliega cambios de modelos mediante revisión en lugar de permitir que usuarios de hojas envíen IDs arbitrarios.
  • Rastrea el costo por trabajo. Almacena modelo, resolución, duración y campos de uso con cada resultado. Un trabajo Seedance 2.5 de cuatro segundos a 720p cuesta aproximadamente $0.924 a la tarifa indicada el 11 de agosto de 2026; los mismos cuatro segundos a 480p cuestan aproximadamente $0.412. Impón duración y resolución máximas antes de enviar la solicitud.
  • Rehospeda los medios generados. Trata las URLs firmadas del proveedor como enlaces de entrega, no como almacenamiento permanente. Descarga los medios completados, súbelos a tu bucket controlado y guarda la URL duradera más la suma de verificación.
  • Mantén una pista de auditoría. Guarda el modelo de la solicitud, parámetros saneados, ID de tarea, transiciones de estado, conteo de reintentos, tiempo de respuesta y ubicación final del recurso. No registres claves de API ni prompts privados completos.

Por qué este patrón escala

El flujo de trabajo se mantiene simple porque cada nuevo proveedor o modelo es una decisión de enrutamiento, no una nueva integración de cuenta. La hoja de cálculo sigue siendo la cola de trabajos, n8n sigue siendo la capa de orquestación y CometAPI sigue siendo la capa única de acceso. Agrega un modelo extendiendo la lista permitida y la configuración de ramas; el disparador, la persistencia de tareas, el sondeo, el almacenamiento y la lógica de monitoreo permanecen sin cambios.

Esa es la respuesta práctica a la integración multi‑proveedor de IA: un endpoint y una clave controlados, enrutamiento explícito de modelos, rutas separadas síncronas y asíncronas y un registro duradero para cada trabajo.

Preguntas frecuentes

¿Puede n8n llamar a múltiples proveedores de IA a través de una sola API?

Sí. Con una capa de API unificada como CometAPI, n8n puede enviar solicitudes a diferentes modelos compatibles manteniendo centralizados la credencial del proveedor y la integración HTTP.

¿Puedo usar CometAPI con el nodo HTTP Request de n8n?

Sí. El nodo HTTP Request puede enviar solicitudes al endpoint de CometAPI con la autenticación requerida y los parámetros específicos del modelo.

¿Puede n8n cambiar automáticamente de modelo de IA cuando uno falla?

Sí. Usa una rama IF/Switch después de la solicitud de API y enruta fallas reintentables o específicas del modelo a un modelo de respaldo. El respaldo debe admitir la misma modalidad y capacidades requeridas.

Seguir aprendiendo

Conecta este artículo con la siguiente decisión.

Ver todos los temas
Publicado el Aug 25, 2026
Última actualización Aug 25, 2026
0 visitas
Revisado para mayor claridad, atribución de fuentes y terminología API actual.

¿Listo para reducir los costos de desarrollo de IA en un 20%?

Comienza gratis en minutos. Créditos de prueba gratuitos incluidos. No se requiere tarjeta de crédito.

Leer Más