GET/api/v1/tokens/{address}
Token
Supply, amount locked on Virtuallock, chain-wide burned share, holders and stock-token facts for one token.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | ERC-20 token address on this network. |
Read lock and burn data, embed live badges, and receive part of every burn fee you bring.
Time locks with unlock dates that can only move later. Create and extend them from your app with the SDK.
SDK quickstartBurns with a public receipt. Send users to a prefilled burn and receive part of the fee on-chain.
Partner programAny token's locked and burned share, or a wallet's commitment, as JSON or a live badge.
API referenceTyped TypeScript on viem. It reads fees on-chain before each call and refuses to burn stock tokens. Install it with npm install @vaultline-app/sdk viem.
const { lockId } = await vl.lock({
token: "0xToken",
amount: 25_000_000n * 10n ** 18n,
unlockAt: new Date("2027-10-03"),
});
await vl.extendLock({ lockId, unlockAt: new Date("2028-01-01") });
Plain GET requests, JSON out, permissive CORS. Amounts are base-unit integers as strings. Send a key in the x-api-key header, never in the URL.
# No key: 60 requests a minute per IP
curl {origin}/api/v1/tokens/0xYourToken
# With a free key: higher limit, usage in your console
curl -H "x-api-key: $VAULTLINE_API_KEY" \
"{origin}/api/v1/burns?token=0xYourToken&limit=10"Live SVG badges for a token's locks and burns. They update themselves and always render.
<a href="{origin}/token/0xYourToken"><img src="{origin}/api/v1/badge/0xYourToken" alt="Locked on Virtuallock" height="28"></a>
<a href="{origin}/token/0xYourToken"><img src="{origin}/api/v1/badge/burn/0xYourToken" alt="Burned via Virtuallock" height="28"></a>Call the contracts directly. None has an owner, a pause switch or an upgrade path. On Robinhood Chain:
BurnRouter is not live on Robinhood Chain yet. The terms are fixed in the contract when it is deployed and shown here from then on.
Send users to /burn?token=0x…&partner=0xYourWallet&return=https://your.site. The form shows who referred them, and return adds a button back to your site.
The router credits your wallet a fixed share of the flat burn fee on every burn that names you. A user may add a tip for you: never prefilled, zero by default, refused above an on-chain maximum.
Your share accrues in the router. Only your wallet can withdraw it, with withdrawPartnerBalance(), and it pays only you. Nobody sends it for you, so use a wallet or Safe that can receive ETH.
Enter a token address to get its links.
Over the limit you get 429 with Retry-After. Every response carries X-RateLimit-Limit, -Remaining and -Reset. Locks and burns cost only the flat contract fees, read on-chain. Virtuallock never takes a share of your tokens.
Read-only and versioned: a /api/v1 response only gains fields. Errors are { "error": "…" } with a 4xx or 5xx status. Internal routes outside /api/v1 can change at any time.
GET/api/v1/tokens/{address}
Supply, amount locked on Virtuallock, chain-wide burned share, holders and stock-token facts for one token.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | ERC-20 token address on this network. |
GET/api/v1/tokens/{address}/burns
Everything burned for one token through BurnRouter: totals, share of supply, top burners, monthly timeline, latest receipts.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | ERC-20 token address on this network. |
GET/api/v1/tokens/{address}/insider-float
How much circulating supply sits in launch-linked wallets, and how much of it is locked. Evidence per wallet, never a label.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | ERC-20 token address on this network. |
GET/api/v1/burns
Burns made through BurnRouter, newest first. Filter by token, burner or partner.
| Parameter | In | Meaning |
|---|---|---|
token | query | Token address. |
burner | query | Wallet that burned. |
partner | query | Partner named in the burn. |
limit | query | 1 to 500, default 100. |
GET/api/v1/wallets/{address}/passport
A wallet's lock record: conviction score with its parts, facts, every lock, vesting and burn count. No prices.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | Wallet address on this network. |
GET/api/v1/commitment
Has a wallet committed at least an amount of a token until a date? Read on-chain at the latest block.
| Parameter | In | Meaning |
|---|---|---|
walletrequired | query | The wallet to check. |
tokenrequired | query | ERC-20 token address. |
minAmount | query | Raw base units as a decimal integer string. Default 0. |
until | query | Unix seconds, an ISO date or a rolling window like +30d. Default now. |
includeVesting | query | Count unvested VestingVault tokens. Default true. |
GET/api/v1/commitment/proof
The commitment answer plus every lock and vesting id that counted, so anyone can re-check it on-chain.
| Parameter | In | Meaning |
|---|---|---|
walletrequired | query | The wallet to check. |
tokenrequired | query | ERC-20 token address. |
minAmount | query | Raw base units as a decimal integer string. Default 0. |
until | query | Unix seconds, an ISO date or a rolling window like +30d. Default now. |
includeVesting | query | Count unvested VestingVault tokens. Default true. |
GET/api/v1/badge/{address}
An SVG badge with the share of supply locked on Virtuallock. Always a valid image, even for a bad address.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | ERC-20 token address on this network. |
GET/api/v1/badge/burn/{address}
An SVG "Burned via Virtuallock" badge: share of supply burned through the router, or the burn count.
| Parameter | In | Meaning |
|---|---|---|
addressrequired | path | ERC-20 token address on this network. |
Pick an endpoint and send. The response appears here.