Перейти к содержимому
PortunaPortunaPortunaДокументацияTestnet

Sweep

Sweep переводит токен или нативную монету с депозитного адреса в горячий кошелёк. Задания одного кошелька уходят в сеть батчами.

GET/v1/sweeps

Задания на sweep, новые первыми. Фильтры можно сочетать.

ИмяГдеТипОписание
limitqueryintegerСколько строк на странице. От 1 до 200. По умолчанию 50.
cursorquerystringnext_cursor прошлой страницы; для первой страницы не нужен.
statusquerystringТолько задания с этим статусом. Одно из: queued, processing, swept, failed, rejected.
chain_idqueryChainIDТолько эта сеть.
accountqueryAddressТолько задания с этого депозитного адреса.
hot_walletqueryAddressТолько задания в этот горячий кошелёк.
КодОписание
200Страница заданий. Возвращает поля ниже.
400invalid_query — параметр запроса не подходит; какой — в message.
401unauthorized — нет API-ключа, он неизвестен или отозван.
403partner_disabled — аккаунт партнёра отключён.
ПолеТипОписание
items обязательномассив Sweep
next_cursor обязательноNextCursorКурсор следующей страницы; на последней — null.
Окно терминала
curl "https://api-testnet.portuna.io/v1/sweeps?chain_id=11155111&status=swept&limit=1" \
-H "Authorization: Bearer $PORTUNA_API_KEY"
200 OK
{
"items": [
{
"id": "8a6e2f31-0c4b-4d7a-b1e5-92f3c6d8a047",
"external_id": "dep-80c2d4",
"chain_id": 11155111,
"hot_wallet": "0x2Cd50979a8A33e8CA37DA85F8517fb148a67b769",
"account": "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
"token": "USDT",
"token_address": "0x5B74f75040584b133Ff1EB67eEe646B0da26e39C",
"status": "swept",
"attempts": 1,
"swept_amount": "250000000",
"tx_hash": "0xe2a3d8ffdcd7c4ed8a2389a59ce91622863c495d052a7571206bb494919dc35b",
"kind": "repeat",
"gas": 18078,
"gas_cost": "21693600000000",
"fee": "23358000000000",
"classic_gas": 53633,
"rate_bps": 7000,
"created_at": "2026-10-11T07:02:15Z",
"updated_at": "2026-10-11T07:03:02Z"
}
],
"next_cursor": "eyJ0IjoiMjAyNi0xMC0xMVQwNzowMjoxNVoiLCJpZCI6IjhhNmUyZjMxIn0"
}

POST/v1/sweeps

Сметает токен или нативную монету с депозитного адреса в горячий кошелёк. Задания одного кошелька, пришедшие к моменту отправки, уходят одним батчем. Пока на депозитном адресе нет делегата, в запросе нужна его авторизация, authorization. Итог приходит событием вебхука sweep.swept, sweep.failed или sweep.rejected и виден в GET /v1/sweeps/{id}.

