Apariencia
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étodo | Ruta | Descripció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:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | ID devuelto al enviar la tarea asíncrona (por ejemplo, task_...). |
Valores de estado
| Estado | Significado |
|---|---|
submitted | Pixapi aceptó la tarea y la puso en cola. |
processing | La generación está en curso en el proveedor. |
completed | Finalizó correctamente. Lee result.data[].url. |
failed | Finalizó 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
| Campo | Descripción |
|---|---|
id | ID de la tarea. |
status | submitted, processing, completed o failed. |
credits_cost | Créditos asociados a la tarea. |
model | ID del modelo usado al enviar la tarea. |
progress | Número entero de 0 a 100. |
result | Presente al completarse; null durante el procesamiento. |
result.type | image o video. |
result.data | Elementos de salida. Usa result.data[0].url para el archivo principal. |
error | Presente cuando status es failed. |
created | Marca de tiempo Unix (segundos) de creación de la tarea. |
completed | Marca 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
donejs
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
- Guarda el
iddevuelto por el envío asíncrono. - Consulta
GET /v1/tasks/{id}desde tu backend, aumentando el intervalo cuando sea necesario (por ejemplo, cada 2 a 5 segundos). - Detente cuando
statusseacompletedofailed. - Guarda
result.data[].url(oerror) en tu propio almacenamiento.
No expongas tu clave de API de Pixapi en código de consulta que se ejecute únicamente en el navegador.
