Every stablecoin freeze and seizure on record — with evidence.

The record, programmatically

The same events the public site shows, over HTTP, for teams screening addresses before funds move. For AI assistants and agents, the same record is served by our MCP server, documented at .

As of 17 August 2026. Access is by request; there is no self-serve checkout for the API yet.

What it returns

Every recorded action a stablecoin company took against an address on a public blockchain: blacklistings, freezes, balance seizures, releases, and sanctions listings published on-chain. Each carries the chain, the coin, the company, the block, and the transaction hash that executed it.

It returns the record and nothing else. There is no score, no band, and no opinion about an address or the person behind it — that is a rule here rather than an omission. What an event means for your decision is yours to make, and the transaction hash is there so every row can be checked against the chain.

An address with nothing on record returns an empty event list and the coverage behind that answer: which chains and coins were checked, and as of when. A lane that is behind says so rather than returning a clean result it cannot support.

Authentication

A bearer key on every request. Keys are created from your account and are prefixed ev_ so one is recognizable in a log, or in a leaked config, before it is used.

Request
curl https://eaglevirtual.com/v1/addresses/0x0024f658a46fbb89d8ac105e98d4cf6e2bd16f8d \
  -H "Authorization: Bearer ev_live_..."

A response

JSON, one object per address, events newest first. An amount appears only where the source event carries one; where it does not, the field is absent rather than zero. A zero would read as "nothing was taken", which is a different claim from "the record does not say".

Response — 200
{
  "address": "0x0024f658a46fBb89D8Ac105e98d4Cf6E2Bd16F8D",
  "checked_at": "2026-08-17T00:00:00Z",
  "coverage": { "chains": 17, "coins": 57, "as_of": "2026-08-17" },
  "events": [
    {
      "event": "seized",
      "company": "Tether",
      "coin": "USDT",
      "chain": "Ethereum",
      "observed_at": "2026-08-17T09:14:11Z",
      "block": 23847221,
      "tx": "0x9b2328055872e7470e9cfdafa0186c1c72c3bac4",
      "signature": "DestroyedBlackFunds(address,uint256)"
    }
  ]
}

Endpoints

Five routes. The OpenAPI document is public and needs no key, so the contract can be read — and generated against — before anyone talks to us.

Endpoints
Item Detail
GET /v1/openapi.json The machine-readable contract. Public, no key required.
GET /v1/addresses/{address} The full record for one address, with the coverage behind it.
POST /v1/addresses/batch The same for many addresses in one call. Batch size comes from your plan.
GET /v1/chains Every chain covered, with its lane status and how current it is.
GET /v1/usage Unique addresses used this billing month, against your plan limit.

Rate limits

Per key, per minute, from your plan. Every authenticated response carries the current window so a client can pace itself without guessing, and a 429 says exactly how long to wait.

Headers on every authenticated response
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 297
X-RateLimit-Reset: 1787002860

# and on a 429
Retry-After: 12
Rate limits
Item Detail
Starter 10 requests per minute
Growth 300 requests per minute
Enterprise 1,000 requests per minute

What you pay for

Unique addresses per calendar month, not queries. Checking the same address a thousand times in a month counts once — monitoring a list you already screen should not cost more the more carefully you do it.

Queries themselves are unlimited, subject to the rate limits above. Going over your address allowance does not switch your service off mid-month.

The public site stays free, unlimited, and needs no account. The API is for teams that need the same record programmatically: bulk checks, monitoring a list, and alerting when something on it changes.

What you pay for
Item Detail
Free — the public site Unlimited address checks, no account, no key
Starter 200 unique addresses per month
Growth 2,000 unique addresses per month
Enterprise Custom, with volume and support terms

Getting a key

Access is by request while the API is in its first release. There is no self-serve checkout yet, and saying so is more useful than a buy button that opens a contact form anyway.

Tell us roughly how many addresses you expect to screen a month and which chains matter to you, and we will come back with a key and a limit. Sign in first if you want the key attached to an account you already have.

Getting a key
Item Detail
API access sales@eaglevirtual.com
MCP server — open, no key needed
Everything else hello@eaglevirtual.com

Questions people ask

Do I need an API key to check a single address?

No. The public site checks any address free, with no account and no rate limit. The API is for doing it programmatically, in bulk, or on a schedule.

Does the API return a risk score?

No, and it will not. It returns the recorded events with the transaction that executed each one. We report what companies did and when; we do not characterize an address or the person behind it.

What happens when an address has nothing on record?

You get an empty event list plus the coverage behind that answer — which chains and coins were checked, and as of when. If a lane is behind, the response says so rather than returning a clean result it cannot support.

Am I billed per query?

No. Billing is on unique addresses per calendar month. Re-checking an address you already screened this month does not cost again, and queries are unlimited subject to per-minute rate limits.

Which chains does it cover?

The same ones the public site does. GET /v1/chains returns the current list with each lane status, so you can see how current each one is rather than assuming.