Saltar al contenido principal
Consulta el estado y los resultados de una tarea de generación.

Endpoint

GET https://api.apixo.ai/api/v1/statusTask/{model}?taskId={taskId}

Parámetros

model
string
requerido
ID del modelo usado al enviar la tarea (ej. nano-banana, flux-2).
taskId
string
requerido
ID de tarea devuelto por el endpoint Generar tarea.

Headers

Authorization
string
requerido
Token Bearer para autenticación API. Formato: Bearer YOUR_API_KEY

Respuesta

{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_abc123xyz789",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://cdn.apixo.ai/output/abc123.jpg\"]}",
    "costTime": 12500,
    "createTime": 1704067200000,
    "completeTime": 1704067212500
  }
}

Estados de la tarea

EstadoDescripción
pendingTarea recibida, esperando procesamiento
processingLa tarea está siendo procesada por el modelo de IA
successGeneración completada correctamente
failedGeneración fallida (ver detalles del error)

Campos de respuesta

taskId
string
Identificador único de la tarea.
state
string
Estado actual: pending, processing, success o failed.
resultJson
string
Cadena JSON que contiene el array resultUrls. Solo está presente cuando state es success. Parsear con JSON.parse().
costTime
integer
Tiempo de procesamiento en milisegundos. Solo presente al completar.
createTime
integer
Marca de tiempo de creación (milisegundos Unix).
completeTime
integer
Marca de tiempo de finalización (milisegundos Unix). Solo presente al completar.
failCode
string
Código de error. Solo presente cuando state es failed.
failMsg
string
Mensaje de error legible. Solo presente cuando state es failed.

Respuestas según estado

Pending / Processing

{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_abc123xyz789",
    "state": "processing",
    "createTime": 1704067200000
  }
}

Success

{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_abc123xyz789",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://cdn.apixo.ai/output/abc123.jpg\"]}",
    "costTime": 12500,
    "createTime": 1704067200000,
    "completeTime": 1704067212500
  }
}
Parsear resultJson:
const result = JSON.parse(data.resultJson);
const urls = result.resultUrls; // Array de URLs de contenido generado

Failed

{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_abc123xyz789",
    "state": "failed",
    "failCode": "CONTENT_VIOLATION",
    "failMsg": "Content violates usage policy",
    "createTime": 1704067200000,
    "completeTime": 1704067205000
  }
}
HTTP 200 con state: "failed" significa que la solicitud API tuvo éxito pero la tarea falló. Consulta failCode y failMsg para el motivo. Ver Errores para todos los códigos de fallo.

URLs de resultados

El array resultUrls contiene enlaces directos al contenido generado:
{
  "resultUrls": [
    "https://cdn.apixo.ai/output/abc123.jpg",
    "https://cdn.apixo.ai/output/abc124.jpg"
  ]
}
Las URLs de resultado expiran tras 24 horas. Descarga y almacena las salidas importantes con prontitud.

Ejemplos

curl "https://api.apixo.ai/api/v1/statusTask/nano-banana?taskId=task_abc123" \
  -H "Authorization: Bearer YOUR_API_KEY"

Ejemplo de polling

async function waitForResult(model, taskId, apiKey) {
  const maxAttempts = 60;
  const pollInterval = 3000; // 3 seconds
  
  for (let i = 0; i < maxAttempts; i++) {
    const response = await fetch(
      `https://api.apixo.ai/api/v1/statusTask/${model}?taskId=${taskId}`,
      { headers: { 'Authorization': `Bearer ${apiKey}` } }
    );
    
    const { data } = await response.json();
    
    switch (data.state) {
      case 'success':
        return JSON.parse(data.resultJson).resultUrls;
      case 'failed':
        throw new Error(`${data.failCode}: ${data.failMsg}`);
      default:
        await new Promise(r => setTimeout(r, pollInterval));
    }
  }
  
  throw new Error('Timeout waiting for result');
}

Respuestas de error

CodeDescripción
401Clave API inválida o faltante
404Tarea no encontrada
429Límite de tasa excedido
Consulta Errores para el manejo detallado de errores.