Developers
Netrivo Indexer API
OpenAPI 1.0 · 57 operations across 19 groups
API key required on every request
All endpoints — including the Trial tier — require a key in theAuthorization: Bearer <key>header. Trial is rate-limited to 1 API/sec (60 req/min) with 250 total requests; Pro and Business packs raise the ceiling. Create a key at /account/api-keys · pricing on /pricing.
# Replace YOUR_KEY with the secret printed when you created it.
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.netrivo.xyz/v1/parties?limit=5"health
Liveness + readiness probes
GET/healthLiveness probe
Returns 200 if the process is up. Does not touch the DB.
No parameters.
Responses: 200
GET/readyReadiness probe
Verifies that PostgreSQL is reachable and Scan API is responding.
No parameters.
Responses: 200
stats
Network-wide totals + ingestion rate
GET/v1/statsNetwork-wide totals
All headline counters from agg_network_totals + agg_ledger_rate. Cached 15s in-memory.
No parameters.
Responses: 200
GET/v1/stats/syncIndexer sync status (cursor, lag, last seen)
No parameters.
Responses: 200
ledger
Raw v2/updates stream + per-template counts
GET/v1/ledgerList ledger updates from Scan v2/updates
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| from | query | string | — | ISO record_time lower bound (inclusive) |
| to | query | string | — | ISO record_time upper bound (exclusive) |
| has_rewards | query | boolean | — | |
| has_transfers | query | boolean | — | |
| template | query | string | — | Substring match on any template_id |
Responses: 200
GET/v1/ledger/{updateId}Single ledger update with full raw payload
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| updateId | path | string | yes |
Responses: 200
transfers
On-chain CC transfers
GET/v1/allocations/{contractId}Single AmuletAllocation contract row
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| contractId | path | string | yes |
Responses: 200
GET/v1/token-transfersToken-standard transfers — TransferCommand (external party flow) + AmuletAllocation
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| sender | query | string | — | |
| receiver | query | string | — | |
| party | query | string | — | Match either sender or receiver |
| kind | query | "command" | "allocation" | "all" | — | |
| status | query | string | — | |
| limit | query | integer | — |
Responses: 200
GET/v1/token-transfers/summaryToken-standard transfer counts by status (commands + allocations)
No parameters.
Responses: 200
GET/v1/transfer-commands/{contractId}Single TransferCommand contract row
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| contractId | path | string | yes |
Responses: 200
GET/v1/transfersOn-chain CC transfers
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| sender | query | string | — | |
| receiver | query | string | — | |
| party | query | string | — | Match either sender or receiver |
| from | query | string | — | |
| to | query | string | — |
Responses: 200
GET/v1/transfers/{updateId}All transfer events under one ledger update
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| updateId | path | string | yes |
Responses: 200
rewards
Reward coupons + timelines + leaderboard
GET/v1/rewardsList reward coupon events
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| party | query | string | — | |
| template | query | string | — | |
| round | query | integer | — | |
| from | query | string | — | |
| to | query | string | — |
Responses: 200
GET/v1/rewards/by-typeRewards aggregated by template type
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| window | query | "24h" | "7d" | "30d" | "all" | — |
Responses: 200
GET/v1/rewards/leaderboardTop parties by total rewards earned
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| window | query | "24h" | "7d" | "30d" | "all" | — |
Responses: 200
GET/v1/rewards/timelineReward totals per time bucket
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| bucket | query | "hour" | "day" | — | |
| from | query | string | — | |
| to | query | string | — | |
| limit | query | integer | — |
Responses: 200
offers
TransferOffer FSM
GET/v1/offersTransferOffer current-state listing
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| sender | query | string | — | |
| receiver | query | string | — | |
| status | query | "created" | "accepted" | "rejected" | "expired" | "withdrawn" | — |
Responses: 200
GET/v1/offers/{contractId}Single TransferOffer with optional FSM event trail
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| include_events | query | "true" | "false" | — | |
| contractId | path | string | yes |
Responses: 200
subscriptions
Wallet.Subscription state + payments
GET/v1/subscriptionsSubscription current-state listing
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| payer | query | string | — | |
| provider | query | string | — | |
| status | query | "active" | "idle" | "terminated" | — |
Responses: 200
GET/v1/subscriptions/{contractId}Single subscription detail
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| contractId | path | string | yes |
Responses: 200
GET/v1/subscriptions/{contractId}/paymentsPayment history for a subscription
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| contractId | path | string | yes |
Responses: 200
app-payments
Wallet.Payment AppPaymentRequest lifecycle
GET/v1/app-paymentsAppPaymentRequest listing
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| payer | query | string | — | |
| app_id | query | string | — | |
| status | query | "requested" | "accepted" | "rejected" | "expired" | — |
Responses: 200
GET/v1/app-payments/{contractId}Single app payment
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| contractId | path | string | yes |
Responses: 200
preapprovals
TransferPreapproval contracts
GET/v1/preapprovalsTransferPreapproval listing
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| receiver | query | string | — | |
| provider | query | string | — | |
| status | query | "active" | "expired" | "revoked" | — |
Responses: 200
GET/v1/preapprovals/{contractId}
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| contractId | path | string | yes |
Responses: 200
holdings
Per-party CC balances + top-N
GET/v1/holdings/{partyId}Current holdings for a single party
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| partyId | path | string | yes |
Responses: 200
GET/v1/holdings/{partyId}/historyPeriodic balance snapshots (for charting)
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| partyId | path | string | yes |
Responses: 200
GET/v1/holdings/topTop holders by current balance
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — |
Responses: 200
parties
Universal party registry
GET/v1/partiesList parties with optional search & filters
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| q | query | string | — | Substring search on party_id / display_name / cns_name |
| sort | query | "balance" | "rewards" | "last_seen" | — | |
| type | query | "validator" | "super_validator" | "featured_app" | "external" | "regular" | — | |
| has_cns | query | boolean | — |
Responses: 200
GET/v1/parties/{id}Single party with all aggregate counters
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
GET/v1/parties/{id}/activityUnified activity feed: transfers, transfer-offers, transfer-commands, subscriptions, app-payments and preapprovals where this party participates.
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| kind | query | string | — | Comma-separated kinds to include; default = all |
| limit | query | integer | — | |
| before | query | string | — | Cursor: ISO timestamp; rows with record_time < this are returned. Use the last row's record_time from the previous page. |
| counts_only | query | string | — | If 'true', returns only the kind-counts (skip data rows). Use to populate filter chips without paying for the row scan. |
| id | path | string | yes |
Responses: 200
GET/v1/parties/{id}/balance-historyBalance history from cached Scan ACS snapshots. Window: 24h | 7d | 30d | all (default all). Returns one point per snapshot the indexer has cached for this party in that window. Pass `?live=true` to opt into a live Scan walk for older points (adds latency, default is cache-only with cache_status hint).
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| window | query | "24h" | "7d" | "30d" | "all" | — | |
| max_points | query | integer | — | |
| live | query | boolean | — | |
| id | path | string | yes |
Responses: 200
GET/v1/parties/{id}/rewardsRewards actually earned by this party
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
GET/v1/parties/{id}/transfersTransfers where this party is sender or receiver
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
validators
Validator metadata + uptime
GET/v1/validatorsList validators with metadata + cross-referenced party stats (rewards, balance, last seen).
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| active | query | boolean | — | |
| sv | query | boolean | — | true → only SVs, false → exclude SVs |
| q | query | string | — | |
| sort | query | "name" | "rewards" | "last_seen" | "first_seen" | "version" | — | |
| limit | query | integer | — | |
| offset | query | integer | — |
Responses: 200
GET/v1/validators/{id}
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
GET/v1/validators/{id}/price-votesAmuletPriceVote history for a single SV (newest first)
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| id | path | string | yes |
Responses: 200
GET/v1/validators/{id}/rewards-by-templatePer-template breakdown of ALL reward coupons attributable to this validator (self-rewards + VRCs from hosted users). Aggregated over the full history, not the last-N rolling window.
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
GET/v1/validators/{id}/roundsPer-round liveness participation. Backed by `validator_rounds` (one row per (validator, round) where the validator emitted a ValidatorLivenessActivityRecord — the on-chain canonical signal for round-level uptime).
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
GET/v1/validators/{id}/trafficCumulative MemberTraffic snapshots over time + per-period deltas
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| window | query | "24h" | "7d" | "30d" | "all" | — | |
| id | path | string | yes |
Responses: 200
GET/v1/validators/summaryValidator counts + version histogram (cheap)
No parameters.
Responses: 200
super-validators
DSO super-validator set
GET/v1/amulet-rulesLatest AmuletRules snapshot
No parameters.
Responses: 200
GET/v1/dso-infoLatest DSO snapshot raw payload
No parameters.
Responses: 200
GET/v1/super-validatorsActive SV set with per-SV node state (scan URL, mediator, sequencer, voting power) parsed from dso_info_current.raw.sv_node_states
No parameters.
Responses: 200
GET/v1/super-validators/{id}Single SV node state pulled from dso_info_current
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| id | path | string | yes |
Responses: 200
GET/v1/synchronizerNetwork topology — DSO + BFT sequencers, scheduled migration, instance names, active serial.
No parameters.
Responses: 200
governance
DsoRules choice exercises + vote tallies
GET/v1/governance/actionsDsoRules choice exercises (governance log)
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| kind | query | string | — | Filter by exact action_kind (choice name) |
| actor | query | string | — | |
| from | query | string | — | |
| to | query | string | — |
Responses: 200
GET/v1/governance/vote-requestsIn-flight DsoRules VoteRequest contracts (live votes per SV) plus recently-resolved ones
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| status | query | "active" | "resolved" | "all" | — | |
| limit | query | integer | — |
Responses: 200
GET/v1/governance/votesVote tallies from Lighthouse
No parameters.
Responses: 200
cns
Canton Name Service entries
GET/v1/cns
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| cursor | query | string | — | Opaque keyset cursor from a previous response's next_cursor. Wins over offset. |
| q | query | string | — |
Responses: 200
GET/v1/cns/{domain}
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| domain | path | string | yes |
Responses: 200
featured-apps
Featured app rights + activity
GET/v1/featured-appsActive featured-app rights + metadata, deduplicated per provider
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| window | query | "24h" | "7d" | "30d" | "all" | — | Filter activity_count + last_activity_at to this rolling window. |
Responses: 200
GET/v1/featured-apps/{partyId}/activityActivity markers issued for a featured app provider
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| partyId | path | string | yes |
Responses: 200
contracts
Daml template registry
GET/v1/contracts/templatesAll Daml templates ever observed in ledger updates
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| q | query | string | — |
Responses: 200
search
Cross-resource search (⌘K palette)
GET/v1/searchCross-resource search
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| q | query | string | yes |
Responses: 200
rounds
GET/v1/roundsList mining rounds (newest first)
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| limit | query | integer | — | |
| offset | query | integer | — | |
| state | query | "open" | "issuing" | "completed" | — |
Responses: 200
GET/v1/rounds/{number}Single mining round detail (rates + activity totals)
Parameters
| Name | In | Type | Req? | Description |
|---|---|---|---|---|
| number | path | string | yes |
Responses: 200