development
branch, which is also the production deploy.
How deprecations work
- The contract is the base URL plus your key.
https://nexus.gerowallet.io/api/...with anX-Api-Key, andhttps://nexus.gerowallet.io/api/v0with aproject_id, do not change. - Additive changes ship without notice: new endpoints, new optional query parameters, new fields in a response.
- Breaking changes are announced here first, with a minimum of 30 days between the notice and the change, and the old behaviour kept for that window. A breaking change is a removed endpoint, a removed or renamed response field, a changed default, or a tightened validation rule.
- If a change reaches you without a notice here, it is a bug on our side. Email nexus@gerowallet.io.
2026-10
GET /api/assets/detailedInfocarries metadata when yaci-store answers first (2026-10-05).onchainMetadata,cip68Metadata,metadata,mintCnt,burnCnt,mintOrBurnCount,creationTimeandinitialMintTxHashwere null on mainnet, preprod and preview whenever yaci-store answered the request, because yaci-store indexes no asset metadata. They are now filled from Koios in that case, on a best-effort basis. Fields can remain null when metadata is absent, Koios is unavailable, or the fill fails. Supply (quantity) still comes from the first provider that answers. Fix.- Metadata for many assets in one call:
POST /api/assets/metadata(2026-10-05). Send up to 100 units as{"units": ["<policy id><asset name hex>", ...]}. Every requested unit is a key ofdata, in request order and in your spelling; a unit that is unknown or has no metadata maps tonullinstead of being dropped. Each entry carriesonchainMetadata, the asset’s own CIP-25 entry from label 721 of its minting transaction (only that asset’s object, not the whole label-721 body; the lookup follows the label’sversion, so a v1 name is matched as text and a v2 name as0xbytes);cip68Metadata, the CIP-68 reference datum’s metadata map decoded to JSON (byte strings as UTF-8 text where valid, otherwise hex, and chunked lists kept as arrays), with the datum’s version incip68Version; andmetadata, the token-registry entry, the same objectGET /api/assets/detailedInforeturns. Works on mainnet, preprod and preview. Unchanged, now documented:onchainMetadataandcip68MetadataonGET /api/assets/detailedInfoare JSON text, not objects. The nulls they had whenever yaci-store answered are fixed by the entry above. New.
2026-09
-
Pool delegators are current on preview and preprod (2026-09-30). On those networks,
GET /api/pools/{poolId}/delegatorsand/api/v0/pools/{pool_id}/delegatorsnow list the pool’s current delegators with each account’s current stake (UTxO plus unwithdrawn rewards), read when you ask, instead of the one-epoch-old stake snapshot. The native envelope says"live": true;/api/v0answers in Blockfrost’s own order with no paging depth limit. A pool with delegators but no row in the newest snapshot used to answer 404 and now lists them. The snapshot stays the fallback if the read is unavailable. Fix. -
Account UTxOs: inline-datum hashes and token fingerprints now match the failover provider
(2026-09-30). When the primary provider answers
GET /api/account/{stakeAddress}/utxos, an inline datum’sdatumHashis now blake2b-256 of the datum’s bytes as they are on chain. That is how the ledger and the failover provider already computed it. It used to be the hash of the indexer’s re-encoding of the datum, which differs whenever the original encoding does. Each token inassetListnow also carries its CIP-14fingerprint, as it already did on failover. Fix. -
Transaction views encode reference scripts the same whichever provider answered
(2026-09-30).
reference_scripton the inputs, outputs, reference inputs and collateral inputs ofGET /api/transactions/{txHash}now follows the contractreferenceScripthas on address UTxOs.bytesis the script exactly as the ledger hashes it: for Plutus the serialised script (59…), for native the native-script CBOR.typeisnative,plutusV1,plutusV2orplutusV3, andsizeis the length ofbytes. Most requests used to return the whole CIP-33[tag, script]CBOR (82 0X…) asbytes, withtypeandsizenull. That value did not hash to the script’s hash.script_refonGET /api/transactions/{txHash}/utxos,POST /api/transactions/utxosand the address transaction history is unchanged on most requests: the CIP-33[tag, script]CBOR. It now takes that form on every request. When the failover provider answered, it used to be the serialised script with no language tag, or null.POST /api/transactions/utxosno longer drops native assets, inline datums and reference scripts when the failover provider answers.referenceScriptonGET /api/account/{stakeAddress}/utxos, when the failover provider answers:timelockis nownative, a native script carries its CBOR inbytes, andjsonis null.
-
Connect to MCP with your Nexus login (2026-09-27). MCP clients can now sign in through the
Nexus login page instead of sending an API key: add
https://nexus.gerowallet.io/mcpwithout a key and your client opens the browser sign-in the first time (see MCP Server). Signed in this way, the account tools act as you. API keys keep working as before. Additive. -
MCP applies API-key scope (2026-09-27). A key with an endpoint allowlist can call MCP tools
only if the allowlist includes
/mcp, and public partner (widget) keys are always refused. Until now the allowlist applied only to/api/**, so an allowlisted or partner key could run the chain, market, transaction-building and Midnight tools on its owner’s quota whenever the owner’s plan carried the MCP add-on (the account tools already refused API keys). Unrestricted keys are unaffected. Security fix, so no deprecation window. -
MCP server moves to Streamable HTTP (2026-09-26). The MCP endpoint is now
POST https://nexus.gerowallet.io/mcpover stateless Streamable HTTP; configure clients with"type": "http"(see MCP Server). The SSE endpoints/mcp/sseand/mcp/messagesare removed and answer 404. This skips the usual 30-day notice on purpose: since 2026-07-31 the SSE transport has failed in production (a session’s follow-up messages often reached a server that did not hold the session and were answered with 404), so no working behaviour was left to keep. Tools, auth and the MCP add-on are unchanged. -
Pool delegators are live on mainnet (2026-09-25).
GET /api/pools/{poolId}/delegatorsnow serves each account’s current delegated stake, refreshed about every 2 hours, instead of the one-epoch-old stake snapshot. The native envelope gains alivefield (truefor live figures,falsefor the snapshot fallback, which still applies on other networks or when the live data is stale). On/api/v0the live path answers in Blockfrost’s own order, oldest delegation first, with no paging depth limit; it takes effect there once/api/v0serves mainnet keys, which it does not yet. Additive; the snapshot fallback behaves as before. - API reference: 59 operations that had no page now have one, including all ten Conway governance operations, the six aggregator endpoints, the Policy family, transaction metadata and ADA Handles. The docs sitemap went from 154 to 213 URLs.
- Every Cardano operation page is retitled as the task it performs: “Get all UTxOs for a Cardano address”, “Submit a signed Cardano transaction”, “Query the votes cast by a Cardano DRep”. Page URLs follow the titles; every previous URL redirects permanently to its new address. No path, parameter or response shape changed.
- Trial funnel metrics endpoint for the control panel scoreboard, internal only.
-
Midnight: preview network retired, stagenet added. The supported set is now stagenet,
preprod and mainnet; the
midnight-previewpath segment no longer resolves. On stagenet the read path (info, indexer, DUST state) is on, and transaction build and submit are refused with a clear error until the sidecar moves to the ledger version stagenet runs. No customer key was scoped to preview. -
Epoch parameters: cost models are served as arrays alongside the existing object form
on
GET /api/epoch/latest/parametersandGET /api/epoch/params. Additive. -
Cardano: 23 endpoints added to close the Maestro gap, served from Nexus’s own indexers and
chain database. Addresses:
decode, bulkPOST /api/addresses/utxos(50 per call),transactions/count, credentialbalanceplus bulk credential UTxOs and transactions (25 per call). Accounts:delegations,updates,history, cursor-paged. Assets:mints,accounts,transactions; policies:mints,addresses,accounts,transactions. Epochs:GET /api/epoch/{epochNo}. Network:era-summaries,system-start. Scripts: bulkPOST /api/scripts/datums(100 per call). Handles:GET /api/handles/{handle}. Pools:GET /api/pools/{poolId}/delegators, and the compatible/api/v0/pools/{pool_id}/delegatorsis now served natively instead of guarded. Full map on Migrate from Maestro. - Transaction script data on mainnet and credential-read timeouts fixed (reported by FluidTokens).
2026-08
- Bitcoin API expanded to Maestro parity: address inscriptions, runes and ordinals, mempool transactions, fee estimates, bulk transaction reads, and mainnet electrs enabled. Map on Migrate from Maestro: Bitcoin.
- Koios-backed reads fill UTxO chain facts and block metadata that the upstream
tx_infoleaves out. Additive; same response shapes. - Blog posts prerendered on the marketing site (no API change).
- Governance:
GET /api/drepswidened to the single-source-of-truth contract; committee vote rows carry a join key to the committee endpoint;getProposalVotesgained a Koios fallback. Additive. - Blockfrost-compatible surface: a native-reshape router for the guarded pool paths, dark by default. No behaviour change until enabled.
- Stake pools:
GET /api/poolsgained search, sort and paging, with CIP-0149 per-mille validation on inputs. Additive. - Registration: Cloudflare Turnstile on sign-up, shipped dark.
2026-07
- Assets: registry-metadata proxy backed by the Nexus token registry. Additive.
- Batch transaction reads served from direct SQL behind a flag. Same shapes.
- IPFS add-on: plain
GET /api/ipfsrelays the gatewayContent-Type. - Rate limiting: Redis-backed distributed limit, dark and flag-gated; per-tier numbers on Rate Limits unchanged.
- Stake pools: pool history gained a real provider fallback plus
countandpage. - Observability:
nexus_tip_lag_msgauge; verifiedtxSizeand deposit limits documented. - Billing: two-phase trial grants, card fingerprinting, per-IP checkout throttle. No API change for data calls.
- Support chat: non-custodial live-chat identity minting at
/api/support/chatfor the GeroWallet extension.
Earlier
The API reached its current shape through 2026-05 and 2026-06 with the same-origin SPA, the Blockfrost-compatible surface at/api/v0, the market-data proxy, the transaction builder and
WebSocket streaming. Entries start where the public changelog does; ask nexus@gerowallet.io for
history before that.