Skip to content
Translated page. The English version is the source of truth.

POST /apiv2/address/rotate

Запрос на ротацию адреса для депозита. Текущий адрес для депозита будет заменен на новый. Запрос помещается в очередь обработки и выполняется автоматически в течение 5 минут.

URL эндпоинта

POST https://netts.io/apiv2/address/rotate

Заголовки запроса

ЗаголовокОбязательныйОписание
Content-TypeДаapplication/json
X-API-KEYДаВаш API-ключ из панели управления Netts
X-Real-IPДаIP-адрес из вашего белого списка

Тело запроса

json
{
    "user_id": 1234,
    "address_type": "web"
}

Параметры

ПараметрТипОбязательныйПо умолчаниюОписание
user_idintegerНетАутентифицированный пользовательID целевого пользователя. Опустите, чтобы сменить собственный адрес. Пользователи-родители могут указать ID своего SUB-пользователя
address_typestringНет"web"Тип адреса для ротации: web или tg

Аутентификация и авторизация

Этот эндпоинт требует как аутентификации, так и авторизации:

  1. Аутентификация: Действующий API-ключ + IP из белого списка (аналогично другим эндпоинтам)
  2. Авторизация:
    • Ротация собственного адреса — разрешена всегда
    • Ротация адреса вашего SUB-пользователя — разрешена для пользователей-родителей
    • Ротация адреса другого пользователя — отклоняется с ошибкой 403 Forbidden

Примеры запросов

cURL

bash
# Rotate own address
curl -X POST https://netts.io/apiv2/address/rotate \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -d '{"address_type": "web"}'
bash
# Rotate SUB-user's address (parent user only)
curl -X POST https://netts.io/apiv2/address/rotate \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -d '{"user_id": 1234, "address_type": "web"}'

Python

python
import requests

url = "https://netts.io/apiv2/address/rotate"
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip"
}

# Rotate own address
response = requests.post(url, headers=headers, json={"address_type": "web"})
data = response.json()

if response.status_code == 200:
    print(f"Rotation ID: {data['rotation_id']}")
    print(f"Old Address: {data['old_address']}")
    print(f"Status: {data['status']}")
    print(f"Estimated Completion: {data['estimated_completion']}")
else:
    print(f"Error: {data.get('detail', 'Unknown error')}")

Node.js

javascript
const axios = require('axios');

async function rotateAddress(apiKey, whitelistedIp, addressType = 'web', userId = null) {
    const url = 'https://netts.io/apiv2/address/rotate';
    const body = { address_type: addressType };
    if (userId) body.user_id = userId;

    const response = await axios.post(url, body, {
        headers: {
            'Content-Type': 'application/json',
            'X-API-KEY': apiKey,
            'X-Real-IP': whitelistedIp
        },
        timeout: 30000
    });

    const data = response.data;
    console.log(`Rotation ID: ${data.rotation_id}`);
    console.log(`Status: ${data.status}`);
    console.log(`Old Address: ${data.old_address}`);
    return data;
}

// Rotate own address
rotateAddress('your_api_key', 'your_whitelisted_ip')
    .then(result => console.log('Submitted:', result.message))
    .catch(err => console.error('Error:', err.response?.data || err.message));

PHP

php
<?php
$url = 'https://netts.io/apiv2/address/rotate';

$data = json_encode([
    'address_type' => 'web'
]);

$options = [
    'http' => [
        'header' => implode("\r\n", [
            "Content-Type: application/json",
            "X-API-KEY: your_api_key",
            "X-Real-IP: your_whitelisted_ip"
        ]),
        'method' => 'POST',
        'content' => $data,
        'timeout' => 30
    ]
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);

echo "Rotation ID: {$result['rotation_id']}\n";
echo "Old Address: {$result['old_address']}\n";
echo "Status: {$result['status']}\n";
echo "Message: {$result['message']}\n";
?>

Ответ

Успешный ответ (200 OK)

