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
ID del modelo usado al enviar la tarea (ej. nano-banana, flux-2).
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
| Estado | Descripción |
|---|
pending | Tarea recibida, esperando procesamiento |
processing | La tarea está siendo procesada por el modelo de IA |
success | Generación completada correctamente |
failed | Generación fallida (ver detalles del error) |
Campos de respuesta
Identificador único de la tarea.
Estado actual: pending, processing, success o failed.
Cadena JSON que contiene el array resultUrls. Solo está presente cuando state es success. Parsear con JSON.parse().
Tiempo de procesamiento en milisegundos. Solo presente al completar.
Marca de tiempo de creación (milisegundos Unix).
Marca de tiempo de finalización (milisegundos Unix). Solo presente al completar.
Código de error. Solo presente cuando state es failed.
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"
const response = await fetch(
'https://api.apixo.ai/api/v1/statusTask/nano-banana?taskId=task_abc123',
{
headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
}
);
const { data } = await response.json();
if (data.state === 'success') {
const urls = JSON.parse(data.resultJson).resultUrls;
console.log('Generated:', urls);
}
import json
response = requests.get(
'https://api.apixo.ai/api/v1/statusTask/nano-banana',
params={'taskId': 'task_abc123'},
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
data = response.json()['data']
if data['state'] == 'success':
urls = json.loads(data['resultJson'])['resultUrls']
print(f'Generated: {urls}')
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');
}
import time
import json
def wait_for_result(model: str, task_id: str, api_key: str) -> list[str]:
max_attempts = 60
poll_interval = 3 # seconds
for _ in range(max_attempts):
response = requests.get(
f'https://api.apixo.ai/api/v1/statusTask/{model}',
params={'taskId': task_id},
headers={'Authorization': f'Bearer {api_key}'},
)
data = response.json()['data']
if data['state'] == 'success':
return json.loads(data['resultJson'])['resultUrls']
elif data['state'] == 'failed':
raise Exception(f"{data['failCode']}: {data['failMsg']}")
time.sleep(poll_interval)
raise Exception('Timeout waiting for result')
Respuestas de error
| Code | Descripción |
|---|
401 | Clave API inválida o faltante |
404 | Tarea no encontrada |
429 | Límite de tasa excedido |
Consulta Errores para el manejo detallado de errores.