ПолеТипОписание
external_idstringВаш id задания, уникальный в аккаунте: запрос с уже занятым external_id возвращает то задание, а не создаёт новое, поэтому повторять запрос безопасно. До 128 символов.
chain_id обязательноChainIDИдентификатор сети (EIP-155): 11155111 Sepolia и 97 BSC testnet с тестовым ключом, 1 Ethereum и 56 BSC с боевым.
hot_wallet обязательноAddressГорячий кошелёк в этой сети; его делегат должен быть active.
account обязательноAddressДепозитный адрес.
token обязательноstringТикер токена из списка сети (в любом регистре), адрес контракта токена из этого списка или native (либо тикер нативной монеты) для нативной монеты.
amountAmountСколько сметать, больше нуля; без поля — весь баланс.
keep_one_unitbooleanОставить 1 минимальную единицу токена на депозитном адресе; по умолчанию — из настроек партнёра. Для нативной монеты не действует.
authorizationAuthorizationНужна, пока на депозитном адресе нет делегата этого горячего кошелька. Потом не используется, но присланная всё равно должна быть верной.
authorization.chain_id обязательноinteger (int64)Сеть запроса; 0 (любая сеть) не принимается.
authorization.address обязательноAddressДелегат горячего кошелька из POST /v1/hot-wallets; для снятия делегации — нулевой адрес.
authorization.nonce обязательноinteger (int64)Текущий nonce депозитного адреса.
authorization.y_parity обязательноintegerЧётность y подписи. Одно из: 0, 1.
authorization.r обязательноstringr подписи, 0x-hex до 32 байт. Формат: ^0x[0-9a-fA-F]{1,64}$.
authorization.s обязательноstrings подписи, 0x-hex до 32 байт, в нижней половине порядка кривой (EIP-2). Формат: ^0x[0-9a-fA-F]{1,64}$.
КодОписание
200Задание с этим external_id уже есть. Возвращается оно в текущем состоянии, нового задания не создаётся. Возвращает Sweep.
202Задание в очереди. Возвращает Sweep.
400invalid_json — тело не JSON, больше 64 КиБ или в нём неизвестные поля.
401unauthorized — нет API-ключа, он неизвестен или отозван.
403partner_disabled — аккаунт партнёра отключён.
409hot_wallet_not_active — делегат горячего кошелька ещё разворачивается или не развернулся.
422unknown_chain, invalid_external_id, invalid_address, unknown_token, invalid_amount, unknown_hot_wallet (горячий кошелёк не зарегистрирован в этой сети) или invalid_authorization; что не так — в message.
Окно терминала
curl -X POST "https://api-testnet.portuna.io/v1/sweeps" \
-H "Authorization: Bearer $PORTUNA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "dep-7f3a91",
"chain_id": 11155111,
"hot_wallet": "0x2Cd50979a8A33e8CA37DA85F8517fb148a67b769",
"account": "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
"token": "USDT",
"authorization": {
"chain_id": 11155111,
"address": "0xE60fdf70a794C76094f86b990a821D55e3096AA5",
"nonce": 0,
"y_parity": 0,
"r": "0x15fc7bd79ea3d30b5c40814f1c7ce35274d35ad96f9654d1379680d15cbba039",
"s": "0x7e9e601a6b0c3e554c8befe6ae019c344b115cf061994e9388787bd39e76bb83"
}
}'
202 Accepted
{
"id": "3d0c5d0e-6b7f-4a5e-9a51-3c8f0b2e7d14",
"external_id": "dep-7f3a91",
"chain_id": 11155111,
"hot_wallet": "0x2Cd50979a8A33e8CA37DA85F8517fb148a67b769",
"account": "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
"token": "USDT",
"token_address": "0x5B74f75040584b133Ff1EB67eEe646B0da26e39C",
"status": "queued",
"attempts": 0,
"created_at": "2026-10-10T09:20:41Z",
"updated_at": "2026-10-10T09:20:41Z"
}

GET/v1/sweeps/{id}

ИмяГдеТипОписание
id обязательноpathstring (uuid)id задания.
КодОписание
200Задание. Возвращает Sweep.
401unauthorized — нет API-ключа, он неизвестен или отозван.
403partner_disabled — аккаунт партнёра отключён.
404not_found — такого объекта у партнёра нет.
Окно терминала
curl "https://api-testnet.portuna.io/v1/sweeps/8a6e2f31-0c4b-4d7a-b1e5-92f3c6d8a047" \
-H "Authorization: Bearer $PORTUNA_API_KEY"
200 OK
{
"id": "8a6e2f31-0c4b-4d7a-b1e5-92f3c6d8a047",
"external_id": "dep-80c2d4",
"chain_id": 11155111,
"hot_wallet": "0x2Cd50979a8A33e8CA37DA85F8517fb148a67b769",
"account": "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
"token": "USDT",
"token_address": "0x5B74f75040584b133Ff1EB67eEe646B0da26e39C",
"status": "swept",
"attempts": 1,
"swept_amount": "250000000",
"tx_hash": "0xe2a3d8ffdcd7c4ed8a2389a59ce91622863c495d052a7571206bb494919dc35b",
"kind": "repeat",
"gas": 18078,
"gas_cost": "21693600000000",
"fee": "23358000000000",
"classic_gas": 53633,
"rate_bps": 7000,
"created_at": "2026-10-11T07:02:15Z",
"updated_at": "2026-10-11T07:03:02Z"
}