Reference

Endpoint reference

Every route under /api/v1. Pick a tab to copy a working snippet in curl, browser fetch, or C#. Replace your-host with wherever this app is running.

Node

Read-only views of the local Chia full node. /node/state is cached at the HTTP layer for 5 seconds.

GET /api/v1/node/status

Connectivity check, network name, and peak height. Cheapest call you can make.

curl https://your-host/api/v1/node/status
GET /api/v1/node/state

Peak hash, difficulty, mempool size, sync flag. Cached for 5 seconds.

curl https://your-host/api/v1/node/state

Coins

Lookups return a CoinSearchResult with coinRecords, totalAmount, and totalUnspentAmount in mojos. Set limit to cap the response; default is 100, max 1000.

GET /api/v1/coins/{coinId}

Single coin record, or 404. Accepts 64-hex with or without 0x prefix.

curl https://your-host/api/v1/coins/0xabc123...
GET /api/v1/coins/by-puzzle-hash/{addressOrHash}

Coin records for an address or puzzle hash. Accepts xch1… or raw hex.

curl "https://your-host/api/v1/coins/by-puzzle-hash/xch1abcdef...?limit=50" 
GET /api/v1/coins/by-hint/{hintHex}

Coin records by hint. Same pagination shape as puzzle-hash lookups.

curl "https://your-host/api/v1/coins/by-hint/abc123...?limit=50" 

Address & hex

Pure functions — no node round-trip. Inputs are normalized inside the library (ChiaAddressCodec.Normalize*); pass xch1…, 0x…, or bare hex.

POST /api/v1/address/decode

xch1… → puzzle hash hex.

curl -X POST https://your-host/api/v1/address/decode \
  -H "Content-Type: application/json" \
  -d '{"address":"xch1abcdef..."}'
POST /api/v1/address/encode

Puzzle hash hex → bech32m address. Default HRP is xch.

curl -X POST https://your-host/api/v1/address/encode \
  -H "Content-Type: application/json" \
  -d '{"puzzleHash":"abc...","hrp":"xch"}'
POST /api/v1/asset-id/normalize

Canonical lowercase hex for a CAT asset id.

curl -X POST https://your-host/api/v1/asset-id/normalize \
  -H "Content-Type: application/json" \
  -d '{"assetId":"0xABC..."}'

Offers (read-only)

Both endpoints round-trip to the local wallet RPC, so they're rate-limited to 10/min per IP. Offer text is capped at 64 KB.

POST /api/v1/offers/inspect

Summarise offered and requested assets. No mutation.

curl -X POST https://your-host/api/v1/offers/inspect \
  -H "Content-Type: application/json" \
  -d '{"offer":"offer1..."}'
POST /api/v1/offers/validate

Boolean validity check for an offer string.

curl -X POST https://your-host/api/v1/offers/validate \
  -H "Content-Type: application/json" \
  -d '{"offer":"offer1..."}'

Security teaching reports

Pure in-memory content. Cached for 30 seconds. Good targets for the “does the API work?” smoke test.

GET /api/v1/security/entropy-failure

Leakage report on weak or biased entropy.

curl https://your-host/api/v1/security/entropy-failure
GET /api/v1/security/bls-hazards

Common BLS implementation pitfalls.

curl https://your-host/api/v1/security/bls-hazards
GET /api/v1/security/bundle-exclusion

Partial-bundle manipulation scenarios with verdicts.

curl https://your-host/api/v1/security/bundle-exclusion

Health

GET /api/v1/health

Returns { status: 'ok' } if the web app is running. Does not check the node.

curl https://your-host/api/v1/health
An unhandled error has occurred. Reload 🗙