Batch
Screen many tokens in a single request — ideal for portfolios and watchlists. Each item is billed at its per-check price with a 25% discount.
POST
/api/v1/batch
Auth: account balance or x402. Up to 100 projects per request.
Request
| Field | Type | Required | Description |
|---|---|---|---|
| projects | object[] | Required | Array of { "address", "chain" }. Max 100. |
| report_type | string | Optional | standard · deep_dive. Default standard. |
curl -X POST https://csds.blockchainrangers.com/api/v1/batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"projects": [
{ "address": "0xAAA…", "chain": "ethereum" },
{ "address": "0xBBB…", "chain": "bsc" }
],
"report_type": "standard"
}'
$headers = @{ Authorization = "Bearer YOUR_API_KEY" }
$body = @{
projects = @(
@{ address = "0xAAA…"; chain = "ethereum" },
@{ address = "0xBBB…"; chain = "bsc" }
)
report_type = "standard"
} | ConvertTo-Json -Depth 5
Invoke-RestMethod "https://csds.blockchainrangers.com/api/v1/batch" `
-Method Post -Headers $headers -Body $body -ContentType "application/json"
import httpx
r = httpx.post(
"https://csds.blockchainrangers.com/api/v1/batch",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"projects": [
{"address": "0xAAA…", "chain": "ethereum"},
{"address": "0xBBB…", "chain": "bsc"},
],
"report_type": "standard",
},
)
batch = r.json()
# addresses.txt: one address per line (optional "address,chain")
csds batch addresses.txt --format ndjson
Response
| Field | Type | Description |
|---|---|---|
| batch_id | string | UUID for this batch. |
| status | string | completed · partial_failure · failed. |
| total_projects / completed / failed | integer | Counts across the batch. |
| scam_blocked | integer | How many items were hard-blocked as confirmed scams (billed the flat $0.10 lookup fee, not analyzed). |
| results | object[] | Per item: status (success/failed) and a report or error. A confirmed-scam item is success with report.blocked === true. |
| pricing | object | Per-item and total cost with the discount applied. |
{
"batch_id": "f1c2…",
"status": "partial_failure",
"total_projects": 2,
"completed": 1,
"failed": 1,
"scam_blocked": 0,
"results": [
{ "project_address": "0xAAA…", "chain": "ethereum", "status": "success",
"report": { "risk_score": 18, "risk_level": "LOW" } },
{ "project_address": "0xBBB…", "chain": "bsc", "status": "failed",
"error": "Project not found" }
],
"pricing": { "discount_percentage": 25, "total_cost_usd": 0.08, "currency": "USD" }
}
A batch can partially succeed. Always iterate
results and check each item's status rather than trusting the top-level one alone.Any item that's a confirmed community-reported scam is hard-blocked (no analysis) and billed a flat $0.10 instead of the discounted per-item price. Its result is
status: "success" with report.blocked === true and report.code === "reported_scam".