# GET /api/v1/jobs/recordInfo

> Статус задачи и результат. Спрашивайте раз в 3–5 секунд, пока state не станет success или fail.

## Запрос

```http
GET https://ai.aimixmedia.site/api/v1/jobs/recordInfo?taskId=<taskId>
Authorization: Bearer <API_KEY>
```

## Параметры

| Параметр | Обязательный | Описание |
|---|---|---|
| `taskId` | да | Номер задачи из createTask |

## Ответ

```json
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_nano-banana-2_1790621023886ca4e4d",
    "model": "nano-banana-2",
    "state": "success",
    "param": "{\"model\":\"nano-banana-2\",\"callBackUrl\":\"\",\"input\":{\"prompt\":\"...\"}}",
    "resultJson": "{\"resultUrls\":[\"https://ai.aimixmedia.site/files/7496aef5292507f51b84cb2cb258d001.png\"]}",
    "failCode": "",
    "failMsg": "",
    "costTime": 104016,
    "completeTime": 1790621127902,
    "createTime": 1790621023886,
    "updateTime": 1790621127902,
    "progress": 100,
    "creditsConsumed": 0.02,
    "costUsd": "0.0200",
    "refunded": false,
    "filesExpired": false,
    "callback": null
  }
}
```

| Поле | Что это |
|---|---|
| `state` | Статус — см. таблицу ниже |
| `resultJson` | При `success` — строка JSON с `resultUrls` (ссылки на файлы, хранятся 30 дней) |
| `failCode`, `failMsg` | Код и текст ошибки при `fail` |
| `creditsConsumed` | Сколько списано, USD (0 после возврата) |
| `refunded` | `true` — деньги вернули (задача не удалась) |
| `callback` | Статус доставки callback, если был `callBackUrl` |
| `costTime`, `createTime`, `completeTime` | Время выполнения и отметки времени, мс |

## Статусы

| state | Что значит |
|---|---|
| `waiting` | Принята, ждёт очереди |
| `queuing` | Передана модели |
| `generating` | Генерируется |
| `success` | Готово ✓ |
| `fail` | Ошибка, деньги возвращены |

Если задача не завершилась за 20 минут, она становится `fail`.

## Примеры

```bash
curl "https://ai.aimixmedia.site/api/v1/jobs/recordInfo?taskId=task_nano-banana-2_1790621023886ca4e4d" \
  -H "Authorization: Bearer $API_KEY"
```

```python
import os, requests

r = requests.get(
    "https://ai.aimixmedia.site/api/v1/jobs/recordInfo",
    params={"taskId": "task_nano-banana-2_1790621023886ca4e4d"},
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
)
print(r.json())  # data.state, data.resultJson
```

```javascript
const r = await fetch("https://ai.aimixmedia.site/api/v1/jobs/recordInfo?taskId=task_nano-banana-2_1790621023886ca4e4d", {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
console.log(await r.json()); // data.state, data.resultJson
```

## Ошибки

| code | error | Когда |
|---|---|---|
| 401 | `unauthorized` | Нет ключа или он неверный |
| 404 | `task_not_found` | Нет такой задачи в вашем аккаунте |
| 422 | `validation_error` | Не передан `taskId` |