json
{
    "rotation_id": 42,
    "user_id": 1234,
    "address_type": "web",
    "old_address": "TCurrentAddress1234567890123456789",
    "status": "pending",
    "message": "Address rotation request submitted. New address will be assigned within 5 minutes.",
    "estimated_completion": "2026-03-14T12:35:00Z"
}

Поля ответа

ПолеТипОписание
rotation_idintegerУникальный ID запроса на ротацию (используется для проверки статуса)
user_idintegerПользователь, чей адрес ротируется
address_typestringТип ротируемого адреса (web или tg)
old_addressstringТекущий адрес для депозита TRON до ротации
statusstringСтатус запроса: pending
messagestringПонятное человеку сообщение о статусе
estimated_completionstringОжидаемое время завершения в формате ISO 8601

Проверка статуса ротации

GET /apiv2/address/rotate/status/

Проверка статуса ранее отправленного запроса на ротацию.

bash
curl https://netts.io/apiv2/address/rotate/status/42 \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

Ответ:

json
{
    "rotation_id": 42,
    "user_id": 1234,
    "address_type": "web",
    "status": "completed",
    "old_address": "TOldAddress1234567890123456789012",
    "new_address": "TNewAddress1234567890123456789012",
    "created_at": "2026-03-14T12:30:00Z",
    "completed_at": "2026-03-14T12:34:15Z"
}

Значения статуса

СтатусОписание
pendingЗапрос отправлен, ожидает обработки
processingВ процессе обработки
completedНовый адрес успешно назначен
failedПроизошла ошибка во время ротации

Проверка ожидающей ротации

GET /apiv2/address/rotate/pending

Проверка наличия у пользователя ожидающего запроса на ротацию (полезно для отключения кнопки ротации).

bash
curl "https://netts.io/apiv2/address/rotate/pending?address_type=web" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

Ответ:

json
{
    "user_id": 1234,
    "address_type": "web",
    "has_pending": true,
    "pending_rotation": {
        "rotation_id": 42,
        "status": "pending",
        "created_at": "2026-03-14T12:30:00Z"
    }
}

Важные примечания

Смена адреса

После завершения ротации ваш текущий адрес для депозита больше не будет принимать депозиты. Обязательно:

  1. Выведите весь оставшийся баланс с текущего адреса перед запросом ротации
  2. Обновите все внешние системы, использующие ваш старый адрес для депозита
  3. Используйте новый адрес для всех будущих депозитов

Время обработки

Запросы на ротацию обрабатываются автоматически. Новый адрес обычно назначается в течение 5 минут после отправки.

  • В течение 7-дневного окна разрешена только одна ожидающая ротация на пользователя для каждого типа адреса
  • Если у вас уже есть ожидающая ротация, запрос будет отклонен с ошибкой 409 Conflict
  • Адреса web и tg могут ротироваться независимо друг от друга
  • Пользователи-родители могут выполнять ротацию адресов своих SUB-пользователей, указав параметр user_id

Ответы с ошибками

Конфликт (409)

json
{
    "detail": "User 1234 already has a pending web address rotation request"
}

Некорректный запрос (400)

json
{
    "detail": "User 1234 has no web deposit address"
}
json
{
    "detail": "address_type must be 'web' or 'tg'"
}

Не найдено (404)

json
{
    "detail": "User 9999 not found"
}

Доступ запрещен (403)

json
{
    "detail": "Not authorized to rotate this user's address"
}

Ошибка аутентификации (401)

json
{
    "detail": "X-API-KEY header required"
}

Справочник кодов ошибок

HTTP-статусОписание
200Запрос на ротацию успешно отправлен
400Некорректный запрос (нет адреса, неверный тип)
401Отсутствует заголовок API-ключа
403Доступ запрещен / Неверный API-ключ или IP
404Пользователь не найден / Ротация не найдена
409Уже существует ожидающая ротация
500Внутренняя ошибка сервера

Связанные эндпоинты