Core reference
Docs / Core / Verdict API
Verdict API v2.
POST /v2/verdict returns one adjudicated avoid, caution, or clear decision for solana or base assets.
Pinned request.
This runnable JUP request is imported from the checked-in live fixture. Keep the environment-variable form for the credential.
curl -sS -X POST https://api.vswarm.io/v2/verdict \
-H "Content-Type: application/json" \
-H "X-API-Key: $VS_API_KEY" \
-d '{"address":"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN","chain":"solana","level":"fast","include":[]}'import os
import requests
response = requests.post(
"https://api.vswarm.io/v2/verdict",
headers={"X-API-Key": os.environ["VS_API_KEY"]},
json={
"address": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"chain": "solana",
"level": "fast",
"include": []
},
timeout=60,
)
response.raise_for_status()
verdict = response.json()Pinned response.
Read verdict.action first. The remaining fields explain the decision and preserve its observation receipt.
{
"schema_version": "1.1",
"request": {
"address": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"chain": "solana",
"level": "fast",
"include": []
},
"verdict": {
"action": "caution",
"score": 82,
"grade": "A",
"risk_level": "low",
"confidence": 1,
"summary": "Jupiter (JUP) is a well-established major Solana ecosystem token with strong financials, a long operating history, and safe authority settings."
},
"signals": [
{
"id": "honeypot_simulation",
"category": "security",
"severity": "critical",
"pass": true,
"value": "ok",
"detail": "Sell simulation passed."
},
{
"id": "mint_authority",
"category": "security",
"severity": "critical",
"pass": true,
"value": "revoked",
"detail": "Mint authority revoked — cannot inflate supply."
},
{
"id": "freeze_authority",
"category": "security",
"severity": "high",
"pass": true,
"value": "revoked",
"detail": "Freeze authority revoked — holders cannot be frozen."
},
{
"id": "top10_holder_concentration",
"category": "distribution",
"severity": "high",
"pass": false,
"value": 66.2,
"detail": "Top-10 wallets hold 66.2% of supply."
},
{
"id": "contract_verified",
"category": "transparency",
"severity": "medium",
"pass": true,
"value": "verified",
"detail": "Contract source code is publicly verified."
},
{
"id": "liquidity_vs_mcap",
"category": "liquidity",
"severity": "high",
"pass": false,
"value": 0.0033,
"detail": "Very low liquidity ratio: 0.33% of market cap."
}
],
"agents": [
{
"name": "FreeTierAI",
"score": 8.2,
"sentiment": "bullish",
"key_findings": [
"Token age is 919 days, indicating a long-standing and established project.",
"Market cap stands at $607.5M with $2.0M in liquidity, reflecting mature market operations.",
"Mint and freeze authorities have both been revoked, eliminating centralized supply manipulation risks.",
"Missing holder metrics are typical data provider anomalies for high-volume native assets and do not negate foundational safety."
],
"reasoning": null
}
],
"data_freshness": {
"onchain_age_seconds": 2911,
"market_age_seconds": 3,
"social_age_seconds": 3,
"basis": "observed"
},
"token": {
"name": "Jupiter",
"symbol": "JUP",
"price_usd": 0.1829,
"liquidity_usd": 2021849.5,
"mcap_usd": 607509009,
"fdv_usd": 1280767814,
"volume_24h_usd": 316009.15,
"holder_count": 827230,
"age_days": 919,
"top10_holder_pct": 66.22
},
"data_quality": {
"required_missing": [
"Holder data"
],
"optional_missing": [],
"warnings": [
"Required data missing: Holder data unavailable during initial scan. Treat as missing data, not a negative signal.",
"Holder count reported as 0 with mcap $607.5M — likely API limitation, not indicative of actual holder base",
"Top 10 holder concentration unavailable — data source did not return holder distribution. Do not penalize for missing data."
],
"degraded_agents": []
},
"liquidity_exposure_cap_usd": 10000,
"data_confidence": 1,
"insufficient_data": false,
"lifecycle": null,
"timing": null,
"observation_id": "9cd71c81-86a4-4380-9eb0-d7e482948e98",
"cached": false,
"generated_at": "2026-08-07T16:55:18.090125Z",
"latency_ms": 3099,
"billing": {
"rail": "free",
"amount_usdc": "0",
"tx": null,
"degraded": false,
"retry_voucher": null
}
}Service levels.
| Level | Fresh call | Cache hit | Latency target | Runs |
|---|---|---|---|---|
| triage | $0.001 USDC | $0.0002 USDC | 1s p95 | Deterministic pre-check with no model spend. |
| fast | $0.01 USDC | $0.002 USDC | 2.5s p95 | Cached data, heuristics, and single-model adjudication. |
| deep | $0.03 USDC | $0.006 USDC | 45s p95 | Configured specialist swarm with cross-examination. |
Authentication and payment.
API key
Keyed Free or prepaid credits
Attach X-API-Key. The service applies the key's allowance or prepaid balance before analysis begins.
x402
Wallet-native USDC
Call without a key, settle the returned top-level payment challenge on a supported chain, and retry the identical request.
Virtuals ACP
preTradeTokenRiskCheck
The live ACP offering costs $0.05 per check and returns the same decision contract through its deliverable.
Request schema.
The fixture demonstrates the core fields. Optional context, staleness, lifecycle, timing, market-state, and trade-intent fields are discoverable from the live service contract.
addressstringchainstringlevelstringincludearrayError contract.
Every error is an explicit policy branch. The error-code list is tested against the pinned live discovery fixture.
| Code | HTTP | Agent action |
|---|---|---|
| invalid_address | 400 | Validate the address against the selected chain and stop the trade. |
| unsupported_chain | 400 | Route only supported-chain assets here; stop on every other chain. |
| level_unavailable | 400 | Read the enabled levels from service discovery and halt unless policy permits another depth. |
| payment_required | 402 | Pay the top-level x402 challenge or attach a funded key, then retry the identical request.The x402 challenge is returned at the top level. |
| payment_invalid | 402 | Replace the payment proof or key. Do not retry unchanged credentials. |
| rate_limited | 429 | Wait for details.retry_after_s or Retry-After, then retry with bounded backoff.Response includes details.retry_after_s and the Retry-After header. |
| upstream_data_unavailable | 503 | Halt execution and surface the dependency failure. Never fail open. |
| internal_error | 500 | Halt, use a retry voucher when returned, and alert if the retry fails. |
Limits and caching.
- Per payer
- 5 requests / second
- Burst
- 20 requests
- triage cache hit
- $0.0002 USDC
- fast cache hit
- $0.002 USDC
- deep cache hit
- $0.006 USDC
Service discovery.
Read discovery before hardcoding capabilities. The checked-in response below is refreshed by the fixture generator.
curl -sS https://api.vswarm.io/v2/verdict/info{
"schema_version": "1.1",
"service": "VerdictSwarm Verdict API",
"levels": {
"triage": {
"description": "Deterministic no-LLM triage lane for machine trials",
"latency_p95_ms": 1000,
"price_usdc": "0.001",
"cache_ttl_s": 60,
"enabled": true,
"reason": "deterministic-only lane; zero LLM spend"
},
"fast": {
"description": "Cached data + heuristics + single-model adjudication",
"latency_p95_ms": 2500,
"price_usdc": "0.01",
"cache_ttl_s": 120,
"enabled": true
},
"deep": {
"description": "Full 6-agent swarm — the token examined from every angle",
"latency_p95_ms": 45000,
"price_usdc": "0.030",
"cache_ttl_s": 600,
"enabled": true
}
},
"include_options": {
"lifecycle": {
"description": "Deterministic lifecycle phase, confidence, age, launchpad, and evidence."
},
"timing": {
"description": "Descriptive entry risk, phase band, and exit pressure statistics.",
"disclaimer": "Descriptive market statistics; not investment advice."
},
"exit_sim": {
"description": "Deterministic exit feasibility at your intended trade size (requires trade_intent). Solana only in v0.",
"decision_values": [
"allow",
"reduce",
"defer",
"block"
]
},
"safe_swap": {
"description": "Executable Jupiter route with a disclosed platform fee (requires trade_intent). Solana only in v0.",
"disclaimer": "Route includes a disclosed platform fee paid to VerdictSwarm. Fee never influences the verdict."
},
"market_state": {
"description": "Multi-timeframe trend/momentum state plus Hyperliquid positioning (funding, open interest, liquidation clusters) where listed. Descriptive market statistics refreshed every 6 hours.",
"disclaimer": "Descriptive market statistics; not investment advice."
}
},
"cache_hit_price_fraction": 0.2,
"degraded_policy": {
"charge": "full",
"retry_voucher": {
"scope": "chain:address:level:payer",
"ttl_s": 86400,
"one_use": true
},
"auto_recovery": true
},
"vouchers_configured": true,
"supported_chains": [
"solana",
"base"
],
"billing_mode": "x402",
"rate_limits": {
"per_payer_rps": 5,
"per_payer_burst": 20
},
"free_tier": {
"enabled": true,
"mint_endpoint": "POST /v2/keys",
"auth_required": false,
"daily_limits": {
"triage": 2000,
"fast": 300,
"deep": 10
},
"key_mint_limits": {
"per_ip_daily": 3,
"global_daily": 500
},
"overage": "x402 or prepaid credits once the daily quota is exhausted",
"degrade_policy": "deep degrades to fast when the free deep-lane budget is exhausted; the response says so"
},
"sample_response_fields": [
"schema_version",
"request",
"verdict",
"signals",
"agents",
"data_freshness",
"token",
"data_quality",
"data_confidence",
"insufficient_data",
"lifecycle",
"timing",
"market_state",
"cached",
"generated_at",
"latency_ms",
"billing"
],
"error_codes": [
"invalid_address",
"unsupported_chain",
"upstream_data_unavailable",
"payment_required",
"payment_invalid",
"internal_error",
"rate_limited",
"level_unavailable"
],
"signals_vocabulary": [
"honeypot_simulation",
"mint_authority",
"freeze_authority",
"lp_lock_burn",
"top10_holder_concentration",
"contract_verified",
"buy_tax",
"sell_tax",
"liquidity_vs_mcap",
"bundle_detection"
]
}curl -sS https://api.vswarm.io/.well-known/x402Try the same asset.
solana · JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN