---
title: Тестовый режим
description: Песочница Clipia API — ключ clipia_test_ проходит весь цикл submit, status, result и вебхук без списания кредитов и возвращает готовый образец.
icon: FlaskConical
---

Тестовый режим (песочница) нужен, чтобы отладить интеграцию — отправку, опрос, разбор результата, вебхуки и проверку подписи — **без списания кредитов** и без реальной генерации. Им пользуется любой ключ с префиксом `clipia_test_`: отправка сразу возвращает завершённую задачу с фиксированным образцом.

## Как включить

1. Откройте [консоль разработчика](/ru/developer), вкладка **API-ключи** → **Создать ключ**.
2. Выберите тестовую среду. Ключ получит префикс `clipia_test_`.
3. Используйте его так же, как боевой, в любом из [поддерживаемых заголовков](/ru/docs/getting-started/authentication).

Чтобы перейти на реальную генерацию, замените ключ на `clipia_live_` — код менять не нужно. Покупка кредитов для тестового ключа не требуется.

## Как ведёт себя песочница

- **Кредиты не списываются.** Баланс не меняется, даже если он нулевой.
- **Реальная генерация не запускается.** Задача не попадает в очередь моделей.
- **Результат готов сразу.** Отправка возвращает `status: COMPLETED` и `queue_position: 0`.
- **Результат — фиксированный образец** на `media.clipia.ai`, своего типа для изображений, видео и аудио.
- **`cost` считается, но не списывается.** Это цена, которую та же задача стоила бы на боевом ключе.
- **Вебхук приходит.** Если передан `webhook_url`, доставка подписана так же, как в боевом режиме, поэтому можно проверить обработчик и подпись. Доставки ограничены: не больше одной в минуту на ключ, остальные не создаются, а неудачная доставка повторяется не дальше трёх попыток.
- **Запись хранится 24 часа.** Статус и результат тестовой задачи можно запросить в течение суток.
- **Лимиты и идемпотентность отправки генераций действуют** так же, как на боевом ключе.
- **Проигнорированные параметры видны так же.** Ключ `input`, который модель не применит, возвращается в [`warnings`](/ru/docs/api-reference/submit#warnings), как на боевом ключе; в MCP такой вызов отклоняется.
- **LLM-чат** на тестовом ключе возвращает заготовленный ответ со стоимостью 0. Диапазоны параметров (`temperature`, `top_p`, `n`, размер `tools`, `max_tokens`) проверяются как на боевом ключе; модель и `messages` не проверяются, а `Idempotency-Key` не даёт повторного ответа.

## Пример

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

```bash
# CLIPIA_KEY=clipia_test_...
curl -X POST https://api.clipia.ai/v1/models/nano-banana-2 \
  -H "Authorization: Bearer $CLIPIA_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "input": { "prompt": "a sunset over mountains, cinematic" } }'
```

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

```ts
import { createClient } from "clipia-ai";

// CLIPIA_KEY=clipia_test_...
const clipia = createClient({ apiKey: process.env.CLIPIA_KEY! });

const job = await clipia.queue.submit("nano-banana-2", {
  input: { prompt: "a sunset over mountains, cinematic" },
});

console.log(job.status); // "COMPLETED"
```

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

```python
import os
from clipia import Clipia

# CLIPIA_KEY=clipia_test_...
clipia = Clipia(api_key=os.environ["CLIPIA_KEY"])

job = clipia.submit("nano-banana-2", {"prompt": "a sunset over mountains, cinematic"})

print(job.status)  # "COMPLETED"
```

</Tab>
</Tabs>

```json
{
  "request_id": "9c2f7a10-3e44-4b1a-bb9d-77e5c0a1d2e3",
  "status": "COMPLETED",
  "queue_position": 0,
  "status_url":   "https://api.clipia.ai/v1/requests/9c2f7a10-.../status",
  "response_url": "https://api.clipia.ai/v1/requests/9c2f7a10-...",
  "cost": 12
}
```

Результат забирается так же, как в боевом режиме:

```bash
curl https://api.clipia.ai/v1/requests/9c2f7a10-... \
  -H "Authorization: Bearer $CLIPIA_KEY"
```

```json
{
  "request_id": "9c2f7a10-...",
  "status": "COMPLETED",
  "model": "nano-banana-2",
  "output": {
    "images": [
      {
        "url": "https://media.clipia.ai/sandbox/v1/sample-image.png",
        "original_url": "https://media.clipia.ai/sandbox/v1/sample-image.png"
      }
    ]
  },
  "cost": 12,
  "created_at": "2026-10-09T12:00:00Z",
  "completed_at": "2026-10-09T12:00:00Z"
}
```

## Образцы

| Тип модели | `output` |
|------------|----------|
| изображение | `images: [{ url: ".../sandbox/v1/sample-image.png", original_url: ".../sandbox/v1/sample-image.png" }]` |
| видео | `video: { url: ".../sandbox/v1/sample-video.mp4" }` |
| аудио | `audio: { url: ".../sandbox/v1/sample-audio.mp3", format: "mp3" }` |

<Callout type="info" title="Чем образец отличается от боевого ответа">
Образцы одинаковы для всех запросов одного типа: они проверяют ваш код, а не качество модели. Форма `output` почти та же, что в бою: полей `width`, `height` и `duration` нет ни в песочнице, ни в боевом ответе — размеры читайте из самого файла. У видео в песочнице нет необязательного `thumbnail_url`: кадра-превью для образца на CDN нет. У аудио в песочнице только `audio`, без массива `audios`. Подробнее — в разделе [«Результат»](/ru/docs/api-reference/result).
</Callout>
