Sprawdź status i wyniki zadania generowania.
Endpoint
GET https://api.apixo.ai/api/v1/statusTask/{model}?taskId={taskId}
Parametry
Identyfikator modelu użyty przy zgłaszaniu zadania (np. nano-banana, flux-2).
Nagłówki
Token Bearer do uwierzytelniania API. Format: Bearer YOUR_API_KEY
Odpowiedź
{
"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
}
}
Stany zadania
| State | Opis |
|---|
pending | Zadanie otrzymane, oczekuje na przetworzenie |
processing | Zadanie jest przetwarzane przez model AI |
success | Generowanie zakończone pomyślnie |
failed | Generowanie nie powiodło się (zobacz szczegóły błędu) |
Pola odpowiedzi
Unikalny identyfikator zadania.
Aktualny stan zadania: pending, processing, success lub failed.
Ciąg JSON zawierający tablicę resultUrls. Tylko gdy state to success. Parsuj przez JSON.parse().
Czas przetwarzania w milisekundach. Tylko po zakończeniu.
Znacznik czasu utworzenia zadania (Unix w milisekundach).
Znacznik czasu zakończenia zadania (Unix w milisekundach). Tylko po zakończeniu.
Kod błędu. Tylko gdy state to failed.
Czytelna wiadomość błędu. Tylko gdy state to failed.
Odpowiedzi w zależności od stanu
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
}
}
Parsowanie resultJson:
const result = JSON.parse(data.resultJson);
const urls = result.resultUrls; // Tablica URL-i wygenerowanej treści
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 z state: "failed" oznacza, że żądanie API powiodło się, ale samo zadanie nie. Sprawdź failCode i failMsg dla przyczyny. Wszystkie kody błędów patrz Błędy.
URL-e wyników
Tablica resultUrls zawiera bezpośrednie linki do wygenerowanej treści:
{
"resultUrls": [
"https://cdn.apixo.ai/output/abc123.jpg",
"https://cdn.apixo.ai/output/abc124.jpg"
]
}
URL-e wyników wygasają po 24 godzinach. Pobierz i zapisz ważne wyniki niezwłocznie.
Przykłady
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}')
Przykład pollingu
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')
Odpowiedzi błędów
| Kod | Opis |
|---|
401 | Nieprawidłowy lub brakujący klucz API |
404 | Zadanie nie znalezione |
429 | Przekroczony limit rate |
Szczegóły obsługi błędów patrz Błędy.