GET /apiv2/screening/history
Ваша история проверок, начиная с самых новых, с курсорной пагинацией.
Это контракт версии 2. Он заменяет собой GET /apiv2/aml/history, который продолжает работать.
URL эндпоинта
GET https://netts.io/apiv2/screening/historyЗаголовки запроса
| Заголовок | Обязательный | Описание |
|---|---|---|
| X-API-KEY | Да | Ваш API-ключ из панели управления Netts |
Параметры запроса
Все фильтры опциональны. Без них вы получите всю историю целиком.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| address | string | — | Точный адрес, от 10 до 128 символов |
| network | string | — | Тикер сети |
| provider | string | — | elliptic или bitok |
| status | string | — | pending, processing, completed, skipped, failed |
| from | string | — | Только проверки, созданные в этот момент или позже, RFC 3339 |
| to | string | — | Только проверки, созданные в этот момент или раньше, RFC 3339 |
| cursor | string | — | С какого места продолжить. Возьмите его из next_cursor |
| limit | integer | 50 | Количество элементов на странице, от 1 до 200 |
В версии 1 параметры address и network были обязательными, поэтому не было возможности запросить «что я проверял за последнее время».
Проверки со статусом skipped включены. Версия 1 их скрывает. Пропущенная проверка — это настоящий заказ: у адреса не было активности в блокчейне, поэтому он не отправлялся провайдеру и оплата не списывалась, — и ему место в истории.
Примеры запросов
cURL
curl "https://netts.io/apiv2/screening/history?limit=50" \
-H "X-API-KEY: your_api_key"Python — обход всей истории
import requests
headers = {"X-API-KEY": "your_api_key"}
params = {"limit": 200, "provider": "elliptic"}
while True:
page = requests.get("https://netts.io/apiv2/screening/history",
headers=headers, params=params).json()
for item in page["items"]:
print(item["order"]["client_order_id"],
item["order"]["status"],
item["risk"]["level"],
item["sanctions"]["verdict"])
if not page["next_cursor"]:
break
params = {"limit": 200, "provider": "elliptic", "cursor": page["next_cursor"]}Сохраняйте фильтры неизменными во время пагинации. Изменение любого из них при том же значении курсора приведет к ошибке, а не к незаметному переключению на другую выборку.
Ответ
{
"schema_version": 2,
"items": [
{
"order": {
"client_order_id": "A6F3221BAAE093A",
"status": "completed",
"api_version": "v2",
"cache_hit": false,
"created_at": "2026-09-13T08:24:19.838584Z",
"started_at": "2026-09-13T08:24:20.998619Z",
"completed_at": "2026-09-13T08:24:25.179967Z"
},
"request": {
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic"
},
"check": {
"provider": "elliptic",
"provider_check_id": "1cc2fd64-1483-4ce3-946f-23a614f41a12",
"checked_at": "2026-09-13T08:24:22.372000Z",
"status": "completed",
"provider_status": "complete"
},
"risk": {
"score": "0.12428176721891304",
"scale": { "min": 0, "max": 10 },
"level": "low",
"level_source": "computed",
"provider_level": null,
"policy": "netts-risk-v1",
"by_direction": { "source": "0.12428176721891304", "destination": null }
},
"sanctions": { "verdict": "linked" }
}
],
"next_cursor": "eyJmIjp7InN0YXR1cyI6ImNvbXBsZXRlZCJ9LCJpIjoxMzQyNywidCI6...",
"limit": 1
}| Поле | Тип | Описание |
|---|---|---|
| items | array | Страница данных, начиная с самых новых |
| next_cursor | string | null | Передайте его обратно, чтобы получить следующую страницу. null означает, что вы дошли до конца |
| limit | integer | Примененный лимит |
Краткая форма элемента
Блоки order, request, check и risk идентичны блокам в полном ответе GET /apiv2/screening/{client_order_id}, поле в поле, так что один и тот же парсер подходит для обоих.
Что исключено: provider_data, exposure[], rules[], entities[], wallet, billing, precheck, а также полный блок sanctions. Один результат Elliptic занимает около 150 КБ, и страница из пятидесяти элементов весила бы семь мегабайт. Запрашивайте отдельную проверку, когда вам нужны подробности.
sanctions.verdict
Анализ санкций, сжатый до одного слова.
| Значение | Значение |
|---|---|
listed | Сам адрес находится в санкционном списке |
linked | Найдена связь с санкциями, но сам адрес в списках не числится |
none | Анализ выполнен и ничего не выявил |
null | Результата для анализа пока нет |
Разница между listed и linked — главная суть этого поля, см. Санкции в результатах AML.
Пагинация
Версия 1 использует пагинацию по номерам: ?page=2, по 100 на страницу. Сортировка идет по времени создания, новые в начале, поэтому пока вы переходите со страницы 1 на страницу 2, поступают новые проверки и сдвигают все вниз. Записи, которые вы уже видели, появляются снова, а записи, которые вы еще не видели, проскакивают мимо. Для активного аккаунта это частый случай, а не исключение.
Курсор указывает на конкретную позицию в выборке, а не на ее порядковый номер, поэтому новые проверки, поступающие во время обхода, не нарушают порядок.
- порядок сортировки:
created_at DESC, id DESC. Оба поля присутствуют в курсоре, так какcreated_atне уникален — две проверки, созданные в одну и ту же микросекунду, иначе привели бы к зацикливанию или пропуску; - курсор является непрозрачным (opaque). Его содержимое — деталь реализации; передавайте его обратно в точности в том виде, в котором получили;
- фильтры зашиты в курсор. Изменение фильтра при повторном использовании того же курсора вернет
400, а не выполнит тихое переключение на другую выборку — иначе вы бы решили, что прочитали данные, которых на самом деле не читали; next_cursor: nullозначает конец выборки. Общее количество элементов не возвращается: подсчет всей выборки на каждой странице обходится дороже, чем дает пользы.
Ошибки
RFC 9457, application/problem+json. Полный список кодов находится на странице POST.
| Код | HTTP | Когда возникает |
|---|---|---|
4001 | 400 | limit вне диапазона 1…200, неизвестный network, provider или status, дата from/to не в формате RFC 3339, некорректный курсор или курсор, сгенерированный для других фильтров |
4010 / 4011 | 401 | Отсутствует API-ключ, либо передан непринятый ключ или IP |
{
"type": "https://doc.netts.io/api/v2/errors/validation-failed",
"title": "Request validation failed",
"status": 400,
"detail": "Cursor was issued for a different set of filters",
"instance": "/apiv2/screening/history",
"code": 4001
}Ограничение частоты запросов
Лимит общий со всеми остальными AML-путями: 5 запросов в секунду, 150 в минуту. При limit=200 полная история из десяти тысяч проверок выгружается за пятьдесят запросов.