Build on Virtuallock.

Read lock and burn data, embed live badges, and receive part of every burn fee you bring.

  • Lock

    Time locks with unlock dates that can only move later. Create and extend them from your app with the SDK.

    SDK quickstart
  • Burn

    Burns with a public receipt. Send users to a prefilled burn and receive part of the fee on-chain.

    Partner program
  • Prove

    Any token's locked and burned share, or a wallet's commitment, as JSON or a live badge.

    API reference

Quickstart

Typed 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.

@vaultline-app/sdk
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") });

Earn part of every burn you bring.

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.

  1. Link

    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.

  2. Split

    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.

  3. Withdraw

    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.

  • Burn later and burn ladder are locks with 100% burn at withdrawal, not router burns, so they carry no partner.
  • Naming your own wallet as partner only returns the partner share of your own fee.
  • Stock tokens cannot be burned. The router refuses them on-chain.
  • Your public partner page lists every burn that named you and has the Withdraw button. Find its link in the generator below.

Free to read. A key lifts the limit.

No key
60 / min per IP
Every public endpoint. Nothing to sign up for. Cached responses do not count.
Free key
300 / min per key
Daily usage per key in your console. Sign in with your wallet, up to five active keys. Get a key
Higher limits
Not offered yet
If the free limit gets in your way, tell us what you are building.

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.

API reference

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}

Token

Supply, amount locked on Virtuallock, chain-wide burned share, holders and stock-token facts for one token.

Parameters for /api/v1/tokens/{address}
ParameterInMeaning
addressrequiredpathERC-20 token address on this network.
Returns
JSON
Cached
300 s

GET/api/v1/tokens/{address}/burns

Token burns

Everything burned for one token through BurnRouter: totals, share of supply, top burners, monthly timeline, latest receipts.

Parameters for /api/v1/tokens/{address}/burns
ParameterInMeaning
addressrequiredpathERC-20 token address on this network.
Returns
JSON
Cached
60 s
Off until
NEXT_PUBLIC_BURN_ROUTER_ADDRESS is set

GET/api/v1/tokens/{address}/insider-float

Insider Float Score

How much circulating supply sits in launch-linked wallets, and how much of it is locked. Evidence per wallet, never a label.

Parameters for /api/v1/tokens/{address}/insider-float
ParameterInMeaning
addressrequiredpathERC-20 token address on this network.
Returns
JSON
Cached
300 s
Off until
INSIDER_FLOAT_ENABLED is set

GET/api/v1/burns

Burn receipts

Burns made through BurnRouter, newest first. Filter by token, burner or partner.

Parameters for /api/v1/burns
ParameterInMeaning
tokenqueryToken address.
burnerqueryWallet that burned.
partnerqueryPartner named in the burn.
limitquery1 to 500, default 100.
Returns
JSON
Cached
60 s
Off until
NEXT_PUBLIC_BURN_ROUTER_ADDRESS is set

GET/api/v1/wallets/{address}/passport

Locker Passport

A wallet's lock record: conviction score with its parts, facts, every lock, vesting and burn count. No prices.

Parameters for /api/v1/wallets/{address}/passport
ParameterInMeaning
addressrequiredpathWallet address on this network.
Returns
JSON
Cached
60 s

GET/api/v1/commitment

Commitment check

Has a wallet committed at least an amount of a token until a date? Read on-chain at the latest block.

Parameters for /api/v1/commitment
ParameterInMeaning
walletrequiredqueryThe wallet to check.
tokenrequiredqueryERC-20 token address.
minAmountqueryRaw base units as a decimal integer string. Default 0.
untilqueryUnix seconds, an ISO date or a rolling window like +30d. Default now.
includeVestingqueryCount unvested VestingVault tokens. Default true.
Returns
JSON
Cached
30 s

GET/api/v1/commitment/proof

Commitment proof

The commitment answer plus every lock and vesting id that counted, so anyone can re-check it on-chain.

Parameters for /api/v1/commitment/proof
ParameterInMeaning
walletrequiredqueryThe wallet to check.
tokenrequiredqueryERC-20 token address.
minAmountqueryRaw base units as a decimal integer string. Default 0.
untilqueryUnix seconds, an ISO date or a rolling window like +30d. Default now.
includeVestingqueryCount unvested VestingVault tokens. Default true.
Returns
JSON
Cached
30 s

GET/api/v1/badge/{address}

Lock badge

An SVG badge with the share of supply locked on Virtuallock. Always a valid image, even for a bad address.

Parameters for /api/v1/badge/{address}
ParameterInMeaning
addressrequiredpathERC-20 token address on this network.
Returns
SVG image, always 200
Cached
300 s

GET/api/v1/badge/burn/{address}

Burn badge

An SVG "Burned via Virtuallock" badge: share of supply burned through the router, or the burn count.

Parameters for /api/v1/badge/burn/{address}
ParameterInMeaning
addressrequiredpathERC-20 token address on this network.
Returns
SVG image, always 200
Cached
300 s
Off until
NEXT_PUBLIC_BURN_ROUTER_ADDRESS is set

Playground

Any ERC-20 on this network.

Pick an endpoint and send. The response appears here.

Changelog

    • Free API keys in the developer console, sent as the x-api-key header.
    • Rate limits on every /api/v1 endpoint, with X-RateLimit headers and 429 Retry-After.
    • Partner pages at /developers/partner/{address}.
    • GET /api/v1/tokens/{address}/burns and the burn badge GET /api/v1/badge/burn/{address}.
    • Burn links with partner, tip and return: /burn?token=&partner=&return=.
    • GET /api/v1/tokens/{address}/insider-float.
    • GET /api/v1/commitment and /api/v1/commitment/proof.
    • GET /api/v1/burns.
    • stock and lookalikeWarning fields on GET /api/v1/tokens/{address}.
    • GET /api/v1/tokens/{address} and the lock badge GET /api/v1/badge/{address}.