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

GET /apiv2/screening/history ​

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

URL эндпоинта ​

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

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

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

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

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

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

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

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

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.

Пагинация ​

Курсор указывает на конкретную позицию в выборке, а не на ее порядковый номер, поэтому новые проверки, поступающие во время обхода, не нарушают порядок.

  • порядок сортировки: 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 полная история из десяти тысяч проверок выгружается за пятьдесят запросов.