Saltar al contenido principal
APIXO utiliza un patrón asíncrono para todas las tareas de generación. Este diseño se adapta a la realidad de que la generación con IA requiere tiempo—desde unos segundos para imágenes hasta varios minutos para videos.

El patrón

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Submit    │────▶│  Poll or    │────▶│   Retrieve  │
│   Task      │     │  Callback   │     │   Results   │
└─────────────┘     └─────────────┘     └─────────────┘
      │                   │                   │
      ▼                   ▼                   ▼
   taskId            state check          resultUrls

Paso 1: Enviar una tarea

Envía una petición POST para crear una tarea de generación:
POST https://api.apixo.ai/api/v1/generateTask/{model}
Solicitud:
{
  "request_type": "async",
  "input": {
    "mode": "text-to-image",
    "prompt": "A beautiful sunset over mountains"
  }
}
Respuesta:
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_abc123xyz"
  }
}
La API devuelve inmediatamente un taskId. La generación real ocurre en segundo plano.

Paso 2: Obtener resultados

Tienes dos opciones para recibir los resultados:

Opción A: Polling (recomendado para comenzar)

Consulta periódicamente el estado de la tarea:
GET https://api.apixo.ai/api/v1/statusTask/{model}?taskId={taskId}
Respuesta (en progreso):
{
  "data": {
    "taskId": "task_abc123xyz",
    "state": "processing"
  }
}
Respuesta (completada):
{
  "data": {
    "taskId": "task_abc123xyz",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://cdn.apixo.ai/...\"]}",
    "costTime": 12500
  }
}

Opción B: Webhooks (recomendado para producción)

Proporciona un callback_url al enviar:
{
  "request_type": "callback",
  "callback_url": "https://your-server.com/webhook/apixo",
  "input": { ... }
}
APIXO hará POST del resultado a tu URL cuando la tarea se complete. Consulta Webhooks para detalles de implementación.

Estados de la tarea

EstadoDescripción
pendingTarea en cola, esperando iniciar
processingLa tarea se está procesando
successTarea completada correctamente
failedTarea fallida (consulta failMsg)

Buenas prácticas de polling

  1. Comienza con intervalos de 3-5 segundos para la mayoría de tareas
  2. Usa backoff exponencial para tareas largas (videos)
  3. Establece un tiempo máximo (ej. 5 minutos)
  4. Gestiona los fallos con lógica de reintento
const pollWithBackoff = async (taskId, maxWait = 300000) => {
  let interval = 3000; // Start at 3s
  const startTime = Date.now();
  
  while (Date.now() - startTime < maxWait) {
    const result = await checkStatus(taskId);
    
    if (result.state === 'success') return result;
    if (result.state === 'failed') throw new Error(result.failMsg);
    
    await sleep(interval);
    interval = Math.min(interval * 1.5, 30000); // Max 30s
  }
  
  throw new Error('Timeout waiting for result');
};

Cuándo usar cada enfoque

EnfoqueIdeal para
PollingIntegraciones simples, apps del cliente, pruebas
WebhooksServidores de producción, apps en tiempo real, alto volumen

Próximos pasos