# GET /generation

Найдите генерацию своего пространства Router по ID — ее состояние, токены, стоимость и попытки.

`GET /api/v1/generation?id=gen-…` (нужен API-ключ)

Возвращает генерацию пространства Router, которому принадлежит ключ. Содержимое запроса и ответа здесь никогда не возвращается. Генерация другого пространства дает `404`.

## Ответ

```json
{
  "data": {
    "id": "gen-5d0c3b6e-…",
    "model": "google/gemma-3-4b-it",
    "requested_model": "openai/gpt-4o-mini",
    "created_at": "2026-10-28T09:34:12Z",
    "streamed": false,
    "cancelled": false,
    "state": "completed",
    "finish_reason": "stop",
    "usage_source": "upstream_cost",
    "total_cost": 0.0000146,
    "usage": 0.0000146,
    "tokens_prompt": 24,
    "tokens_completion": 14,
    "native_tokens_prompt": 24,
    "native_tokens_completion": 14,
    "native_tokens_reasoning": 0,
    "native_tokens_cached": 0,
    "provider_name": "global",
    "upstream_attempts": [
      { "attempt": 1, "provider": "global", "status": "failed", "billable": false, "http_status": 503 },
      { "attempt": 2, "provider": "global", "status": "succeeded", "billable": true, "http_status": 200 }
    ]
  }
}
```

| Поле                                                                                                  |                                                                                                                                                                                          |
| ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model` / `requested_model`                                                                           | Модель, которая ответила / модель из запроса.                                                                                                                                            |
| `state`                                                                                               | `running`, `completed`, `failed`, `cancelled` или `usage_unknown`.                                                                                                                       |
| `total_cost`, `usage`                                                                                 | Сумма списания в PnP; `null`, пока генерация выполняется.                                                                                                                                |
| `tokens_prompt`, `tokens_completion`                                                                  | Входные и выходные токены.                                                                                                                                                               |
| `native_tokens_prompt`, `native_tokens_completion`, `native_tokens_reasoning`, `native_tokens_cached` | То же по подсчету провайдера, а также токены рассуждений и кешированные токены.                                                                                                          |
| `provider_name`                                                                                       | Регион маршрута, который ответил: `global` или `ru`.                                                                                                                                     |
| `upstream_attempts`                                                                                   | Все попытки с регионом, статусом (`started`, `succeeded`, `partial`, `failed`, `cancelled`, `unknown`) и признаком оплаты.                                                               |
| `usage_source`                                                                                        | Откуда взята стоимость: `upstream_cost` (ее сообщил провайдер), `generation_api`, `computed_usage` (токены × цены) или `estimated` (провайдер не сообщил расход, например после отмены). |

## Пример

```bash
curl -s "https://router.nodul.ru/api/v1/generation?id=gen-5d0c3b6e-…" -H "Authorization: Bearer $NODUL_ROUTER_API_KEY"
```
