Ejecuta tareas en paralelo
Algunos trabajos no necesitan esperarse entre sí, necesitan ocurrir al mismo tiempo. La API Fan-Out Paralelo lanza varios pasos independientes en conjunto y une sus resultados en una sola respuesta, así un trabajo que tomaría tres llamadas secuenciales termina en el tiempo de la más lenta.
El problema de hacer las cosas una tras otra
Si necesita un documento traducido a cuatro idiomas, no hay razón para que la traducción al francés espere a que termine la del portugués. Ejecutarlas en secuencia desperdicia tiempo sin ningún beneficio, ya que los pasos no dependen entre sí y ninguno necesita ver la salida de otro antes de poder empezar. POST /flow/parallel dispara cada rama en el mismo instante y solo espera lo que tarde la más lenta, en vez de la suma de la duración de cada rama por separado.
Cómo funciona el fan-out
Envía una lista de definiciones de tareas independientes, cada una con su propio tipo y parámetros, y la plataforma las despacha de forma concurrente en nuestra red perimetral global. Por diseño no hay estado compartido entre ramas, lo que hace segura la ejecución paralela real: el resultado de una rama nunca bloquea ni corrompe el de otra, y una entrada lenta o inusual en una rama no puede frenar al resto del lote esperándola.
Cómo se unen los resultados
Una vez que todas las ramas terminan, los resultados se recopilan en una sola respuesta estructurada, indexada por el identificador que le dio a cada rama al enviarla. Recibe un único task_id al enviar la solicitud y una sola respuesta unida al completarse, entregada por webhook firmado o por un enlace firmado válido durante 24 horas, así su aplicación lee una sola respuesta en lugar de correlacionar varias llegadas a mano.
Qué pasa cuando una rama falla
Una rama que falla se reintenta hasta tres veces por su cuenta, sin afectar a las demás, y solo las ramas que realmente fallan quedan sin cobro. El resultado unido indica con claridad qué ramas se completaron y cuáles no, en vez de hacer fallar todo el fan-out por una sola entrada defectuosa, así tres traducciones buenas igual llegan aunque la cuarta haya necesitado una revisión más cercana.
Dónde rinde el fan-out
Es la solución natural para cualquier cosa con variantes independientes: traducir un mismo origen a varios idiomas, generar múltiples tamaños de imagen, transcribir varios archivos del mismo lote. Como es una tarea asíncrona estándar, un fan-out paralelo puede a su vez ser un paso dentro de una cadena o de un flujo programado más grande.
Qué puede hacer con ella
Traducción simultánea a varios idiomas
Traduzca el mismo texto de origen a cinco idiomas de destino a la vez en lugar de cinco solicitudes secuenciales, reduciendo el tiempo total al del idioma más lento.
Exportación de imágenes en varios formatos
Genere en paralelo las variantes de miniatura, tamaño medio y resolución completa de una imagen subida y recíbalas todas bajo un mismo task_id.
Transcripción de archivos en lote
Transcriba varios archivos de audio de la misma sesión de grabación de forma concurrente y obtenga todas las transcripciones en una sola respuesta unida.
Verificaciones de contenido multi-región
Ejecute la misma tarea de validación sobre variantes de contenido para distintos mercados al mismo tiempo y revise todos los resultados juntos.
Preguntas frecuentes
¿En qué se diferencia el fan-out paralelo de simplemente enviar varias solicitudes?
Enviar solicitudes separadas implica rastrear task_ids y webhooks distintos; el fan-out los agrupa bajo un solo task_id y un solo resultado unido.
¿La API Fan-Out Paralelo es gratuita?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuántas ramas puedo ejecutar a la vez?
El fan-out está pensado para un número práctico de ramas concurrentes por solicitud; los lotes muy grandes de ítems similares se manejan mejor con la tarea de procesamiento en lote.
¿Qué pasa si dos ramas tardan tiempos muy distintos?
El resultado unido se entrega cuando termina la rama más lenta, así que el tiempo total depende de su rama más larga, no de la suma de todas.
¿Las ramas comparten datos entre sí?
No, las ramas se ejecutan de forma independiente sin estado compartido, lo que evita que el fallo o retraso de una afecte a las demás.
¿Cómo sé qué resultado corresponde a cada rama?
El resultado unido se indexa por el identificador que le asigna a cada rama al enviar la solicitud, así que mapear las salidas es directo.
¿Puedo combinar fan-out con encadenamiento?
Sí, un fan-out paralelo puede ser un paso dentro de una cadena, así que puede ejecutar varias ramas a la vez y luego pasar el resultado unido a un paso siguiente.
¿Qué pasa si una rama sigue fallando?
Se reintenta hasta tres veces y luego devuelve un error claro específico de esa rama mientras las demás terminan con normalidad; las ramas fallidas nunca se cobran.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/flow/parallel \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/flow/parallel", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/flow/parallel",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/flow/parallel", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/flow/parallel", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "flow.parallel",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |