Base URL: https://bank-risk-api.culturehub-kash.workers.dev. All responses are JSON. Machine-readable spec: /openapi.json. Agent summary: /llms.txt.
Paid routes return HTTP 402 with:
PAYMENT-REQUIRED: base64 JSON, x402 v2 (scheme: exact, network: eip155:8453, asset: USDC 0x8335…2913, payTo: 0x9f7165394a6a09bf3608d3510645da71867d4eb8, amount in atomic units, e.g. 10000 = $0.01), plus Bazaar discovery metadata;network: base, maxAmountRequired) for older clients.Retry with PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1). The server verifies the payment with a public facilitator, builds the response, and settles only if the response is 2xx. The receipt is returned in PAYMENT-RESPONSE (v2) or X-PAYMENT-RESPONSE (v1). Example with the official client:
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
const client = new x402Client(); client.register("eip155:*", new ExactEvmScheme(account));
const pay = wrapFetchWithPayment(fetch, client);
const r = await pay("https://bank-risk-api.culturehub-kash.workers.dev/v1/banks/628"); console.log(await r.json());
| Method & path | Price | Description |
|---|---|---|
| --- | --- | --- |
GET /v1/banks/{cert} | $0.01 | Full metrics + inputs_thousands_usd + provenance + history (5 quarters) |
GET /v1/banks/screen | $0.02 | Params: metric (required), top 1-100, order desc/asc, state, min_assets_usd |
GET /v1/banks/search?q= | free | Name search → cert numbers |
GET /v1/banks/sample | free | 3 full sample responses |
GET /v1/free/banks/{cert} | free | 5/day/IP trial of the paid lookup |
GET /v1/status | free | Freshness, reconciliation pass rates |
GET /v1/datasets | free | Dataset registry (more datasets planned: SEC EDGAR, FRED) |
POST /mcp | mixed | MCP server (streamable HTTP, JSON-RPC) |
| --- | --- |
|---|---|
risk_score | Composite risk score 0-100 (higher = riskier) |
uninsured_deposit_share | Estimated uninsured domestic deposits / domestic deposits, % |
cre_concentration | Regulatory-style CRE loans / total risk-based capital, % |
construction_concentration | Construction & land development loans / total risk-based capital, % |
unrealized_loss_to_tangible_equity | Unrealized AFS+HTM securities losses / tangible equity, % |
htm_adjusted_tangible_equity_ratio | (Tangible equity - HTM unrealized loss) / tangible assets, % |
loan_to_deposit | Net loans & leases / total deposits, % |
noncurrent_loan_ratio | Noncurrent loans & leases / gross loans & leases, % |
npa_to_assets | (Noncurrent loans + other real estate owned) / total assets, % |
nim | Net interest margin, % (FDIC-published, YTD annualized) |
roa | Return on assets, % (FDIC-published, YTD annualized) |
total_rbc_ratio | Total risk-based capital ratio, % (FDIC-published) |
leverage_ratio | Tier 1 leverage ratio, % (FDIC-published) |
total_assets_usd | Total assets, USD |
Formulas: methodology. Provenance fields: source_url, report_date, quarter, fdic_index, retrieved_at, methodology_version, inputs_sha256.
400 invalid input · 404 unknown bank · 429 free quota exhausted · 502 facilitator unreachable · 500 internal. Error bodies include "charged": false.
/v1 is stable. Additive fields may appear. Breaking changes would ship as /v2 with notice in the changelog.
Open-source repository: publication pending.
Data: FDIC BankFind Suite (public Call Report data). Derived metrics are informational only and are not investment, credit or legal advice. Open methodology v1.0.0. Terms & refunds · llms.txt · OpenAPI · x402