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

GET /apiv2/screening/

Consulte um pedido de screening em qualquer estado. A consulta é gratuita e pode ser repetida quantas vezes desejar.

Este é o contrato da versão 2. Ele substitui o GET /apiv2/aml/{order_id}, que continua funcionando.

URL do endpoint

GET https://netts.io/apiv2/screening/{client_order_id}

Cabeçalhos da requisição

HeaderRequiredDescription
X-API-KEYSimSua chave de API do painel da Netts

Parâmetros de caminho

ParameterTypeDescription
client_order_idstringO identificador retornado quando o pedido foi criado: A seguido por 14 caracteres hexadecimais

Parâmetros de consulta

ParameterTypeDefaultDescription
formatstringjsonRepresentação do resultado. json é o único valor aceito

A representação é uma propriedade da requisição, não do pedido. Na versão 1 ela era fixada quando o pedido era criado, portanto uma verificação solicitada como JSON nunca poderia ser lida de outra forma.

Existe uma única representação, e ela é JSON. O parâmetro é mantido para que adicionar uma segunda posteriormente não seja uma alteração incompatível; hoje qualquer outro valor retorna 4001. Um relatório é uma renderização de dados que você já possui por completo, e renderizá-lo por conta própria oferece sua própria marca, seu próprio idioma e seu próprio layout. Consulte Relatórios.

Exemplos

cURL

bash
curl https://netts.io/apiv2/screening/A90D21F68C9AEA2 \
  -H "X-API-KEY: your_api_key"

Python — consultar periodicamente até que a verificação seja concluída

python
import time
import requests

headers = {"X-API-KEY": "your_api_key"}
url = "https://netts.io/apiv2/screening/A90D21F68C9AEA2"

while True:
    body = requests.get(url, headers=headers).json()
    status = body["order"]["status"]
    if status in ("completed", "failed", "skipped"):
        break
    time.sleep(2)

print(status, body["risk"]["level"], body["risk"]["score"])

Resposta

200 OK com o mesmo corpo de POST /apiv2/screening, em qualquer estado do pedido. O conjunto de campos não depende do estado: blocos que ainda não possuem dados são preenchidos com valores nulos e listas vazias, em vez de serem omitidos.

Respostas que contêm um resultado de screening são enviadas com Cache-Control: private, no-store.

Uma verificação que não está concluída

json
{
  "schema_version": 2,
  "order": {
    "client_order_id": "A90D21F68C9AEA2",
    "status": "pending",
    "api_version": "v2",
    "cache_hit": false,
    "created_at": "2026-09-13T08:14:29.614988Z",
    "started_at": null,
    "completed_at": null
  },
  "request": { "address": "YOUR_ADDRESS_HERE", "network": "trx", "provider": "elliptic" },
  "billing": {
    "charged": true, "price_usdt": "0.98", "base_amount": "2.882421",
    "markup_amount": "0", "charged_amount": "2.882421", "charged_currency": "TRX",
    "exchange_rate": "0.33999200", "payment_status": "pending"
  },
  "precheck": { "activity_checked": true, "activity_status": "active", "source": "tron-address-checker" },
  "check": {
    "provider": "elliptic", "provider_check_id": null, "checked_at": null,
    "status": "pending", "provider_status": null
  },
  "risk": {
    "score": null, "scale": { "min": 0, "max": 10 }, "level": "none",
    "level_source": "computed", "provider_level": null, "policy": "netts-risk-v1",
    "by_direction": { "source": null, "destination": null }
  },
  "sanctions": null,
  "exposure": [],
  "rules": [],
  "entities": [],
  "primary_entity": null,
  "sanctioned_entities": [],
  "wallet": { "inflow_usd": null, "outflow_usd": null },
  "provider_data": { }
}

Um endereço sem atividade

Um endereço que nunca foi usado na blockchain não é enviado para o provedor e não é cobrado. O pedido existe, portanto o resultado pode ser lido:

json
{
  "order": {
    "client_order_id": "AC4F9BC45A79323",
    "status": "skipped",
    "started_at": null,
    "completed_at": null,
    "reason": "address_inactive"
  },
  "billing": { "charged": false, "charged_amount": "0", "payment_status": "not_charged" },
  "precheck": { "activity_checked": true, "activity_status": "inactive", "source": "tron-address-checker" },
  "check": { "status": "not_performed", "provider_check_id": null, "checked_at": null }
}

Apenas os blocos que mudam são mostrados aqui; os demais estão presentes com valores nulos e listas vazias como sempre.

Respostas de erro

O formato é RFC 9457, Content-Type: application/problem+json. A lista completa de códigos está na página do POST.

CodeHTTPWhen
4003400O identificador não é A seguido de 14 caracteres hexadecimais
4040404Pedido inexistente
4010 / 4011401Nenhuma chave de API fornecida, ou uma chave ou IP não aceito

Um pedido pertencente a outra conta responde com 404, não com 403. Caso contrário, o código de resposta por si só confirmaria a existência do identificador de outra pessoa.

json
{
  "type": "https://doc.netts.io/api/v2/errors/order-not-found",
  "title": "Order not found",
  "status": 404,
  "detail": "Order not found",
  "instance": "/apiv2/screening/AFFFFFFFFFFFFFF",
  "code": 4040
}

Limites de taxa

Compartilhado com todas as outras rotas de AML: 5 requisições por segundo, 150 por minuto. Fazer polling não custa nada, mas conta para o limite — dois segundos entre consultas são mais que suficientes.

Veja Também