Снятие делегации возвращает депозитный адрес в обычный: код делегата с него снимается.
GET /v1/revocations
Снятия делегации, новые первыми. Фильтры можно сочетать.
Имя Где Тип Описание limitquery integer Сколько строк на странице. От 1 до 200. По умолчанию 50. cursorquery string next_cursor прошлой страницы; для первой страницы не нужен.statusquery string Только снятия с этим статусом. Одно из: queued, processing, revoked, failed, rejected. chain_idquery ChainID Только эта сеть. accountquery Address Только снятия с этого депозитного адреса.
Код Описание 200Страница снятий. Возвращает поля ниже. 400invalid_query — параметр запроса не подходит; какой — в message.401unauthorized — нет API-ключа, он неизвестен или отозван.403partner_disabled — аккаунт партнёра отключён.
Поле Тип Описание items обязательно массив Revocation next_cursor обязательно NextCursor Курсор следующей страницы; на последней — null.
curl "https://api-testnet.portuna.io/v1/revocations?account=0x2c7536E3605D9C16a7a3D7b1898e529396a65c23" \
-H "Authorization: Bearer $PORTUNA_API_KEY "
"id" : "5e9b1c27-3f6d-4a08-8c2e-71d4a0b9f356" ,
"external_id" : "revoke-2c75" ,
"account" : "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23" ,
"tx_hash" : "0x452b10b75c363823e1fa24b25d89bdaf2c7e3237deacc5260991627ee49954e3" ,
"gas_cost" : "34560000000000" ,
"created_at" : "2026-10-12T10:00:00Z" ,
"updated_at" : "2026-10-12T10:00:37Z"
POST /v1/revocations
Возвращает депозитный адрес в обычный: адрес подписывает авторизацию на нулевой адрес, а газ-кошелёк
отправляет её транзакцией самому себе. Газ — с газ-кошелька партнёра, без комиссии. Снятие ждёт, пока уйдут
sweep этого адреса, запрошенные раньше. Подписывайте с nonce адреса на момент отправки: если раньше снятия в
сеть уйдёт sweep с авторизацией, nonce вырастет на 1. Итог приходит событием вебхука revocation.revoked,
revocation.failed или revocation.rejected и виден в GET /v1/revocations/{id}. Чтобы потом снова
сметать с адреса, нужна новая авторизация на делегат.
Поле Тип Описание external_idstring Ваш id снятия, уникальный в аккаунте: запрос с уже занятым external_id возвращает то снятие, а не создаёт новое, поэтому повторять запрос безопасно. До 128 символов. chain_id обязательно ChainID Идентификатор сети (EIP-155): 11155111 Sepolia и 97 BSC testnet с тестовым ключом, 1 Ethereum и 56 BSC с боевым. account обязательно Address Депозитный адрес. authorization обязательно Authorization Авторизация депозитного адреса с address = 0x0000000000000000000000000000000000000000. 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 обязательно string r подписи, 0x-hex до 32 байт. Формат: ^0x[0-9a-fA-F]{1,64}$. authorization.s обязательно string s подписи, 0x-hex до 32 байт, в нижней половине порядка кривой (EIP-2). Формат: ^0x[0-9a-fA-F]{1,64}$.
Код Описание 200Снятие с этим external_id уже есть. Возвращается оно в текущем состоянии, нового снятия не создаётся. Возвращает Revocation . 202Снятие в очереди. Возвращает Revocation . 400invalid_json — тело не JSON, больше 64 КиБ или в нём неизвестные поля.401unauthorized — нет API-ключа, он неизвестен или отозван.403partner_disabled — аккаунт партнёра отключён.422unknown_chain, invalid_external_id, invalid_address или invalid_authorization (в том числе когда нет authorization); что не так — в message.
curl -X POST "https://api-testnet.portuna.io/v1/revocations" \
-H "Authorization: Bearer $PORTUNA_API_KEY " \
-H "Content-Type: application/json" \
"external_id": "revoke-2c75",
"account": "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
"address": "0x0000000000000000000000000000000000000000",
"r": "0x04bec751666b1f63d7f4572d81a38642d47517b63b84f6b94a0a494a198c315d",
"s": "0x2a3cc8c27acdae37a0eb652d394ff698ad3910adbfa4d7a393c49a6d4099cabb"
"id" : "5e9b1c27-3f6d-4a08-8c2e-71d4a0b9f356" ,
"external_id" : "revoke-2c75" ,
"account" : "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23" ,
"created_at" : "2026-10-12T10:00:00Z" ,
"updated_at" : "2026-10-12T10:00:00Z"
GET /v1/revocations/{id}
Имя Где Тип Описание id обязательно path string (uuid) id снятия.
Код Описание 200Снятие. Возвращает Revocation . 401unauthorized — нет API-ключа, он неизвестен или отозван.403partner_disabled — аккаунт партнёра отключён.404not_found — такого объекта у партнёра нет.
curl "https://api-testnet.portuna.io/v1/revocations/5e9b1c27-3f6d-4a08-8c2e-71d4a0b9f356" \
-H "Authorization: Bearer $PORTUNA_API_KEY "
"id" : "5e9b1c27-3f6d-4a08-8c2e-71d4a0b9f356" ,
"external_id" : "revoke-2c75" ,
"account" : "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23" ,
"tx_hash" : "0x452b10b75c363823e1fa24b25d89bdaf2c7e3237deacc5260991627ee49954e3" ,
"gas_cost" : "34560000000000" ,
"created_at" : "2026-10-12T10:00:00Z" ,
"updated_at" : "2026-10-12T10:00:37Z"