Skip to content
Translated page. The English version is the source of truth.

GET /apiv2/screening/history

Ваша история проверок, начиная с самых новых, с курсорной пагинацией.

Это контракт версии 2. Он заменяет собой GET /apiv2/aml/history, который продолжает работать.

URL эндпоинта

GET https://netts.io/apiv2/screening/history

Заголовки запроса

ЗаголовокОбязательныйОписание
X-API-KEYДаВаш API-ключ из панели управления Netts

Параметры запроса

Все фильтры опциональны. Без них вы получите всю историю целиком.

ПараметрТипПо умолчаниюОписание
addressstringТочный адрес, от 10 до 128 символов
networkstringТикер сети
providerstringelliptic или bitok
statusstringpending, processing, completed, skipped, failed
fromstringТолько проверки, созданные в этот момент или позже, RFC 3339
tostringТолько проверки, созданные в этот момент или раньше, RFC 3339
cursorstringС какого места продолжить. Возьмите его из next_cursor
limitinteger50Количество элементов на странице, от 1 до 200

В версии 1 параметры address и network были обязательными, поэтому не было возможности запросить «что я проверял за последнее время».

Проверки со статусом skipped включены. Версия 1 их скрывает. Пропущенная проверка — это настоящий заказ: у адреса не было активности в блокчейне, поэтому он не отправлялся провайдеру и оплата не списывалась, — и ему место в истории.

Примеры запросов

cURL

bash
curl "https://netts.io/apiv2/screening/history?limit=50" \
  -H "X-API-KEY: your_api_key"

Python — обход всей истории

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"]}

Сохраняйте фильтры неизменными во время пагинации. Изменение любого из них при том же значении курсора приведет к ошибке, а не к незаметному переключению на другую выборку.

Ответ

json
{
  "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
}
ПолеТипОписание
itemsarrayСтраница данных, начиная с самых новых
next_cursorstring | nullПередайте его обратно, чтобы получить следующую страницу. null означает, что вы дошли до конца
limitintegerПримененный лимит

Краткая форма элемента

Блоки 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Когда возникает
4001400limit вне диапазона 1…200, неизвестный network, provider или status, дата from/to не в формате RFC 3339, некорректный курсор или курсор, сгенерированный для других фильтров
4010 / 4011401Отсутствует API-ключ, либо передан непринятый ключ или IP
json
{
  "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 полная история из десяти тысяч проверок выгружается за пятьдесят запросов.