Base URLМодель в примерах
Опрос и повтор
GET/v1/tasks/{id}
Опрос.
Задача не успела заwait: ответ 202 со status queued или in_progress, с poll_after в теле и Retry-After в заголовке. Спрашивайте GET /v1/tasks/{id} через это число секунд, пока status не станет completed или failed. Пример продолжает пример создания: $TASK_ID и task оттуда. Опрос не бесконечен: к deadline_at задача гарантированно завершается, после него это failed с task_expired. GET читает задачу из базы и к провайдеру не ходит; лимиты частоты на опрос не распространяются.Повтор без двойной оплаты.
Любой ответ 5xx, обрыв или не-JSON наPOST /v1/tasks значит «неизвестно, создана ли задача». Повторите тот же запрос с тем же id: вы получите ту же задачу (200 или 202 по её состоянию), а не ошибку и не вторую оплату. Два одновременных запроса с одним id, например двойной клик, дают одну задачу и один резерв.- Тот же запрос
- Совпадает тело без
idиwait: kind, model, input, options, metadata. Порядок ключей и форма чисел не важны. Значения по умолчанию в сравнение не подставляются:count: 1и отсутствиеcountразные запросы - Другой запрос с тем же id409
- Ответ 409
task_id_conflict, даже если новое тело с ошибкой. То же, если id занят задачей другого аккаунта или запросом чата - Цена
- Не сравнивается: повтор возвращает ту же задачу по старой цене. Новая задача списывается по текущей
- Ответ 400, 401, 402, 404, 429
- Задача не создана, id свободен: можно повторить с ним же. Повторить
failed: новый id - Без id
- Повтор после обрыва создаст вторую задачу. Для безопасных повторов ставьте свой случайный UUID, v4 или v7
1curl https://api.polyapi.ru/v1/tasks/$TASK_ID \
2 -H "Authorization: Bearer $POLYAPI_KEY"
{
"id": "0f6e4c1a-8a7b-4d2e-9c55-3b1f2a7d9e10",
"kind": "image/generate",
"model": "google/gemini-3-pro-image",
"status": "in_progress",
"events": [
{
"type": "task.queued",
"at": "2026-11-07T12:00:00Z"
},
{
"type": "attempt.started",
"at": "2026-11-07T12:00:00Z",
"attempt": 1
}
],
"usage": {
"reserved": {
"amount": "17.18",
"currency": "rub"
}
},
"deadline_at": "2026-11-07T12:07:30Z",
"poll_after": 2
}
Хранение.
Файлы хранятся 30 дней с завершения задачи, срок вretained_until каждой части. Ссылка url выдаётся заново при каждом чтении задачи; в пределах одного часа UTC она та же, а expires_at, её срок, приходится на начало часа через один, то есть через 1–2 часа. Хранить ссылку не нужно, достаточно id. После retained_until часть остаётся с метаданными, без url и expires_at, с "expired": true.Задача читается, пока живут её события: 90 дней после последнего. Позже 410 task_purged, и в списке её нет. POST с id удалённой задачи и тем же запросом тоже даёт 410, а с другим запросом 409 task_id_conflict: id занять снова нельзя. Задачи другого аккаунта не видны: для них 404 not_found. Id не в форме UUID: 400.
МирVisaMastercardСБПT-PayТ-Банк