Seqlense docs

Wallets

Register crypto wallet addresses, link them to identities, and pull risk and sanctions enrichment.

A wallet is a crypto address you want to monitor. Each wallet is identified by its address and chain, can be linked to one or more identities, and carries risk enrichment (categories, sanctions, a risk score) fetched from Seqlense's intelligence provider.

Like identities, wallets are scoped to your organization, resolved from the API key on the request. Deletes are soft: a wallet is deactivated, never hard-deleted.

Address and chain

The pair (address, chain) is unique within the platform: creating a wallet that already exists fails. A few rules:

  • address is 10 to 128 characters, made of letters, digits, and _ - :.
  • chain is an uppercase identifier of letters and digits, max 20 characters (for example ETH, BTC, SOL, TRX, TON, DOGE, BSC, POLYGON).
  • label is an optional human-readable name, max 100 characters.

Create a wallet

POST /v1/wallet/ with an address and chain. Seqlense enriches the new wallet in the background, so its risk data is usually ready by the time you fetch it (see Enrichment).

curl -X POST "https://api.seqlense.com/v1/wallet/" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "0xABC0000000000000000000000000000000000001",
    "chain": "ETH",
    "label": "Treasury"
  }'
{ "status": "ok", "id": "b1d3f0a2-0000-4000-8000-000000000001" }

List, search, and paginate

GET /v1/wallet/ returns your active wallets, 20 per page, newest first. Filter by chain, search address or label with q, and page with page.

curl -H "Authorization: Bearer YOUR_API_KEY" \
    "https://api.seqlense.com/v1/wallet/?chain=ETH&q=treasury&page=1"
{
  "wallets": [
    {
      "id": "b1d3f0a2-0000-4000-8000-000000000001",
      "address": "0xABC0000000000000000000000000000000000001",
      "chain": "ETH",
      "label": "Treasury",
      "created_at": "2026-07-27T10:00:00Z",
      "updated_at": "2026-07-27T10:00:00Z"
    }
  ]
}

The list response is a plain wallets array (no pagination envelope). Walk pages by incrementing page until you get fewer than 20 results. For a full dump, use Export instead.

Use GET /v1/wallet/detail?id=… for a single wallet plus the identities linked to it.

Update

PUT /v1/wallet/ is a partial update of label and/or chain. The address cannot be changed; delete the wallet and recreate it to move to a different address.

curl -X PUT "https://api.seqlense.com/v1/wallet/" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "id": "b1d3f0a2-0000-4000-8000-000000000001", "label": "Cold storage" }'

Delete

DELETE /v1/wallet/?id=… soft-deletes a wallet (is_active = false).

Bulk create

POST /v1/wallet/bulk registers up to 500 wallets in one call. The array key is wallets, and the response reports created and failed counts (an item fails on an invalid address or chain, or a duplicate).

curl -X POST "https://api.seqlense.com/v1/wallet/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallets": [
      { "address": "0xABC0000000000000000000000000000000000001", "chain": "ETH" },
      { "address": "bc1qxy2000000000000000000000000000000000", "chain": "BTC", "label": "Ops" }
    ]
  }'
{ "status": "ok", "created": 2, "failed": 0 }

Export

GET /v1/wallet/export returns up to 10,000 wallets, as JSON (default) or CSV. It takes the same chain and q filters as the list endpoint. Pass format=csv for a downloadable file.

curl -H "Authorization: Bearer YOUR_API_KEY" \
    "https://api.seqlense.com/v1/wallet/export?format=csv" -o wallets.csv

Enrichment

GET /v1/wallet/enrich returns risk and intelligence data for a wallet: address type, behavioural categories, off-chain labels, sanctions screening, and a risk score and level.

Address it either by id, when you hold the wallet's UUID, or by address, when you only have the address itself. Exactly one of the two is required.

Results are cached. A fresh cached result is returned unless you pass force=true to force a new lookup.

curl -H "Authorization: Bearer YOUR_API_KEY" \
    "https://api.seqlense.com/v1/wallet/enrich?id=b1d3f0a2-0000-4000-8000-000000000001"
{
  "status": "ok",
  "type": "EOA",
  "categories": ["exchange"],
  "labels": ["Acme Exchange hot wallet"],
  "sanctions": {},
  "risk_score": 12,
  "risk_level": "LOW",
  "enriched_at": "2026-07-27 10:00:00",
  "cached": true
}

Enrichment is best-effort. If the upstream provider is unavailable, the endpoint still returns HTTP 200 with an error envelope: { "status": "error", "error": "..." }. Check status before reading the risk fields.

Wallets connect to the people and entities that control them. Both the wallet and the identity must belong to your organization.

  • POST /v1/wallet/link-identity with { "wallet_id": "…", "identity_id": "…" }.
  • DELETE /v1/wallet/link-identity?wallet_id=…&identity_id=… to unlink.

Linked identities are returned inline by GET /v1/wallet/detail.

Recurring work

A wallet can carry work that repeats, so you do not have to trigger it yourself each time. Today that means a recurring market abuse scan.

POST /v1/wallet/schedules
{ "wallet_id": "…", "kind": "MABU", "interval_days": 7, "enabled": true }

interval_days runs from 1 to 90: daily at the tightest, quarterly at the loosest. Enabling a schedule makes its first run due immediately.

  • GET /v1/wallet/schedules?wallet_id=… lists what a wallet has, along with the kinds available and the interval bounds.
  • DELETE /v1/wallet/schedules?wallet_id=…&kind=MABU removes one.

A wallet holds at most one schedule per kind, and posting the same kind twice changes it rather than failing.

kind names what recurs, so this endpoint is not tied to market abuse: other kinds of recurring work will use these same three calls. MABU is the only kind today.

A schedule keeps its cadence even when a launch fails: the reason is kept in last_error and the next occurrence still stands, because one failed launch is not a reason to stop watching a wallet.

Full reference

Every endpoint, parameter, schema, and a live "try it" console are in the API Reference.

On this page