Developers
Developer guide
Every Checkpoint402 service is a plain HTTPS GET that returns JSON. There are no accounts or API keys: requests are paid one at a time with x402, the open HTTP payment standard, in USDC on Base.
Endpoints
Base URL https://api.checkpoint402.com. The full machine-readable spec is at /openapi.json.
| Endpoint | Service | Price |
|---|---|---|
| GET /v1/tx-explain | Transaction Explainer | $0.03 |
| GET /v1/defi-yields | Best DeFi Yield Finder | $0.05 |
| GET /v1/new-tokens | New Token Safety Feed | $0.10 |
| GET /v1/company-events | Company Events (SEC 8-K) | $0.10 |
| GET /v1/sanctions-screen | Sanctions Screening | $0.05 |
Free, unpaid endpoints: / (service list with parameters), /health and /openapi.json.
How payment works
- You call an endpoint without payment. It answers
402 Payment Requiredwith aPAYMENT-REQUIREDheader stating the exact price, network and receiving wallet. - Your client signs a USDC transfer authorization for that amount. This is a signature only; no gas is needed.
- You repeat the call with the signature in a
PAYMENT-SIGNATUREheader. - We run the request. Only if it succeeds is the payment settled on-chain, and the transaction is returned in the
PAYMENT-RESPONSEheader. Invalid input (400) and source outages (502) are never charged.
The x402 client libraries do all of this for you in one call.
TypeScript example
// npm i @x402/fetch @x402/evm viem
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const wallet = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(wallet));
const fetchPaid = wrapFetchWithPayment(fetch, client);
const res = await fetchPaid(
"https://api.checkpoint402.com/v1/sanctions-screen?address=0x098B716B8Aaf21512996dC57EB0615e2383E2f96"
);
console.log(await res.json());Use a dedicated agent wallet holding only a small USDC balance. Python, Go and other clients are listed at x402.org.
Try it without code
The Try it page runs the same flow with your browser wallet.
Errors
| 400 | Invalid or missing input. The body explains what to fix. | Charged: No |
| 402 | Payment required, or the payment could not be accepted. | Charged: No |
| 405 | Only GET is supported on service endpoints. | Charged: No |
| 502 | An upstream data source is unavailable. Retry shortly. | Charged: No |
| 500 | Unexpected error on our side. | Charged: No |
Rules
Payments from wallets on the US sanctions list are refused automatically. Please don't hammer the endpoints. Data is for information only; see the Terms of Service. Questions or a service you'd like added? Contact us.