---
title: Результат генерации
description: "GET /v1/requests/{request_id} — забрать результат."
---

Заберите готовый результат генерации с ссылками на медиа.

## Песочница

<ApiPlayground path="/v1/requests/{request_id}" method="get" />

`GET /v1/requests/:id` возвращает результат генерации с полем `output` (код `200`), когда статус терминальный (`COMPLETED` / `FAILED` / `CANCELED`), либо `202` пока запрос ещё в очереди или выполняется. Все медиа-URL ведут на CDN `media.clipia.ai`.

<Method name="GET" path="/v1/requests/:id" />

## Запрос

<TypeTable
  type={{
    id: { type: 'string', description: 'Идентификатор запроса (request_id, uuid), полученный при submit.', required: true }
  }}
/>

<Tabs items={['cURL', 'TypeScript', 'Python']}>
<Tab value="cURL">

```bash
curl https://api.clipia.ai/v1/requests/764cabcf-b745-4b3e-ae38-1200304cf45b \
  -H "Authorization: Bearer $CLIPIA_KEY"
```

</Tab>
<Tab value="TypeScript">

```ts
const result = await clipia.queue.result('764cabcf-b745-4b3e-ae38-1200304cf45b');

// Пока генерация выполняется, API отдаёт 202 → result.pending === true.
if (result.pending) {
  console.log('ещё в работе:', result.status);
} else {
  console.log(result.output?.images?.[0]?.url);
}
```

</Tab>
<Tab value="Python">

```python
result = client.result("764cabcf-b745-4b3e-ae38-1200304cf45b")

# Пока генерация выполняется, API отдаёт 202 → result.pending == True.
if result.pending:
    print("ещё в работе:", result.status)
else:
    print(result.output["images"][0]["url"])
```

</Tab>
</Tabs>

## Результат для изображения

```json
{
  "request_id": "764cabcf-b745-4b3e-ae38-1200304cf45b",
  "status": "COMPLETED",
  "model": "nano-banana-2",
  "output": {
    "images": [
      { "url": "https://media.clipia.ai/works/8f3a1c7e.png", "width": 1024, "height": 1024 }
    ]
  },
  "cost": 12,
  "created_at": "2026-06-01T12:00:00Z",
  "completed_at": "2026-06-01T12:00:18Z"
}
```

Для изображений `output.images` — массив объектов с полями `url`, `width`, `height`. Каждый элемент содержит ссылку на готовый кадр; если модель отдаёт исходник полного качества, он доступен в `original_url`.

## Результат для видео

```json
{
  "request_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
  "status": "COMPLETED",
  "model": "seedance-2-fast-i2v",
  "output": {
    "video": {
      "url": "https://media.clipia.ai/works/a1b2c3d4.mp4",
      "width": 1280,
      "height": 720,
      "duration": 4
    }
  },
  "cost": 40,
  "created_at": "2026-06-01T12:00:00Z",
  "completed_at": "2026-06-01T12:00:42Z"
}
```

Для видео `output.video` — объект с полями `url`, `width`, `height`, `duration`.

## Поля ответа

<TypeTable
  type={{
    request_id: { type: 'string', description: 'Идентификатор запроса генерации (uuid)' },
    status: { type: 'string', description: 'Терминальный статус: COMPLETED, FAILED или CANCELED' },
    model: { type: 'string', description: 'Slug модели, выполнившей генерацию' },
    output: { type: 'object', description: 'Результат: images: [{ url, width, height }] или video: { url, width, height, duration }' },
    cost: { type: 'number', description: 'Итоговая стоимость в кредитах (0 при FAILED)' },
    created_at: { type: 'string', description: 'Время создания запроса (ISO 8601)' },
    completed_at: { type: 'string', description: 'Время завершения генерации (ISO 8601)' },
    error: { type: 'object', description: 'Санитизированная ошибка { code, message } — только при status = FAILED' }
  }}
/>

## Коды ответа

| HTTP | Когда | Тело |
|------|-------|------|
| `200` | `COMPLETED` | результат с `output` |
| `200` | `FAILED` | `{ request_id, status: "FAILED", error: { code, message }, cost: 0, ... }` |
| `200` | `CANCELED` | терминальный ответ со статусом `CANCELED` |
| `202` | `IN_QUEUE` / `IN_PROGRESS` | текущий статус — продолжайте опрашивать |
| `404` | неизвестный `request_id` | envelope ошибки |

<Callout type="info" title="202 — это нормально">
Код `202` приходит только для нетерминальных статусов: задача ещё выполняется. Терминальные `FAILED` и `CANCELED` — это финальный ответ и приходят с кодом `200`. При `FAILED` кредиты возвращены полностью, а `error` санитизирован.
</Callout>
