Reference

API
reference.

All endpoints use the base URL https://api.useveris.finance. Authenticate every request with an Authorization: Bearer vrs_sk_... header. All responses return JSON.

Endpoints

10 endpoints. One API key.

Sanctions screening, risk scoring, entity resolution, alerts, cases, SAR generation, transfers, webhooks, and a WebSocket stream.

All endpoints use the base URL https://api.useveris.finance. Authenticate every request with an Authorization: Bearer vrs_sk_... header. All responses return JSON.

POST/v1/screen

Screen an address against sanctions lists. Returns match status, list name, confidence score, and block decision. When include_risk is true, the response includes the composite risk score.

Request body

ParameterTypeRequiredDescription
addressstringYesBlockchain address to screen
chainstringYesChain identifier (ethereum, polygon, base, arbitrum)
include_riskbooleanNoInclude composite risk score in the response. Default: false

Response

{"status": "match", "list": "OFAC SDN", "confidence": 0.998, "blocked": true, "risk_score": 0.94}

GET/v1/risk/{address}

Get the composite risk score for an address. Returns calibrated probability from the 15-model ensemble, per-detector breakdown, and SHAP feature attribution values.

Query parameters

ParameterTypeRequiredDescription
chainstringYesChain identifier

Response

{"score": 0.82, "confidence_interval": [0.78, 0.86], "detectors": [{"name": "statistical", "score": 0.79}, {"name": "isolation_forest", "score": 0.85}, {"name": "temporal", "score": 0.71}, {"name": "velocity", "score": 0.88}, {"name": "graph", "score": 0.91}, {"name": "dormant", "score": 0.44}, {"name": "new_velocity", "score": 0.76}], "shap_values": {"tx_count_7d": 0.12, "unique_counterparties": 0.09, "mixer_exposure": 0.21, "volume_24h": 0.07}}

GET/v1/entities/{id}

Get a resolved entity cluster. Returns the entity type, aggregated risk level, all linked addresses, active chains, total volume, and clustering confidence score.

Response

{"id": "ent_8f3a2b1c", "entity_type": "exchange_deposit", "risk_level": "high", "addresses": ["0x7Ff9...D4eA", "0x3aB1...92fC", "0xd4E7...1a8B"], "chains": ["ethereum", "polygon"], "volume": 4280000.50, "confidence": 0.93}

GET/v1/alerts

List alerts with pagination and filtering. Returns open, triaged, and escalated alerts sorted by creation time descending.

Query parameters

ParameterTypeRequiredDescription
statusstringNoFilter by status (open, triaged, escalated, closed)
risk_levelstringNoFilter by risk level (low, medium, high, critical)
chainstringNoFilter by chain identifier
limitintegerNoNumber of results per page. Default: 50. Max: 200
offsetintegerNoPagination offset. Default: 0

Response

{"alerts": [{"id": "alt_29f8c1a3", "status": "open", "risk_level": "high", "chain": "ethereum", "address": "0x7Ff9...D4eA", "created_at": "2026-03-21T14:22:08Z"}], "total": 142, "has_more": true}

POST/v1/alerts/{id}/triage

Trigger AI triage on an alert. The triage agent classifies the alert and returns a structured decision with confidence and reasoning. Typical latency is 2 to 3 seconds.

Response

{"classification": "needs_investigation", "confidence": 0.91, "reasoning": "Address received $420K from a mixer within 48 hours. Transaction pattern matches layering typology T-003. Volume exceeds 90th percentile for this entity cluster."}

GET/v1/cases/{id}

Get full case detail including linked alerts, investigation results, and SAR filing status. Cases are created when alerts are escalated.

Response

{"id": "case_5e91b2c4", "status": "investigating", "alert_ids": ["alt_29f8c1a3", "alt_7d4e0f12"], "investigation": {"summary": "Entity cluster linked to mixer activity...", "evidence": ["3 mixer hops identified", "volume spike 12x baseline"], "recommendation": "file_sar"}, "sar_status": "pending"}

POST/v1/sar/{case_id}

Generate a SAR narrative for a case. Produces a FinCEN Part V narrative with typology codes. The hallucination gate verifies every fact against source data before output.

Response

{"sar_id": "sar_a3f21c08", "status": "generated", "narrative_preview": "On 2026-03-18, the subject address 0x7Ff9...D4eA received approximately $420,000 in USDC from a known mixing service...", "typology_codes": ["T-003", "T-011"]}

GET/v1/transfers

List stablecoin transfers with filtering by address, chain, and date range. Returns indexed transfer events from all monitored chains.

Query parameters

ParameterTypeRequiredDescription
addressstringNoFilter by sender or receiver address
chainstringNoFilter by chain identifier
start_datestringNoISO 8601 start date (inclusive)
end_datestringNoISO 8601 end date (exclusive)
limitintegerNoNumber of results per page. Default: 100. Max: 1000

Response

{"transfers": [{"tx_hash": "0xabc1...f9e2", "chain": "ethereum", "from": "0x7Ff9...D4eA", "to": "0x3aB1...92fC", "amount": 125000.00, "token": "USDC", "timestamp": "2026-03-21T14:18:32Z"}], "total": 847}

POST/v1/webhooks

Create a webhook subscription. Veris sends POST requests to your URL when subscribed events occur. Every payload carries an HMAC-SHA256 signature for verification. Failed deliveries retry with exponential backoff.

Request body

ParameterTypeRequiredDescription
urlstringYesHTTPS endpoint to receive webhook payloads
eventsstring[]YesEvent types to subscribe (alert.created, alert.triaged, case.updated, sar.filed)
secretstringYesShared secret for HMAC-SHA256 payload signature

Response

{"id": "wh_e4b1c209", "url": "https://your-app.com/webhooks/veris", "events": ["alert.created", "sar.filed"], "status": "active"}

WS/v1/stream

Open a WebSocket connection for real-time transfer events. Filter by chain and minimum amount. The server sends JSON messages as transfers are indexed.

Connection parameters

ParameterTypeRequiredDescription
chainsstring[]NoFilter by chain identifiers. Default: all chains
min_amountnumberNoMinimum transfer amount in USD. Default: 0

Event message

{"type": "transfer", "transfer": {"tx_hash": "0xdef4...a7c1", "chain": "polygon", "from": "0x9c2E...4bF1", "to": "0x1dA3...82eC", "amount": 50000.00, "token": "USDT"}, "risk_score": 0.34, "timestamp": "2026-03-21T14:22:09.412Z"}
Build it

Have the spec. Ship the integration.

Pair the API reference with the Python or TypeScript SDK for the fastest path to production.