Skip to content
Docs · API reference

API reference.

AllowanceGuard REST API v1. Scan wallets, query allowances, score risk, and simulate revocations — programmatically across all 27 supported EVM chains. Base URL https://www.allowanceguard.com/api/v1. JSON responses, Bearer-token authentication.

Authentication.

Every endpoint except /health requires an API key, sent as a Bearer token in the Authorization header.

curl -H"Authorization: Bearer ag_live_your_key_here" \
 https://www.allowanceguard.com/api/v1/chains

Keep your API key secret. Never expose an ag_live_* key in client-side code. Use an ag_pub_* read-only key for browser contexts, or proxy through your server.

Rate limits.

Applied per API key, based on plan. Every response carries rate-limit headers so you can back off cleanly.

PlanDaily limitBurst / minPrice
Free10010$0
Developer10,00060$39/mo
Growth100,000300$149/mo
EnterpriseUnlimitedUnlimitedCustom

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Response format.

Every endpoint returns a consistent JSON envelope with data, error, and meta fields. Exactly one of data or error is non-null on every response.

{"data": { ... },"error": null,"meta": {"requestId":"550e8400-e29b-41d4-a716-446655440000","timestamp":"2026-03-30T12:00:00.000Z","rateLimit": {"limit": 10000,"remaining": 9999,"window":"rolling-24h"
 }
 }
}

Endpoints.

Eight endpoints, grouped by purpose. The interactive panels let you test against your own key.

Health & info.

Wallet scanning.

Allowances.

Risk assessment.

Simulation.

Quick start.

Scan a wallet and retrieve its risk profile in three API calls.

const API_KEY = 'ag_live_your_key_here';
const BASE = 'https://www.allowanceguard.com/api/v1';
const headers = { 'Authorization': `Bearer ${API_KEY}` };

// 1. Trigger a scan
const scan = await fetch(`${BASE}/scan`, {
 method: 'POST',
 headers: { ...headers, 'Content-Type': 'application/json' },
 body: JSON.stringify({ wallet: '0x1234...abcd' }),
}).then(r => r.json());

const scanId = scan.data.scanId;

// 2. Poll until complete
let status = 'pending';
while (status === 'pending' || status === 'running') {
 await new Promise(r => setTimeout(r, 2000));
 const job = await fetch(`${BASE}/scan/${scanId}`, { headers }).then(r => r.json());
 status = job.data.status;
}

// 3. Get the risk score
const risk = await fetch(
 `${BASE}/risk-score?wallet=0x1234...abcd`,
 { headers }
).then(r => r.json());

console.log(`Risk: ${risk.data.riskScore}/100 (${risk.data.riskLevel})`);

Error codes.

HTTPCodeDescription
400BAD_REQUESTInvalid request parameters or body
401MISSING_AUTHNo Authorization header provided
401INVALID_API_KEYAPI key is invalid, expired, or revoked
403FORBIDDENInsufficient plan permissions
404NOT_FOUNDResource does not exist
429RATE_LIMIT_EXCEEDEDDaily rate limit exceeded
429BURST_RATE_LIMIT_EXCEEDEDPer-minute burst limit exceeded
500INTERNAL_ERRORUnexpected server error

Ready to integrate? Grab a key from the account dashboard, or review the plans first.

Allowance Guard