Документация

Формат ответа

Оба запроса отвечают одним конвертом: {"code":…,"msg":…,"data":…}, где code повторяет HTTP-статус, а полезное лежит в data. Тот же конверт приходит и при отказе — разбирать две формы ответа не нужно.

/api/v1/jobs/createTask

ПолеТипЧто в нём
data.taskId строка Номер задачи. Больше в ответе ничего нет и быть не может — работа только началась.

/api/v1/jobs/recordInfo

ПолеТипЧто в нём
data.taskId строка Номер задачи — тот же, что вернул createTask.
data.model строка Имя модели в том виде, в каком его прислал клиент.
data.state строка Состояние задачи: waiting, queuing, generating, success или fail.
data.param строка Параметры, с которыми задача создана, — строкой JSON внутри JSON.
data.resultJson строка Результат строкой JSON внутри JSON: {"resultUrls":["https://…"]} — разбирается вторым разбором. До завершения задачи — пустая строка.
data.failCode строка Код неудачи из таблицы ниже. У остальных задач — пустая строка.
data.failMsg строка Причина неудачи словами. Иначе пустая строка.
data.costTime число Сколько задача заняла, миллисекунды. Пока не завершилась — null.
data.completeTime число Когда завершилась, миллисекунды эпохи Unix. Пока не завершилась — null.
data.createTime число Когда создана, миллисекунды эпохи Unix.
data.updateTime число Когда состояние менялось в последний раз, миллисекунды эпохи Unix.
data.creditsConsumed число Сколько кредитов списано. Ноль, пока задача не завершилась, и ноль у неудачной.

Где лежит ссылка на файл

Поле resultJson приходит строкой, а не объектом: внутри неё лежит ещё один JSON вида {"resultUrls":["https://…"]}. Разобрать его нужно вторым вызовом разбора JSON — json.loads в Python, fromjson в jq, JSON.parse в JavaScript. То же и у поля param, в котором лежат параметры создания задачи.

result.py
import json

record = answer["data"]                     # конверт ответа recordInfo
result = json.loads(record["resultJson"])   # разбор второй: строка → объект
url = result["resultUrls"][0]               # ссылка на готовый файл

Ссылка живёт 14 дней: файлы результата хранит поставщик, и дольше этого срока адрес просто перестаёт открываться. Если файл нужен дальше — скачивайте его к себе сразу после того, как задача пришла в состояние success.

Тот же разбор в готовом виде, вместе с ожиданием задачи, показан в разделе Как устроена задача.