Partner API
Программный доступ к кастодиальному ledger RUD: балансы, пополнение, обмен и вывод. Тот же счёт, что в личном кабинете.
https://rud-stable.ru/api/publicКлюч создаётся в ЛК → Настройки → API-ключи. Передаётся в заголовке
X-API-Key.
Авторизация
Все запросы требуют заголовок:
X-API-Key: rud_pk_…
- Ключ вида
rud_pk_+ 32 hex-символа. - Показывается один раз при создании — сохраните сразу.
- Невалидный / отозванный ключ →
401{"error":"invalid api key"}.
# пример
curl -s https://rud-stable.ru/api/public/balances \
-H "X-API-Key: $RUD_API_KEY"
Токены и сети
| Токен | Сеть (chain) | Decimals | Назначение |
|---|---|---|---|
RUD | eth | 6 | Стейблкоин платформы, 1 RUD = 1 USD |
RUBA | eth | 18 | Обменный токен |
IDRP | kaia | 6 | Indonesia Rupiah Token (Kaia) |
USDT | tron | 6 | USDT TRC-20 |
Касса IDRP: сеть Kaia, контракт 0xc16d986585407a74ab87d17c3d0dc19822e3eb35.
Обмен любой пары токенов (курс через USD/RUD). Комиссия свопа — 0%. При депозите удерживается mint-fee 0.15%.
Сценарии
Пополнение
POST /deposit-intents— указать токен и сумму (на токен — только одна открытая заявка).- Перевести ровно эту сумму на адрес кассы из ответа.
- После подтверждения в сети баланс зачислится (intent живёт 8 часов).
- Отмена:
DELETE /deposit-intents/:id. Список открытых:GET /deposit-intents.
Обмен
POST /swap — мгновенно off-chain, если в кассе есть ликвидность целевого токена.
Вывод
POST /withdraw — списание с баланса + on-chain перевод с кассы на указанный адрес.
Балансы
Балансы текущего аккаунта (по API-ключу).
{
"balances": [
{ "id": 1, "userId": 12, "token": "RUD", "amount": "100.5", "updatedAt": "…" }
]
}
Курсы
rate — сколько RUD (=USD) за 1 единицу токена.
{ "rate": 0.011, "source": "MOEX", "usdrub": 90.9 }
Заявка на пополнение
- Body
- { "token": "USDT", "amount": 100 }
{
"intentId": 42,
"token": "USDT",
"chain": "tron",
"amount": 100,
"address": "TSdw…",
"shared": true,
"expiresAt": "2026-07-20T13:00:00.000Z"
}
curl -s https://rud-stable.ru/api/public/deposit-intents \
-H "X-API-Key: $RUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"token":"USDT","amount":100}'
Адрес кассы
Общий адрес кассы. Для зачисления баланса всё равно нужен deposit-intent.
{ "chain": "eth", "address": "0x4351…", "shared": true }
Обмен
- Body
- { "from": "USDT", "to": "RUD", "amountIn": 50 }
- Ответ
- { "amountOut": 50 }
Любая пара из RUBA | IDRP | USDT | RUD, from ≠ to. При нехватке ликвидности — ошибка.
curl -s https://rud-stable.ru/api/public/swap \
-H "X-API-Key: $RUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"USDT","to":"IDRP","amountIn":10}'
Вывод
- Body
- { "token": "USDT", "amount": 25, "chain": "tron", "address": "T…" }
- Ответ
- { "withdrawalId": 7, "status": "confirmed", "rudBurned": 25 }
Сеть должна соответствовать токену (см. таблицу выше). Адрес — валидный для сети.
curl -s https://rud-stable.ru/api/public/withdraw \
-H "X-API-Key: $RUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"token":"USDT","amount":25,"chain":"tron","address":"T…"}'
История
Депозиты, выводы и свопы, новые сверху. У каждой записи поле kind: deposit | withdrawal | swap.
{ "history": [ { "kind": "swap", "fromToken": "USDT", "toToken": "RUD", … } ] }
Ошибки
| HTTP | Когда |
|---|---|
400 | Невалидные параметры, нехватка баланса/ликвидности, неверная сеть/адрес |
401 | Нет / неверный / отозванный API-ключ |
502 | Курс недоступен или сбой on-chain части вывода |
503 | Адрес кассы не настроен |
Формат тела ошибки: {"error":"…"}. На части сбоев вывода дополнительно withdrawalId.