API reference

The CSDS API is organized around plain HTTPS and JSON. It analyzes a token's on-chain footprint and returns a 0–100 risk score with specific red flags. Responses are predictable, errors are typed, and rate limits are returned in headers.

Base URL

All endpoints are served over HTTPS from a single base URL:

https://csds.blockchainrangers.com/api

The current major version is v1, namespaced under /api/v1/. Requests and responses are JSON; send Content-Type: application/json on every POST.

Authentication

Paid analysis is settled from an account balance (priced in USD cents) or via the x402 payment flow. There are no per-request API keys enforced by the server today — programmatic API-key auth is Beta and tracked on the Authentication page. You can call the API directly or use the CLI — both bill each analysis from your account balance.

Unfunded requests to paid endpoints return 402 Payment Required with a payment_requirements object. See Authentication.

Endpoints

Four analysis endpoints trade depth for cost and latency. Pick the lightest one that answers your question.

EndpointMethodCostRate limitUse it for
/api/v1/standard-report POST $1.00 100 / hour A full breakdown across every dimension.
/api/v1/deep-dive POST $5.00 20 / hour Historical comparison + monitoring.
/api/v1/batch POST −25% 10 / hour Screening many tokens at once.

Make your first call

Every request needs two things: your API key (which authenticates you and bills the call to your balance) and a small JSON body with the token's project_address and chain.

Step 1 — Get your API key

Open the dashboardAPI KeysCreate key. Copy it immediately — it's shown only once and looks like csds_live_…. (Make sure your balance is topped up, or calls return 402.)

Step 2 — Send it on every request

Put the key in an Authorization header: Authorization: Bearer YOUR_API_KEY. In each example below, replace YOUR_API_KEY with the key you just copied.

curl -X POST https://csds.blockchainrangers.com/api/v1/standard-report \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"project_address":"0x6982508145454ce325ddbe47a25d4ec3d2311933","chain":"ethereum"}'
# Paste your key here (or read it from an env var: $env:CSDS_API_KEY)
$apiKey = "YOUR_API_KEY"

$headers = @{ Authorization = "Bearer $apiKey" }
$body    = @{ project_address = "0x6982508145454ce325ddbe47a25d4ec3d2311933"; chain = "ethereum" } | ConvertTo-Json

Invoke-RestMethod "https://csds.blockchainrangers.com/api/v1/standard-report" `
  -Method Post -Headers $headers -Body $body -ContentType "application/json"
import httpx

API_KEY = "YOUR_API_KEY"  # from your dashboard

r = httpx.post(
    "https://csds.blockchainrangers.com/api/v1/standard-report",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"project_address": "0x6982508145454ce325ddbe47a25d4ec3d2311933", "chain": "ethereum"},
)
print(r.status_code, r.json())
const API_KEY = "YOUR_API_KEY"; // from your dashboard

const r = await fetch("https://csds.blockchainrangers.com/api/v1/standard-report", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ project_address: "0x6982508145454ce325ddbe47a25d4ec3d2311933", chain: "ethereum" }),
});
console.log(await r.json());
# Save your key once (stored locally); or set the CSDS_API_KEY env var instead
csds config set api-key YOUR_API_KEY

# The chain is optional — the CLI auto-detects it
csds check 0x6982508145454ce325ddbe47a25d4ec3d2311933 --chain ethereum --format json
Prefer a different header? X-API-Key: YOUR_API_KEY works too. A missing or invalid key returns 401; a valid key with an empty balance returns 402top up and retry. Never expose your key in front-end/browser code that others can see.

Conventions

Identifying a token

Every analysis request takes two core fields:

FieldTypeRequiredDescription
project_addressstringRequiredContract/mint address. EVM: 0x + 40 hex. Solana: base58 (32–44 chars).
chainstringRequiredA live supported chainethereum, bnb/bsc, or solana (more soon). blockchain is accepted as an alias.

Risk levels

Every response carries a numeric risk_score (0–100) and a risk_level string:

LOW 0–25  MEDIUM 26–50  HIGH 51–75  CRITICAL 76–100

Errors & rate limits

Errors use standard HTTP status codes with a typed JSON body. Every response includes X-RateLimit-* headers. See Errors and Rate limits for the full reference.

Next

Authentication Balance billing, x402, and API keys. Standard report The core endpoint, field by field. Errors Every status code and how to handle it.