NanoTracker for agents
An agent that holds or spends Nano needs to know what one Nano cost on a given day, and whether its wallet is in the plus or in the minus. Building that yourself means loading every block, keeping daily rates since 2018 in many currencies and running FIFO per wallet. Here it is one HTTP call: rates are free, the wallet answer costs a fraction of a cent, paid in Nano, with no account and no API key.
Machine-readable: OpenAPI · agent-payment.json · llms.txt
Prices
- Rate of one day (
/api/v1/kurs): free. - Rates of up to 31 days (
/api/v1/kurse): free. - Wallet plus/minus (
/api/v1/wallet-pnl): USD 0.002 per call, paid in Nano (XNO) at the day's rate; the first call per IP is free.
1 · Rate of one day (free)
Price of 1 XNO on a date (UTC), in one of 24 currencies: USD, USDT, EUR, TZS, CHF, GBP, KES, UGX, ZAR, INR, BRL, JPY, AUD, CAD, NZD, SGD, HKD, CNY, NGN, MXN, SEK, NOK, PLN, AED. Without datum you get the current rate (marked provisional).
curl 'https://nanotracker.app/api/v1/kurs?datum=2024-03-04&waehrung=EUR'
{
"datum": "2024-03-04",
"waehrung": "EUR",
"xno_kurs": "1.32333397",
"vorlaeufig": false,
"gefuellt": false,
"quelle": {
"xno": "Binance public market data, daily close UTC: ...",
"fx": "Yahoo Finance chart API daily close: USDT-USD, EURUSD=X, USD<CCY>=X",
"methode": "USD = XNO/USDT x USDT/USD; EUR = USD / EURUSD; other = USD x USD<CCY>",
"anbieter": "NanoTracker (nanotracker.app)"
},
"hinweis": "for use inside your own calculations, no redistribution"
}
2 · Rates of a period (free, at most 31 days)
curl 'https://nanotracker.app/api/v1/kurse?von=2024-03-04&bis=2024-03-06&waehrung=USD'
{
"von": "2024-03-04", "bis": "2024-03-06", "waehrung": "USD",
"tage": [
{"datum": "2024-03-04", "xno_kurs": "1.434850", "vorlaeufig": false},
{"datum": "2024-03-05", "xno_kurs": "1.355771", "vorlaeufig": false},
{"datum": "2024-03-06", "xno_kurs": "1.447644", "vorlaeufig": false}
],
"quelle": { ... },
"hinweis": "for use inside your own calculations, no redistribution"
}
The rates are for use inside your own calculations. Please do not republish or resell the rate table.
3 · Wallet plus/minus (paid)
One public Nano address, treated as a private holding: balance, value today, cost basis, gain or loss, average buy price and the date when the next part leaves the one-year holding period. These are the same totals as on the NanoTracker start page.
curl -X POST https://nanotracker.app/api/v1/wallet-pnl \
-H 'Content-Type: application/json' \
-d '{"adresse":"nano_1..."}'
Answer while you still have the free call (shortened):
{
"adresse": "nano_1...",
"annahme": "private holding, one address, FIFO",
"uebersicht": {"bestand": "6", "wert_heute": {...}, "einstand": {...},
"unrealisiert": {...}, "naechste_haltefrist": {...}, ...},
"durchschnitt_kaufkurs": {"USD": "1.21000000", "EUR": "1.11500000", ...},
"kurs_heute": {"USD": "0.34556369", "EUR": "0.30841565", ...},
"hinweis": "Not tax advice. ...",
"trial": true,
"freeCallsLeft": 0
}
If the address is read from the ledger for the first time, you get 202 with "status": "loading". Repeat the same request after a few seconds; this does not use up your free call or your payment.
How to pay (x402, in Nano)
- Call
/api/v1/wallet-pnlwithout payment. Once the free call is used, the answer is402 Payment RequiredwithpayTo,amountXNO,amountUSDandmaxAmountRequired(raw), also as headersX-Payment-AddressandX-Payment-Amount-XNO. - Send that amount in XNO to the agent wallet
nano_19zs7s5cwnccx7nqyhukxhuxnjqk14xzicbhue1o9kn6n3bescfc8rbpwmdg. Nano has no fee and confirms in about one second. - Repeat the same request with the header
X-Payment-Hash: <hash of your send block>. - You get
200with the result. The block must be confirmed, sent to the address above, not older than 24 hours, and cover at least 90 % of the quoted amount (the rate changes once a day). Each hash is accepted once. - Lost the answer? Send the same request again with the same hash and the same address within 24 hours, and you get the result again at no cost.
curl -X POST https://nanotracker.app/api/v1/wallet-pnl \
-H 'Content-Type: application/json' \
-H 'X-Payment-Hash: 0123...ABCD' \
-d '{"adresse":"nano_1..."}'
Privacy
We only need the public address, never a seed or private key. The address is used for the request and not stored. With a paid call, a keyed one-way hash of the address is kept next to the payment hash for 24 hours, so that only the payer can fetch the result again; then it is deleted. IP addresses are not stored; the free call per IP is counted in memory only. Rates are requested without any address.
Limits
Up to 10 requests per second per IP at the edge, and fair-use limits per minute in the service. Rates: at most 31 days per request. Wallet: one address per request.
Not tax advice. The figures show the plus or minus of one wallet under the FIFO assumption for a private person (holding period one year, German law). Your own situation can differ. Rates: Binance daily close (XNO/USDT) and Yahoo Finance (currencies), no warranty.
As of: October 2026.
