Quickstart

Make your first API call in 30 seconds. No signup, no API key, no SDK required.

1. Get a quote

# Quote 0.1 ETH execution — returns fee + validity window
curl -X POST https://api.nano-labs.io/v1/quote \
  -H "Content-Type: application/json" \
  -d '{
    "chain": "ETH",
    "asset": "ETH",
    "amount": "100000000000000000"
  }'
// Response
{
  "ok": true,
  "quote_id": "66976b7bd9e40569b912000cfc583fd1",
  "chain": "ETH",
  "asset": "ETH",
  "amount": "100000000000000000",
  "fee_bps": 8,
  "protocol_fee": "80000000000000",
  "net": "99920000000000000",
  "expires_at": 1771959307,
  "valid_seconds": 30,
  "est_execution_seconds": 12,
  "finality": "~12s block, finalized in ~2 min",
  "permissionless": true
}

2. Execute the quote

curl -X POST https://api.nano-labs.io/v1/execute \
  -H "Content-Type: application/json" \
  -d '{
    "quote_id": "66976b7bd9e40569b912000cfc583fd1"
  }'

3. Track the intent

curl https://api.nano-labs.io/v1/intent/<intent_id>
That's it. Three calls: quote, execute, track. No API key needed. Fee is deducted from the amount automatically.

Authentication

NanoStack is permissionless by default. All core endpoints work without an API key.

Why get an API key?

Register (self-service)

curl -X POST https://api.nano-labs.io/v1/register \
  -H "Content-Type: application/json" \
  -d '{"name": "my-app", "email": "[email protected]"}'

Returns a key in nano_live_{32hex} format. Pass it as:

curl -H "x-api-key: nano_live_abc123..." https://api.nano-labs.io/v1/quote ...

Pricing

Fee is 8-15 basis points, locked at quote time for 30 seconds.

AmountFee (bps)On $10,000
Any amount10 (base)$10.00
> $10,000 equiv9$9.00
> $100,000 equiv8$8.00
Fee is deducted from the gross amount. If you send 1 ETH with 8 bps fee, you pay 0.0008 ETH and 0.9992 ETH reaches the destination. No extra charge, no gas markup.

Supported Chains

BitcoinP2WPKH + RBF · ~600s
EthereumEIP-1559 · ~12s
Solanaed25519 · ~1s
BaseL2 EVM · <2s
ArbitrumL2 EVM · <2s
OptimismL2 EVM · <2s
AvalancheEVM · ~2s
PolygonEVM · ~2s
BNB ChainEVM · ~3s
Cosmosamino/proto · ~6s

Additional L2s: zkSync, Linea, Scroll, Blast, Mantle, Gnosis, Fantom, Sei

Errors

All errors return JSON with ok: false and an error field.

{
  "ok": false,
  "error": "quote_expired",
  "message": "Quote validity window (30s) has elapsed. Request a new quote."
}
ErrorHTTPMeaning
quote_expired400Quote older than 30 seconds
insufficient_balance400Wallet guard: amount exceeds available balance
unsupported_chain400Chain not in supported list
unsupported_asset400Asset not recognized on specified chain
rate_limited429Too many requests (20/min without key, 100/min with key)
signer_unavailable503Signer daemon temporarily unavailable
execution_failed500On-chain transaction failed

POST /v1/quote No Auth

POST/v1/quote
Get a fee-locked execution quote. Valid for 30 seconds. Permissionless.

Request Body

FieldTypeDescription
chainstringrequiredTarget chain: ETH, BTC, SOL, BASE, ARB, OP, etc.
assetstringrequiredAsset symbol: ETH, BTC, USDC, etc.
amountstringrequiredAmount in smallest unit (wei, satoshi, lamports)
destination_addressstringDestination wallet address (optional)

Response

FieldTypeDescription
okbooleanSuccess flag
quote_idstringUnique quote identifier — pass to /v1/execute
fee_bpsintegerFee in basis points (8-15)
protocol_feestringAbsolute fee in smallest unit
netstringAmount after fee deduction
valid_secondsintegerQuote validity window (30)
est_execution_secondsintegerEstimated chain settlement time
finalitystringHuman-readable finality description
permissionlessbooleanAlways true

Example

curl -X POST https://api.nano-labs.io/v1/quote \
  -H "Content-Type: application/json" \
  -d '{"chain":"ETH","asset":"ETH","amount":"100000000000000000"}'

{
  "ok": true,
  "quote_id": "66976b7bd9e40569b912000cfc583fd1",
  "fee_bps": 8,
  "protocol_fee": "80000000000000",
  "net": "99920000000000000",
  "valid_seconds": 30,
  "est_execution_seconds": 12,
  "finality": "~12s block, finalized in ~2 min",
  "permissionless": true
}

POST /v1/execute No Auth

POST/v1/execute
Execute an intent using a quote_id. Generates on-chain transaction. Permissionless.

Request Body

FieldTypeDescription
quote_idstringrequiredQuote ID from /v1/quote response
chainstringChain (alternative to quote_id for direct execution)
assetstringAsset symbol
amountstringAmount in smallest unit
destination_addressstringDestination wallet

Response

FieldTypeDescription
okbooleanSuccess flag
intent_idstringUnique intent identifier for tracking
txidstringOn-chain transaction hash
pathstringExecution path taken
feestringFee charged
statusstringprovisional, settled, or failed

GET /v1/intent/{id} No Auth

GET/v1/intent/{id}
Look up an intent by ID. Returns full execution details and settlement status.

Path Parameters

ParamTypeDescription
idstringIntent ID from /v1/execute response

POST /v1/register No Auth

