> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Создание Virtual Environments через API

> Автоматизируйте создание одиночных и Multichain Virtual Environments с помощью REST API Tenderly. Полезно для CI/CD и окружений под каждый PR.

Используйте REST API для создания Virtual Environments из скриптов, CI/CD задач или любого бэкенда. Те же эндпоинты обслуживают панель управления.

Полные схемы запросов и ответов см. в [справочнике REST API](/virtual-environments/rest-api).

## Прежде чем начать

* [Access key от Tenderly](/platform/account/projects/api-tokens). Экспортируйте его как `TENDERLY_ACCESS_KEY` в вашем шелле.
* Слаги вашего аккаунта и проекта, доступные в URL Tenderly Dashboard.

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
export TENDERLY_ACCESS_KEY=# the key you copied
```

## Создание одиночной Virtual Environment

<Steps>
  ### Вызовите API

  Отправьте `POST` на эндпоинт `vnets` с вашей конфигурацией форка и цепочки:

  ```bash title="testnet-create.sh" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  RESPONSE=$(curl --request POST \
    --url https://api.tenderly.co/api/v1/account/me/project/project/vnets \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header "X-Access-Key: ${TENDERLY_ACCESS_KEY}" \
    --data '{
      "slug": "my-staging-testnet-25",
      "display_name": "My Staging TestNet",
      "fork_config":            { "network_id": 1, "block_number": "latest" },
      "virtual_network_config": { "chain_config": { "chain_id": 73571 } },
      "sync_state_config":      { "enabled": false, "commitment_level": "latest" },
      "explorer_page_config":   { "enabled": false, "verification_visibility": "bytecode" }
    }')
  ```

  ### Извлеките Admin RPC URL

  Массив `rpcs` в ответе содержит Admin и Public RPC URL. Извлеките Admin RPC для дальнейшего использования в скрипте:

  ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  ADMIN_RPC=$(echo $RESPONSE | jq -r '.rpcs[] | select(.name == "Admin RPC") | .url')
  ```
</Steps>

## Создание Multichain Virtual Environment

[Multichain Virtual Environment](/virtual-environments/multichain/overview) создаётся одним вызовом через эндпоинт `multivnets`. Все сети в вызове группируются под одним `stack_id`, что и делает возможным межцепочечное мостостроение между ними.

```bash title="multivnet-create.sh" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
curl --location 'https://api.tenderly.co/api/v1/account/me/project/project/multivnets' \
  --header 'accept: application/json, text/plain, */*' \
  --header "X-Access-Key: ${TENDERLY_ACCESS_KEY}" \
  --header 'content-type: application/json' \
  --data '{
    "vnets": [
      {
        "slug": "mainnet-staging",
        "fork_config":            { "network_id": 1,     "block_number": "latest" },
        "virtual_network_config": { "chain_config": { "chain_id": 1 } }
      },
      {
        "slug": "arbitrum-staging",
        "fork_config":            { "network_id": 42161, "block_number": "latest" },
        "virtual_network_config": { "chain_config": { "chain_id": 42161 } }
      },
      {
        "slug": "base-staging",
        "fork_config":            { "network_id": 8453,  "block_number": "latest" },
        "virtual_network_config": { "chain_config": { "chain_id": 8453 } }
      }
    ]
  }'
```

Каждая запись в массиве `vnets` создаёт одну сеть внутри Multichain Virtual Environment. Ответ возвращает `stack_id` и массив объектов Virtual Environment, каждый со своими RPC-эндпоинтами.

Схему по полям см. в [справочнике REST API](/virtual-environments/rest-api#create-a-multichain-virtual-environment).

## Дальнейшие шаги

* [Настройте GitHub Actions с Foundry](/virtual-environments/ci-cd/github-actions-foundry) или [Hardhat](/virtual-environments/ci-cd/github-actions-hardhat), чтобы разворачивать Virtual Environments для каждого pull request.
* [Стейджинг контрактов](/virtual-environments/ci-cd/stage-contracts) в только что созданной Virtual Environment.
* Просмотрите полный [справочник REST API](/virtual-environments/rest-api).
