Запрос статуса и результатов задачи генерации.
Endpoint
GET https://api.apixo.ai/api/v1/statusTask/{model}?taskId={taskId}
Parameters
ID модели, использованный при отправке задачи (например, nano-banana, flux-2).
Bearer token для аутентификации API. Формат: Bearer YOUR_API_KEY
Response
{
"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
}
}
Состояния задачи
| State | Description |
|---|
pending | Задача получена, ожидает обработки |
processing | Задача обрабатывается AI-моделью |
success | Генерация успешно завершена |
failed | Генерация завершилась с ошибкой (см. детали ошибки) |
Поля ответа
Уникальный идентификатор задачи.
Текущее состояние задачи: pending, processing, success или failed.
JSON-строка с массивом resultUrls. Присутствует только при state = success. Парсите через JSON.parse().
Время обработки в миллисекундах. Присутствует только при завершении.
Timestamp создания задачи (Unix миллисекунды).
Timestamp завершения задачи (Unix миллисекунды). Присутствует только при завершении.
Код ошибки. Присутствует только при state = failed.
Читаемое сообщение об ошибке. Присутствует только при state = failed.
State-Specific Responses
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
}
}
Парсинг resultJson:
const result = JSON.parse(data.resultJson);
const urls = result.resultUrls; // Массив URL сгенерированного контента
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 с state: "failed" означает, что сам API-запрос успешен, но задача генерации завершилась с ошибкой. Причина указана в failCode и failMsg. См. Ошибки для всех кодов сбоя.
Result URLs
Массив resultUrls содержит прямые ссылки на сгенерированный контент:
{
"resultUrls": [
"https://cdn.apixo.ai/output/abc123.jpg",
"https://cdn.apixo.ai/output/abc124.jpg"
]
}
Result URLs истекают через 24 часа. Скачивайте и сохраняйте важные результаты своевременно.
Examples
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}')
Polling Example
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')
Error Responses
| Code | Description |
|---|
401 | Недействительный или отсутствующий API key |
404 | Задача не найдена |
429 | Превышен лимит запросов |
См. Ошибки для подробной обработки ошибок.