# Тестирование в sandbox без списания кредитов

Source: https://help.didit.me/ru/getting-started/sandbox-and-testing
Updated: 2026-10-12

Включите Sandbox под названием приложения и создайте тестовый API-ключ: проверки имитируются, плата не взимается, результат можно выбрать.

Переключитесь в **Sandbox** под названием приложения, создайте тестовый API-ключ и используйте его. Проверки имитируются, плата не взимается, результат можно выбрать.

Sandbox в Didit - это аналог тестовых карт платёжного провайдера: он позволяет воспроизвести любой результат верификации по требованию, без обращения к реальным провайдерам, без обработки реальных персональных данных и без списания средств с баланса.

## Отдельная тестовая среда

Sandbox является общим тестовым приложением организации. Данные, ключи, вебхуки и списки отделены от Live. Полоса вверху каждой страницы обозначает тестовую среду.

![Страница API-ключей в консоли Didit, где каждый ключ принадлежит одному приложению](https://help.didit.me/screenshots/api-keys-light.webp)

*Ключи привязаны к приложению, поэтому sandbox-ключ никогда не получит доступ к боевым данным.*

1. **Переключитесь в Sandbox**

   Нажмите **Sandbox** под названием приложения. Перед возвратом в **Live** проверьте публикацию процесса, боевой ключ или ссылку, вебхук, оплату и срок хранения; затем подтвердите переход или останьтесь в Sandbox.

2. **Создайте тестовый ключ**

   Откройте **Разработчики → API-ключи** и выберите Sandbox при создании. Ключ определяет среду: боевой ключ не создаёт тестовую сессию.

3. **Создайте или скопируйте процесс**

   У Sandbox свои процессы. Создайте тестовый процесс или скопируйте его из Live.

4. **Создавайте сессии как обычно**

   Тот же эндпоинт, тот же путь в коде. Единственное отличие - какой ключ вы отправляете.

> **Note:** Если **Sandbox** недоступен, у организации ещё нет тестового приложения. Попросите поддержку включить его; это настройка учётной записи.

## Что меняет sandbox, а что нет

| | Sandbox | Live |
|---|---|---|
| Внешние провайдеры | Все замоканы - ни один сторонний сервис никогда не вызывается | Реальные |
| Тарификация | Никогда не тарифицируется; проверка баланса пропускается | Тарифицируется за каждую завершённую функцию |
| Лимит создания сессий | 500 за 24 часа на приложение | Ваш баланс |
| Тело webhook | `"environment": "sandbox"` | `"environment": "live"` |
| Извлечённые данные и статус | Смоделированы выбранным сценарием | Получены из реальной съёмки |
| Захваченные медиафайлы | **Сохраняются по-настоящему**, точно как в боевой сессии | Сохраняются |

> **Warning:** Sandbox сохраняет захваченные медиафайлы - документы, селфи, видео liveness,
> файлы подтверждения адреса - точно так же, как это сделала бы боевая сессия.
> *Результат* симулируется, но загрузка происходит по-настоящему, поэтому
> используйте тестовые документы и тестовые данные, которые предлагает флоу, а не
> реальный документ, удостоверяющий личность, или реальные персональные данные.

Поскольку результат никогда не зависит от самой картинки, намеренно плохое фото не приведёт к отказу в sandbox. Результат определяет сценарий.

## Выбор результата

Передайте слаг сценария в параметре `sandbox_scenario` при создании сессии, либо позвольте тестировщику выбрать его самому: в размещённом флоу sandbox-сессии показывают **выбор сценария** внутри карточки перед началом съёмки, а также ряд образцов документов под компонентом загрузки и постоянный баннер "только тестовые данные".

Сценарии покрывают именно те результаты, под которые вам действительно нужно тестировать код:

| Что протестировать | Сценарий |
|---|---|
| Всё одобряется | `approve` |
| Просроченный документ | `decline_document_expired` |
| Нечитаемый документ | `decline_could_not_recognize_document` |
| Ошибка контрольной суммы MRZ | `decline_mrz_validation` |
| Ниже минимального возраста | `decline_minimum_age` |
| Слишком низкое сравнение лиц | `decline_face_match_low_similarity` |
| Атака имитации при liveness | `decline_liveness_attack` |
| Срабатывание AML по санкциям / PEP | `decline_aml_hit` |
| Заблокированный IP-адрес | `decline_ip_blocklist` |
| Несовпадение адреса при подтверждении адреса | `decline_poa_address_mismatch` |
| Чип NFC не прошёл проверку целостности | `decline_nfc_chip_not_verified` |
| Проверка по базам данных ничего не нашла | `decline_database_no_match` |
| Требуется ручная проверка (AML) | `review_aml_possible_match` |
| Требуется ручная проверка (пограничное сравнение лиц) | `review_face_match_borderline` |
| Требуется ручная проверка (частичное совпадение адреса) | `review_poa_partial_match` |
| Несовпадение с реестром KYB | `decline_kyb_registry_mismatch` |

Сценарии `review_*` существуют, чтобы вы могли проверить весь путь ручной проверки целиком - очередь на проверку в консоли, webhook со статусом `In Review`, одобрение или запрос повторной отправки проверяющим - без необходимости данных, ведущих к отказу.

> **Tip:** Актуальный каталог сценариев и магических значений отдаёт сам API по адресу
> `GET /v1/sandbox/scenarios/`. Если какой-то слаг здесь выглядит устаревшим,
> доверяйте эндпоинту. Полный справочник: [тестирование в sandbox](https://docs.didit.me/integration/sandbox-testing).

## Как отличить одно от другого в собственном коде

Каждый webhook несёт поле `environment` - `"sandbox"` или `"live"`. Ветвите логику по нему, а не пытайтесь определить окружение по ключу - и вы никогда не перепутаете тестовую сессию с реальным клиентом.

## Чего sandbox не делает

- Не возвращает реальные данные реестра для реальной компании. KYB в sandbox использует замоканные ответы реестра.
- Не отправляет реальные SMS или email. Верификация телефона и email замокана, поэтому по sandbox нельзя оценить реальную доставляемость сообщений.
- Не расходует ваш месячный кредит тарифа - а значит, прогон в sandbox ничего не говорит об оставшемся кредите.

## Если вам нужны реальные тестовые верификации

Некоторые вещи действительно требуют реального вызова - например, проверить, что сервис работы с базой данных конкретной страны подключён именно для вас, или подтвердить доставку SMS конкретному оператору. Для этого нужно небольшое пополнение боевого приложения, а не sandbox. Прежде чем тратить на это средства, спросите поддержку - так они смогут заранее подтвердить, что нужный сервис действительно включён в вашем аккаунте.