POST/v1/register
Self-service API key registration. Optional but recommended for higher rate limits and analytics.

Request Body

FieldTypeDescription
namestringrequiredYour application name
emailstringrequiredContact email

Response

{
  "ok": true,
  "api_key": "nano_live_a1b2c3d4e5f6...",
  "tier": "standard",
  "rate_limit": "100/min"
}

GET /tokens No Auth

GET/tokens
List all 83 supported tokens across all chains. Filter by chain with /tokens/{chain}.
curl https://api.nano-labs.io/tokens

{
  "ok": true,
  "count": 83,
  "tokens": [
    {"symbol":"USDC","name":"USD Coin","chain":"eth","decimals":6,"contract":"A0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},
    {"symbol":"USDT","name":"Tether USD","chain":"eth","decimals":6,"contract":"dAC17F958D2ee523a2206206994597C13D831ec7"},
    ...
  ]
}

GET /v1/status No Auth

GET/v1/status
Protocol status including total fees collected and integrity root.
curl https://api.nano-labs.io/v1/status

{
  "ok": true,
  "protocol": "NanoStack",
  "service": "nanolink",
  "integrity_root": "0x...",
  "total_fees": "1543700258367523"
}

GET /health No Auth

GET/health
Service health check. Returns 200 if operational.
curl https://api.nano-labs.io/health

{"ok": true, "service": "nanolink"}

GET /v1/telemetry/head No Auth

GET/v1/telemetry/head?n=10
Latest N telemetry frames. Full execution trace with cryptographic settlement proofs.

Query Parameters

ParamTypeDefaultDescription
ninteger10Number of frames (max 100)

Response (single frame)

{
  "seq": 12001,
  "trace_id": "1af593c6...",
  "chain": 8453,
  "chain_name": "base",
  "asset": "USDC",
  "status": "settled",
  "gross": "100000000000",
  "fee": "90000000",
  "net": "99910000000",
  "fee_bps": 9,
  "txid": "0x4f8b868...",
  "state_root": "acc2ed93...",
  "settlement_hash": "cc7b2abb..."
}

GET /v1/telemetry/range No Auth

GET/v1/telemetry/range?from=TIMESTAMP&to=TIMESTAMP
Telemetry frames within a time range (unix timestamps).

GET /v1/telemetry/proof_snapshot No Auth

GET/v1/telemetry/proof_snapshot
Cryptographic settlement proofs with integrity roots.

GET /v1/revenue/summary No Auth

GET/v1/revenue/summary
WAL-backed total revenue. Includes integrity root for verification.
curl https://api.nano-labs.io/v1/revenue/summary

{
  "ok": true,
  "total_fees": "1543700258367523",
  "integrity_root": "0x...",
  "source": "wal"
}

GET /v1/integrity/root No Auth

GET/v1/integrity/root
Hot root (XOR fold) and cold root (BLAKE3 batch proof). Verify settlement integrity.

GET /v1/ofi/venues No Auth

GET/v1/ofi/venues
Available execution venues. 14 DEXs and aggregators.
curl https://api.nano-labs.io/v1/ofi/venues

{
  "ok": true,
  "venues": [
    "uniswap_v3", "aerodrome", "sushiswap_v3", "baseswap",
    "pancakeswap_v3", "curve", "balancer_v2", "maverick_v2",
    "woofi", "1inch", "0x", "paraswap", "odos", "kyberswap"
  ],
  "count": 14
}

GET /v1/ofi/volume No Auth

GET/v1/ofi/volume?chain=8453
Per-chain execution volume from engine telemetry.

GET /v1/ofi/fees No Auth

GET/v1/ofi/fees
Total fees collected and fee range statistics.

Bot Integration

NanoStack exposes a structured bot API for automated integrations.

EndpointDescription
GET /v1/bots/signalReal-time protocol state: receipts, volume, success rate, fees
GET /v1/bots/tickSingle-frame bot poll endpoint (WS-equivalent payload)
GET /v1/bots/schemaFull integration schema for automated discovery
GET /v1/bots/capabilitiesProtocol capabilities and supported operations
GET /v1/bots/signalsAvailable signal endpoints
GET /v1/bots/integrityMarket integrity policies
GET /v1/bots/verifierExternal verifier specification
GET /v1/bots/schema_hashSHA256 hash of schema for integrity checks

Transport: Primary realtime is wss://api.nano-labs.io/ws (secondary wss://api.nano-labs.io/v1/ws). Permanent fallback is polling /v1/bots/tick + /v1/bots/signal.

Bot Signal Example

curl https://api.nano-labs.io/v1/bots/tick


{
  "ok": true,
  "protocol": "NanoStack",
  "receipts": 12002,
  "settled": 7667,
  "provisional": 2243,
  "failed": 2092,
  "total_volume": "1929561487031326325",
  "total_fees": "1543700258367523",
  "success_rate": 0.8257,
  "fee_bps": 10
}

Aggregator Integrations

NanoStack is integrated with major cross-chain aggregators as a settlement provider.

AggregatorTypeStatus
Li.FiBridge providerLive
SocketBridgeLive
1inchResolverLive
ParaSwapAdapterLive
0xIntegratorLive
OdosRouter partnerLive
JupiterQuote providerLive
RaydiumAMMLive
CoW SwapSolverLive
curl https://api.nano-labs.io/v1/integrations

CoW Protocol Solver

POST/cow/solve
CoW Protocol solver engine. Receives batch auction, returns optimized settlement solution.
POST/cow/notify
CoW Protocol notification callback.

Interactive Playground

Try the API directly in your browser: Open Playground

NanoStack · api.nano-labs.io · OpenAPI · Explorer · Blockframe™