Skip to main content

Analisar carteira

Scope: crypto-risk.write para criar; crypto-risk.read para listar, detalhar e consultar ingestão.

Criar análise

Endpoint: POST /crypto-risk/analyses

curl --location 'https://secureapi.onz.finance/api/v2/crypto-risk/analyses' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"network": "ETHEREUM",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
}'
CampoObrigatórioDescrição
networkSimETHEREUM ou TRON. Qualquer outro valor, inclusive BITCOIN e TRX, responde 422.
addressSimEndereço da carteira (1–128 caracteres).

Não envie accountId. A conta vem da credencial (BaaS usa x-account-id).

201 — snapshot fechado

Histórico já ingerido. A resposta vem em { data } com id, scores, historyCovered, versões e events.

{
"data": {
"id": "10",
"network": "ETHEREUM",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"status": "COMPLETED",
"riskScore": 0,
"riskLevel": "LOW",
"confidenceScore": 11,
"historyCovered": false,
"hardStop": false,
"hardStopRule": null,
"startedAt": "2026-08-21T12:00:00.000Z",
"completedAt": "2026-08-21T12:00:02.000Z",
"createdAt": "2026-08-21T12:00:00.000Z",
"events": []
}
}

Neste exemplo, riskScore = 0, confiança baixa e historyCovered = false é ingest vazio, não carteira limpa.

202 — ingestão aceita

A carteira ainda não tem índice pronto. Não há analysis id.

{
"data": {
"status": "ACCEPTED",
"network": "TRON",
"address": "Taddr",
"maxTransactions": 5000,
"ingest": {
"status": "RUNNING",
"network": "TRON",
"address": "Taddr",
"fetched": 12,
"persisted": null,
"errorMessage": null
}
}
}

Faça poll em GET /crypto-risk/ingest e, quando IDLE com persisted != null, repita o POST. Retry do POST enquanto o ingest desta carteira está RUNNING também devolve 202. Ingest de outra carteira devolve 409.

Consultar ingestão

Endpoint: GET /crypto-risk/ingest?network=&address=

Scope: crypto-risk.read

curl --location 'https://secureapi.onz.finance/api/v2/crypto-risk/ingest?network=TRON&address=Taddr' \
--header 'Authorization: Bearer <access_token>'

network e address são obrigatórios.

Pronto para o POST de 201 quando status = IDLE e persisted != null. persisted = 0 é índice vazio válido.

{
"data": {
"status": "IDLE",
"network": "TRON",
"address": "Taddr",
"fetched": 0,
"persisted": 0,
"errorMessage": null
}
}

Consultar snapshot

Endpoint: GET /crypto-risk/analyses/{id}

Scope: crypto-risk.read

O id é inteiro positivo. Análise de outra conta responde 404.

curl --location 'https://secureapi.onz.finance/api/v2/crypto-risk/analyses/10' \
--header 'Authorization: Bearer <access_token>'

A resposta é o mesmo snapshot fechado do 201, com events (sem hash e sem endereço de contraparte).

Listar

Endpoint: GET /crypto-risk/analyses

Scope: crypto-risk.read

QueryObrigatórioDescrição
networkNãoETHEREUM ou TRON. Obrigatório se enviar address.
addressNãoExige network.
pageNãoPadrão 1. Máximo 10000.
limitNãoPadrão 20. Máximo 100.
curl --location 'https://secureapi.onz.finance/api/v2/crypto-risk/analyses?network=ETHEREUM&page=1&limit=20' \
--header 'Authorization: Bearer <access_token>'

Resposta { meta: { total, page, limit }, data }. Os itens não incluem events.