Skip to content

Obtener el resultado de una tarea

Después de enviar una tarea asíncrona de imagen o vídeo, Pixapi devuelve un id. Usa ese identificador con GET /v1/tasks/{id} para consultar el estado, el progreso y las URL finales del contenido.

Para saber cómo enviar tareas asíncronas, consulta Tareas asíncronas de medios.

Endpoint

MétodoRutaDescripción
GET/v1/tasks/{id}Consulta el estado y el resultado de la tarea

Autenticación: Authorization: Bearer <API_KEY>

Solo puedes consultar tareas creadas con la misma clave de API o cuenta. Los ID desconocidos devuelven 404.

Petición

bash
curl --request GET \
  --url 'https://api.pixapi.ai/v1/tasks/task_01KPQ7J7DWB7QZ3WCEK3YVPBRA' \
  --header 'Authorization: Bearer $PIXAPI_KEY'

Parámetro de la ruta:

CampoTipoObligatorioDescripción
idstringID devuelto al enviar la tarea asíncrona (por ejemplo, task_...).

Valores de estado

EstadoSignificado
submittedPixapi aceptó la tarea y la puso en cola.
processingLa generación está en curso en el proveedor.
completedFinalizó correctamente. Lee result.data[].url.
failedFinalizó con un error. Lee error.

Consulta hasta que status sea completed o failed. Mientras la tarea esté en curso, result será null.

Respuesta durante el procesamiento

json
{
  "id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
  "status": "processing",
  "credits_cost": 64,
  "model": "veo3.1-fast",
  "progress": 40,
  "result": null,
  "created": 1703884800
}

Respuesta completada

json
{
  "id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
  "status": "completed",
  "credits_cost": 64,
  "model": "veo3.1-fast",
  "progress": 100,
  "result": {
    "type": "video",
    "data": [
      {
        "url": "https://cdn.example.com/output.mp4"
      }
    ]
  },
  "created": 1703884800,
  "completed": 1703884880
}

En las tareas de imagen, result.type es image y cada elemento de data[] también expone una url pública.

Respuesta fallida

json
{
  "id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
  "status": "failed",
  "credits_cost": 64,
  "model": "veo3.1-fast",
  "progress": 100,
  "error": {
    "code": 400,
    "message": "Upstream generation failed",
    "type": "api_error"
  },
  "created": 1703884800,
  "completed": 1703884820
}

Campos de la respuesta

CampoDescripción
idID de la tarea.
statussubmitted, processing, completed o failed.
credits_costCréditos asociados a la tarea.
modelID del modelo usado al enviar la tarea.
progressNúmero entero de 0 a 100.
resultPresente al completarse; null durante el procesamiento.
result.typeimage o video.
result.dataElementos de salida. Usa result.data[0].url para el archivo principal.
errorPresente cuando status es failed.
createdMarca de tiempo Unix (segundos) de creación de la tarea.
completedMarca de tiempo Unix (segundos) en la que la tarea llegó a un estado final.

Ejemplo de consulta periódica

bash
TASK_ID="task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"

while true; do
  RESP=$(curl -s \
    -H "Authorization: Bearer $PIXAPI_KEY" \
    "https://api.pixapi.ai/v1/tasks/$TASK_ID")
  STATUS=$(printf '%s' "$RESP" | python3 -c 'import sys,json; print(json.load(sys.stdin)["status"])')
  echo "$STATUS"
  case "$STATUS" in
    completed|failed) printf '%s\n' "$RESP"; break ;;
  esac
  sleep 3
done
js
async function waitForTask(taskId) {
  for (;;) {
    const response = await fetch(`https://api.pixapi.ai/v1/tasks/${taskId}`, {
      headers: { Authorization: `Bearer ${process.env.PIXAPI_KEY}` },
    });
    if (!response.ok) throw new Error(await response.text());
    const task = await response.json();
    if (task.status === 'completed' || task.status === 'failed') return task;
    await new Promise((resolve) => setTimeout(resolve, 3000));
  }
}

const task = await waitForTask('task_01KPQ7J7DWB7QZ3WCEK3YVPBRA');
if (task.status === 'completed') {
  console.log(task.result.data[0].url);
} else {
  console.error(task.error);
}

Notas de integración

  1. Guarda el id devuelto por el envío asíncrono.
  2. Consulta GET /v1/tasks/{id} desde tu backend, aumentando el intervalo cuando sea necesario (por ejemplo, cada 2 a 5 segundos).
  3. Detente cuando status sea completed o failed.
  4. Guarda result.data[].url (o error) en tu propio almacenamiento.

No expongas tu clave de API de Pixapi en código de consulta que se ejecute únicamente en el navegador.