v1 · production
Partner API
Программный доступ к кастодиальному счету RUD Stable: балансы, пополнение, обмен и вывод. Тот же счет, что в личном кабинете.
https://rud-stable.ru/api/publicКлюч создается в ЛК, в разделе Настройки → API-ключи, и передается в заголовке
X-API-Key.Авторизация
Все запросы требуют заголовок X-API-Key. Ключ вида rud_pk_ + 32 hex-символа показывается один раз при создании.
X-API-Key: rud_pk_… 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 | 1 RUBA = 1 RUB |
| RUD-A | eth | 18 | 1 RUD-A = 1 RUB |
| IDRP | kaia | 6 | Indonesia Rupiah Token |
| USDT | tron | 6 | USDT TRC-20 |
Пополнение
POST /deposit-intents, body:{ "token": "USDT", "amount": "100" }.- Переведите ровно эту сумму на адрес кассы из ответа.
POST /deposit-intents/:intentID/checkпроверяет перевод и зачисляет его. До появления в сети ответ содержит{ "found": false }, повторите check позже.- Открытые заявки:
GET /deposit-intents, отмена:DELETE /deposit-intents/:intentID.
{ "found": true, "depositID": 15, "txID": "…", "duplicate": false }Обмен и вывод
POST /swap принимает { "from": "USDT", "to": "RUD", "amountIn": "50" } и выполняет off-chain обмен только при наличии ликвидности.
POST /withdraw
{ "token": "USDT", "chain": "tron", "address": "T…", "amount": "25", "requestId": "withdrawal-001" }
{ "withdrawalId": 7, "status": "confirmed", "rudBurned": "25" }Для вывода сеть обязана соответствовать токену. requestId задает идемпотентность, при неоднозначном on-chain результате не повторяйте отправку автоматически.
Балансы, курсы и история
GET /balances GET /rates?token=RUBA GET /deposit-address?chain=eth|tron|kaia GET /history
Курс возвращает строковый точный decimal rate и source. Денежные значения не следует преобразовывать через binary floating point.
Ошибки
| HTTP | Когда |
|---|---|
| 400 | Невалидные параметры, нехватка баланса или ликвидности, неверная сеть или адрес |
| 401 | Нет, неверный или отозванный API-ключ |
| 409 | Существующая заявка на депозит или конфликт состояния |
| 429 | Ограничение частоты |
| 502 / 503 | Курс, on-chain зависимость или адрес кассы временно недоступны |
{ "error": "invalid api key" }