Skip to content
pipeSOLANA

Pipe Solana services

Every Pipe Solana service

The data endpoints that are live today, and 54 services built on Pipe’s own execution of mainnet: 52 live and 2 run by Pipe on request. Each lists what it does, which plans include it, its endpoints and an example.

Every example runs as shown once you replace psol_… with a key from the dashboard and the placeholders in angle brackets with values from the index files. Keys go in an Authorization: Bearer psol_… header. The endpoints are served from http://186.233.184.235:8080, over plain HTTP for now. Services marked Testnet also answer on testnet, under http://186.233.184.235:8080/testnet, free and without a key (testnet).

  • Live answers now
  • Coming soon opens with its rollout batch
  • By request run by Pipe for you
  • Testnet also answers on testnet, free without a key
Show

Data

Accounts, transactions, snapshots, history and analytics from Pipe’s own execution of mainnet.

Live data endpoints: live today

Snapshots

Live

Full and incremental snapshot archives from Pipe’s mainnet producer, each with a SHA-256 file. The index lists them with their slots, hashes and sizes.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /snapshots/index.json
  • /snapshots/snapshot-<slot>-<hash>.tar.zst
  • /snapshots/incremental-snapshot-<base>-<slot>-<hash>.tar.zst
  • /snapshots/<archive>.tar.zst.sha256
curl -fsS "http://186.233.184.235:8080/snapshots/index.json" | jq -r '.snapshots[0].url'
curl -fL -C - -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/snapshots/snapshot-<slot>-<hash>.tar.zst"

Live: send a key from a plan that includes it.Mainnet only for now.Access group snapshotsSnapshots in the documentation →

Ledger

Live

Every shred the producer stored for a rooted slot, after erasure recovery and repair, with a JSON summary beside it.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /ledger/index.json
  • /ledger/<slot>.bin
  • /ledger/<slot>.json
curl -fsS -H "Authorization: Bearer psol_…" -o <slot>.bin "http://186.233.184.235:8080/ledger/<slot>.bin"

Live: send a key from a plan that includes it.Mainnet only for now.Access group ledgerLedger in the documentation →

Shreds by slot

LiveTestnet

Per-slot shred files for catching up to the tip. <bucket> is the slot divided by 1,000, rounded down.

Included in: Recovery, Pro, Operator, Shred feed, Validator Ops (every size).

  • /shreds/index.json
  • /shreds/<bucket>/manifest.json
  • /shreds/<bucket>/<slot>.bin
curl -fsS -H "Authorization: Bearer psol_…" -o <slot>.bin "http://186.233.184.235:8080/shreds/<bucket>/<slot>.bin"

On testnet, free without a key

  • /testnet/shreds/index.json
  • /testnet/shreds/<bucket>/manifest.json
  • /testnet/shreds/<bucket>/<slot>.bin

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group shredsShreds by slot in the documentation →

Live shreds

LiveTestnet

A stream of the newest shreds from <slot> on: frames of slot (u64), length (u16) and shred bytes, little-endian. A zero-length frame is a heartbeat.

Included in: Recovery, Pro, Operator, Shred feed, Validator Ops (every size).

  • /shreds/live?from=<slot>
curl -fsS -N -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/shreds/live?from=<slot>" > live.bin

On testnet, free without a key

  • /testnet/shreds/live?from=<slot>

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group liveLive shreds in the documentation →

Account changes

Live

One zlib-compressed batch of account changes per rooted slot, with the inputs to its bank hash.

Included in: Recovery, Pro, Operator, Change feed, Validator Ops (every size).

  • /changes/index.json
  • /changes/<bucket>/manifest.json
  • /changes/<bucket>/<slot>.chg
curl -fsS -H "Authorization: Bearer psol_…" -o <slot>.chg "http://186.233.184.235:8080/changes/<bucket>/<slot>.chg"

Live: send a key from a plan that includes it.Mainnet only for now.Access group changesAccount changes in the documentation →

Bank stream

Live

Server-Sent Events with the producer’s bank hash for each slot beside mainnet’s, for divergence alerts. Reconnect with Last-Event-ID to resume.

Included in: Recovery, Pro, Operator, Bank stream, Validator Ops (every size).

  • /bank/stream?from=<slot>
curl -fsS -N -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/bank/stream?from=<slot>"

Live: send a key from a plan that includes it.Mainnet only for now.Access group streamBank stream in the documentation →

Bank states

Live

The same per-slot states for up to 1,000 slots at a time. The status file is free.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /bank/stream.json?from=<slot>&to=<slot>
  • /bank/stream/status.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/bank/stream.json?from=<slot>&to=<slot>"

Live, and free without a key at the free tier’s limits.Mainnet only for now.Access group bankBank states in the documentation →

JSON-RPC

LiveTestnet

Solana JSON-RPC methods answered from Pipe’s execution of mainnet.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • POST /rpc
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}' "http://186.233.184.235:8080/rpc"

On testnet, free without a key

  • POST /testnet/rpc

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Access group rpcJSON-RPC in the documentation →

Fees and programs

Live

Compute-unit prices, utilization, fees and contended accounts by slot, and the programs mainnet invoked. The program index is free.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size), Client Lab.

  • /fees/recent.json
  • /fees/slots.json?from=<slot>&to=<slot>
  • /fees/accounts.json?window=150
  • /programs/index.json
  • /programs/elf/<sha256>.so
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/fees/recent.json"

Live, and free without a key at the free tier’s limits.Mainnet only for now.Access group analyticsFees and programs in the documentation →

Built on them

Account history

Live

An account as of any slot in the change feed's window, and every write to it, from Pipe's own execution. The index is free.

Included in: Pro, Operator.

  • /accounts/index.json
  • /accounts/<pubkey>?slot=<slot>
  • /accounts/<pubkey>/history?from=<slot>&to=<slot>
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/accounts/<pubkey>?slot=<slot>"

Live: send a key from a plan that includes it.Mainnet only for now.Access group accountsAccount history: limits and details →

Account stream

Live

Writes to the accounts you filter, slot by slot, as Server-Sent Events or Yellowstone gRPC at finalized commitment. Resume with Last-Event-ID or from_slot.

Included in: Operator, Account and transaction streams.

  • /accounts/stream?account=<pubkey>&owner=<pubkey>
  • POST /accounts/stream
  • /accounts/stream/status.json
  • gRPC 186.233.184.235:8081 geyser.Geyser/Subscribe

The gRPC stream takes the key in an x-token header, as Yellowstone clients send it, or as Authorization: Bearer psol_….

curl -fsS -N -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/accounts/stream?account=<pubkey>"

Live: send a key from a plan that includes it.Mainnet only for now.Access group streamsAccount stream: limits and details →

Transactions

LiveTestnet

Agave-compatible JSON-RPC for the last ~8 hours of rooted transactions, with Pipe's replay results, and a Yellowstone gRPC transaction stream.

Included in: Pro, Operator, Account and transaction streams.

  • POST /transactions/rpc
  • /transactions/status.json
  • gRPC 186.233.184.235:8082 geyser.Geyser/Subscribe

The gRPC stream takes the key in an x-token header, as Yellowstone clients send it, or as Authorization: Bearer psol_….

curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getSignaturesForAddress","params":["<pubkey>",{"limit":10}]}' "http://186.233.184.235:8080/transactions/rpc"

On testnet, free without a key

  • POST /testnet/transactions/rpc

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access groups transactions, streamsTransactions: limits and details →

Long-term history

Live

Shred and account-change slot files kept beyond the live feeds' window, byte-identical to the feeds and signed by Pipe's history key.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /history/index.json
  • /history/slots.json?from=<slot>&to=<slot>
  • /history/slot/<slot>.bin
  • /history/changes/<slot>.chg
curl -fsS -H "Authorization: Bearer psol_…" -o <slot>.bin "http://186.233.184.235:8080/history/slot/<slot>.bin"

Live: send a key from a plan that includes it.Mainnet only for now.Access group historyIts statements are signed by its own service key, listed in /attest/keys.json.Long-term history: limits and details →

Program changes

Live

Every program deploy, upgrade and close on mainnet, signed, with the exact ELF bytes and a hot list, as JSON pages or a live stream.

Included in: Pro, Operator, Validator Ops (every size).

  • /programs/feed/index.json
  • /programs/feed/events.json?after=<seq>&limit=100
  • /programs/feed/stream
  • /programs/feed/hot.json
  • /programs/feed/elf/<sha256>.so
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/programs/feed/events.json?after=0&limit=100"

Live: send a key from a plan that includes it.Mainnet only for now.Access group program_feedIts statements are signed by its own service key, listed in /attest/keys.json.Program changes: limits and details →

Status cache

Live

The status cache and blockhash queue of the newest rooted banks, so a node restoring from a snapshot and the change feed can switch straight to replay.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /bank/status-cache.json
  • /bank/blockhash-queue.json?slot=<slot>
  • /bank/status-cache/status.json
curl -fsS -H "Authorization: Bearer psol_…" -o status-cache.json "http://186.233.184.235:8080/bank/status-cache.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group ledgerStatus cache: limits and details →

Account attestations

Live

A statement signed by Pipe (its key is in Pipe's signed key directory) that an account held a state at a slot, tied to mainnet's bank hash, for light clients, bridges and audits.

Included in: Pro, Operator.

  • /attest/account/index.json
  • /attest/account/<pubkey>?slot=<slot>
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/attest/account/<pubkey>?slot=<slot>"

Live: send a key from a plan that includes it.Mainnet only for now.Access group attest_accountEach answer is signed by its own service key, listed in /attest/keys.json.Account attestations: limits and details →

State bisection

Live

Find which accounts differ between your node and Pipe's producer at a slot in a few round trips, from lattice-hash sums by pubkey prefix.

Included in: Operator, Client Lab.

  • /state/index.json
  • /state/<slot>.json
  • /state/<slot>/range?prefix=<hex>&depth=2
  • /state/<slot>/accounts?prefix=<hex>
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/state/<slot>/range?prefix=&depth=1"

Live: send a key from a plan that includes it.Mainnet only for now.Access group stateState bisection: limits and details →

Snapshot indexes

Live

Token accounts by owner and by mint, and the top programs' accounts, for the two newest full snapshots, so an RPC node can skip its startup scan.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /snapshots/indexes.json
  • /snapshots/<archive>.index/manifest.json
  • /snapshots/<archive>.index/<file>
curl -fsS "http://186.233.184.235:8080/snapshots/indexes.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group filteredSnapshot indexes: limits and details →

Filtered snapshots

Live

Only the accounts that selected programs own (token, stake, Raydium AMM v4), cut from the newest full snapshot and attested by Pipe.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /filtered/index.json
  • /filtered/<filter>/snapshot-<slot>-<hash>.accounts.zst
  • /attest/filtered/<filter>/<file>.json
curl -fL -C - -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/filtered/stake/snapshot-<slot>-<hash>.accounts.zst"

Live: send a key from a plan that includes it.Mainnet only for now.Access group filteredIts statements are signed by the main attestation key, 4Kf16X3Fvvhy3W43jCUbkT1KxWhfPRZfkR3dZm95xQRB.Filtered snapshots: limits and details →

Agave snapshots

LiveTestnet

Pipe's snapshots converted for Agave, Jito-Solana and Frankendancer, full and incremental, with SHA-256 files and statements signed by Pipe.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /agave/snapshots/index.json
  • /agave/snapshots/snapshot-<slot>-<hash>.tar.zst
  • /agave/snapshots/incremental-snapshot-<base>-<slot>-<hash>.tar.zst
  • /agave/attest/snapshots/<archive>.json
curl -fsS "http://186.233.184.235:8080/agave/snapshots/index.json"
curl -fL -C - -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/agave/snapshots/snapshot-<slot>-<hash>.tar.zst"

On testnet, free without a key

  • /testnet/agave/snapshots/index.json
  • /testnet/agave/snapshots/snapshot-<slot>-<hash>.tar.zst
  • /testnet/agave/snapshots/incremental-snapshot-<base>-<slot>-<hash>.tar.zst

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group snapshotsEach archive’s statement is signed by agave-snapshots’ own key, listed in /attest/keys.json.Agave snapshots: limits and details →

Archive chunk lists

LiveTestnet

Each published archive's 64 MiB chunk hashes, signed by Pipe, so a downloader or mirror checks every range as it arrives. Free.

Included in: Free, no key needed.

  • /attest/chunks/<archive>.json
curl -fsS "http://186.233.184.235:8080/attest/chunks/<archive>.tar.zst.json"

On testnet, free without a key

  • /testnet/attest/chunks/<archive>.json

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Its statements are signed by the main attestation key, 4Kf16X3Fvvhy3W43jCUbkT1KxWhfPRZfkR3dZm95xQRB.Archive chunk lists: limits and details →

Validator operations

Views of every validator, readiness and startup plans, and the Validator Ops add-on: the vote-safety guard, leader postmortems, stake advice, rewards reports, incident correlation, monitoring, the delegation guard and maintenance windows.

Leader health

Live

For each upcoming leader: TPU-QUIC reachability and round trips, skips, fill, fee floors and landing estimates, as JSON or a live stream.

Included in: Pro, Operator, Validator Ops (every size).

  • /leaders/upcoming.json?slots=64
  • /leaders/health.json
  • /leaders/fees.json
  • /leaders/node/<identity>.json
  • /leaders/stream
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/leaders/upcoming.json?slots=64"

Live: send a key from a plan that includes it.Mainnet only for now.Access group leadersLeader health: limits and details →

Leader revenue

Live

Revenue per leader slot (fees and Jito tips) against neighbouring slots, each validator's index and rank, and what caused a shortfall. Per-validator reports are signed.

Included in: Pro, Operator, Validator Ops (every size).

  • /revenue/epoch/<epoch>.json
  • /revenue/epoch/<epoch>/validators/<identity>.json
  • /revenue/slots.json?from=<slot>&to=<slot>
  • /monitor/revenue/<vote>.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/revenue/epoch/<epoch>/validators/<identity>.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group leadersEach answer is signed by its own service key, listed in /attest/keys.json.Leader revenue: limits and details →

Leader and vote performance

Live

Each leader's produced and skipped slots, block fill and timing, and each vote account's latency and credits, by epoch and slot.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /perf/leaders.json?epoch=<epoch>
  • /perf/votes.json?account=<vote>
  • /perf/slots.json?from=<slot>&to=<slot>
curl -fsS "http://186.233.184.235:8080/perf/leaders.json?leader=<identity>"

Live, and free without a key at the free tier’s limits.Mainnet only for now.Access group validatorsLeader and vote performance: limits and details →

Validator scorecards

Live

A signed scorecard for every staked vote account each epoch: credits, latency, skips, commission, MEV, software and stake, with JSON and CSV exports.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /scorecards/index.json
  • /scorecards/<epoch>/<vote>.json
  • /scorecards/<epoch>/export.csv
curl -fsS -O "http://186.233.184.235:8080/scorecards/<epoch>/export.csv"

Live, and free without a key at the free tier’s limits.Mainnet only for now.Access group validatorsIts statements are signed by its own service key, listed in /attest/keys.json.Validator scorecards: limits and details →

Validator readiness

Live

Whether the next epoch boundary admits a validator under Alpenglow's rules, and what each pending feature gate asks of it, signed.

Included in: Recovery, Pro, Operator, Validator Ops (every size).

  • /readiness/<vote>.json
  • /readiness/summary.json
  • /readiness/boundary.json
  • /readiness/features.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/readiness/<vote>.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group readinessEach answer is signed by its own service key, listed in /attest/keys.json.Validator readiness: limits and details →

Delegation guard

Live

Your validator against SFDP, Jito StakeNet and Marinade criteria: what fails, what is at risk and by when, signed. Part of Validator Ops.

Included in: Validator Ops (every size).

  • /delegation/criteria.json
  • /delegation/<vote>.json
  • /delegation/summary.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/delegation/<vote>.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorEach answer is signed by its own service key, listed in /attest/keys.json.Delegation guard: limits and details →

Validator monitoring

Live

Alerts for your validators by signed webhook (delinquency, vote latency, skips, bank-hash mismatches, readiness and delegation risk, pre-leader checks) and dashboards. Part of Validator Ops.

Included in: Validator Ops (every size).

  • POST /monitor/subscriptions
  • /monitor/subscriptions/<id>/dashboard.json
  • /monitor/subscriptions/<id>/alerts.json
  • /monitor/validators/<vote>.json
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" \
  -d '{"vote_account":"<vote>","url":"https://example.com/pipe-alerts","events":["*"]}' "http://186.233.184.235:8080/monitor/subscriptions"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorIts statements are signed by its own service key, listed in /attest/keys.json.Validator monitoring: limits and details →

Startup plans

LiveTestnet

A signed plan to start an ngSol node and catch it up: which archive or image, which mirror, expected hashes, worker settings and time and disk estimates.

Included in: Recovery, Pro, Operator, Validator Ops (every size), Fast start.

  • /plan?cluster=mainnet-beta&bandwidth_mbps=<n>&disk_free_gb=<n>
  • POST /plan
  • /plan/status.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/plan?cluster=mainnet-beta&bandwidth_mbps=1000&disk_free_gb=2000"

On testnet, free without a key

  • /testnet/plan?cluster=testnet&bandwidth_mbps=<n>&disk_free_gb=<n>
  • POST /testnet/plan
  • /testnet/plan/status.json

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group planEach answer is signed by its own service key, listed in /attest/keys.json.Startup plans: limits and details →

ngSol warm set

Live

The programs and accounts a restarting ngSol node should preload, signed and valid for 48 hours.

Included in: Recovery, Pro, Operator, Validator Ops (every size), Fast start.

  • /ngsol/warm-set.json
curl -fsS -H "Authorization: Bearer psol_…" -o warm-set.json "http://186.233.184.235:8080/ngsol/warm-set.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group planIts statements are signed by its own service key, listed in /attest/keys.json.ngSol warm set: limits and details →

Cluster restart kit

Live

During an announced cluster restart: the restart slot, expected bank hash, shred version and the exact flags for Agave, Firedancer and ngSol, signed by Pipe. Free.

Included in: Free, no key needed.

  • /restart.json
  • /restart/status.json
curl -fsS "http://186.233.184.235:8080/restart/status.json"

Live, and free without a key at the free tier’s limits.Mainnet only for now.Its statements are signed by its own service key, listed in /attest/keys.json.Cluster restart kit: limits and details →

Epoch boundary rehearsal

Live

What the next boundary will do before mainnet finalizes it: every stake reward and partition, frozen stakes and the next leader schedule, then the comparison.

Included in: Pro, Operator, Validator Ops (every size).

  • /epoch/rehearsal/index.json
  • /epoch/<epoch>/rehearsal.json
  • /epoch/<epoch>/rehearsal/<pubkey>.json
  • /epoch/<epoch>/rehearsal/rewards.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/epoch/<epoch>/rehearsal/<stake-account>.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group exportsEpoch boundary rehearsal: limits and details →

Shred propagation

LiveTestnet

How each slot's shreds reached Pipe: arrival against the slot's start, erasure-set completeness, repair needed and duplicates, by slot and by leader.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /shreds/health.json?from=<slot>&to=<slot>
  • /shreds/health/leaders.json?epoch=<epoch>&leader=<identity>
curl -fsS "http://186.233.184.235:8080/shreds/health/leaders.json?leader=<identity>"

On testnet, free without a key

  • /testnet/shreds/health.json?from=<slot>&to=<slot>
  • /testnet/shreds/health/leaders.json?epoch=<epoch>&leader=<identity>

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Access group validatorsShred propagation: limits and details →

Turbine tree

LiveTestnet

For any node and shred, who sends it the shred and whom it relays to, as Agave builds the tree, and a node's positions over the next slots.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /turbine/<slot>.json?node=<pubkey>&shred=<index>
  • /turbine/upcoming.json?node=<pubkey>&count=32
curl -fsS "http://186.233.184.235:8080/turbine/upcoming.json?node=<identity>&count=8"

On testnet, free without a key

  • /testnet/turbine/<slot>.json?node=<pubkey>&shred=<index>
  • /testnet/turbine/upcoming.json?node=<pubkey>&count=32

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Access group validatorsTurbine tree: limits and details →

Duplicate blocks

LiveTestnet

Slots whose leader signed two versions, each with a proof in Agave's duplicate-shred format, checked against the leader's signature.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /equivocation/index.json
  • /equivocation/<slot>.json
curl -fsS "http://186.233.184.235:8080/equivocation/index.json"

On testnet, free without a key

  • /testnet/equivocation/index.json
  • /testnet/equivocation/<slot>.json

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Access group equivocationDuplicate blocks: limits and details →

Alpenglow certificates

LiveTestnet

Every slot's notarization and finalization certificates, verified against the epoch's voters, as JSON or a live stream.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /alpenglow/index.json
  • /alpenglow/<slot>.json
  • /alpenglow/slots.json?from=<slot>&to=<slot>
  • /alpenglow/voters/<epoch>.json
  • /alpenglow/stream
curl -fsS "http://186.233.184.235:8080/alpenglow/<slot>.json?signers=1"

On testnet, free without a key

  • /testnet/alpenglow/index.json
  • /testnet/alpenglow/<slot>.json
  • /testnet/alpenglow/slots.json?from=<slot>&to=<slot>
  • /testnet/alpenglow/voters/<epoch>.json
  • /testnet/alpenglow/stream

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Access group alpenglowAlpenglow certificates: limits and details →

Alpenglow participation

LiveTestnet

Whether each validator's votes landed in certificates and reward aggregates, how fast, and what it did to its credits, by slot and epoch.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size).

  • /alpenglow-participation/validators/<vote>.json
  • /alpenglow-participation/epochs/<epoch>.json
  • /alpenglow-participation/slots.json?from=<slot>&to=<slot>
curl -fsS "http://186.233.184.235:8080/alpenglow-participation/validators/<vote>.json"

On testnet, free without a key

  • /testnet/alpenglow-participation/validators/<vote>.json
  • /testnet/alpenglow-participation/epochs/<epoch>.json
  • /testnet/alpenglow-participation/slots.json?from=<slot>&to=<slot>

Live, and free without a key at the free tier’s limits.On testnet too: free without a key under /testnet/.Access group alpenglowAlpenglow participation: limits and details →

Maintenance windows

Live

Signed restart windows for your validator identity that miss none of its leader slots, refreshed hourly, for ngSol's updater. Part of Validator Ops.

Included in: Validator Ops (every size).

  • /maintenance/<identity>.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/maintenance/<identity>.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorIts statements are signed by its own service key, listed in /attest/keys.json.Maintenance windows: limits and details →

Shadow trial

By request

Pipe watches your validator read-only for an epoch and signs a report of what Validator Ops would have caught and gained. Ask for a trial.

Included in: free, run by Pipe on request.

Run by Pipe on request: write to hello@pipe.network.Mainnet only for now.Its statements are signed by its own service key, listed in /attest/keys.json.Shadow trial: limits and details →

Is it me or the network?

Live

For your validator and a window: whether missed votes or skipped slots were yours, the network's, or your client's or region's, with the evidence, signed; plus the cluster's incident feed.

Included in: Validator Ops (every size).

  • /incidents/correlate.json?vote=<vote>&at=<time>
  • /incidents/feed.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/incidents/correlate.json?vote=<vote>&at=2026-10-23T16:35:00Z&minutes=5"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorEach correlation, incident and the feed are signed by the service’s own key, listed in /attest/keys.json.Is it me or the network?: limits and details →

Leader postmortems

Live

Every leader slot explained: on time, late or skipped, when and why, what it earned against what it could have earned (estimates, labelled). Per epoch, with top causes. Signed.

Included in: Validator Ops (every size).

  • /postmortem/validators/<identity|vote>/summary.json
  • /postmortem/validators/<identity|vote>/epochs/<epoch>.json
  • /postmortem/validators/<identity|vote>/slots.json?from=<slot>&to=<slot>
  • /postmortem/slots/<slot>.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/postmortem/validators/<identity>/summary.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorEach answer is signed by its own service key, listed in /attest/keys.json.Leader postmortems: limits and details →

Stake advisor

Live

What to change to win more delegated stake (SFDP, Marinade's auction, JitoSOL) and what each change costs, ranked and signed. Part of Validator Ops.

Included in: Validator Ops (every size).

  • /advisor/<vote>.json
  • /advisor/inputs.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/advisor/<vote>.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorEach answer is signed by its own service key, listed in /attest/keys.json.Stake advisor: limits and details →

Rewards ledger

Live

Per-epoch accounting reports for your validator: commission, delegators' rewards, fees, tips and vote costs, reconciled, traceable to each slot, signed, as JSON and CSV. Part of Validator Ops.

Included in: Validator Ops (every size).

  • /rewards-ledger/<epoch>/<vote>.json
  • /rewards-ledger/<epoch>/<vote>.csv
curl -fsS -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/rewards-ledger/<epoch>/<vote>.csv"

Live: send a key from a plan that includes it.Mainnet only for now.Access group monitorEach report is signed by the service’s own key, listed in /attest/keys.json; the signed report holds its CSV’s sha256.Rewards ledger: limits and details →

Managed standby

Live

A hot standby built so only one of your nodes votes at a time: Pipe's fence leases the voting right to one node per validator, with a fencing token and a signed audit log, and your agent switches identity only under the lease. Your keys stay on your machines.

Included in: Managed standby.

  • /standby/v1/enroll
  • /standby/v1/lease
  • /standby/v1/lease/<identity>
  • /standby/v1/audit/<identity>
pipe-standby-agent keygen --out /etc/pipe-standby/node-key.json
pipe-standby-agent enroll --config agent.json --identity-keypair identity.json --node mia-a=<key> --node ams-b=<key>
pipe-standby-agent run --config agent.json
pipe-standby-agent audit --config agent.json

Live: send a key from a plan that includes it.Mainnet only for now.Access group standbyEach lease and the audit log are signed by the fence’s own key, listed in /attest/keys.json; the fence holds no validator key.Managed standby: limits and details →

Vote-safety guard

Live

A consensus diagnostic for custom clients: compare your validator's bank hash with Pipe's signed verdict every slot, and get alerted on a confirmed divergence or a node that stops advancing. Alerts only. Part of Validator Ops.

Included in: Validator Ops (every size).

  • /vote-guard/index.json
  • /vote-guard/<slot>.json
  • /vote-guard/check?slot=<slot>&bank_hash=<hash>
  • /vote-guard/stream?from=<slot>
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/vote-guard/check?slot=<slot>&bank_hash=<hash>"
pipe-vote-guard-agent doctor --api-key-file /etc/pipe/api-key

Live: send a key from a plan that includes it.Mainnet only for now.Access group voteguardEach verdict and each check of your bank hash is signed by the guard’s own key, listed in /attest/keys.json; the agent verifies every answer before it counts.Vote-safety guard: limits and details →

Client tools (signed downloads)

Live

Pipe's client tools for your hosts: download with your key, check the sha256 and the release statement signed by a key /attest/keys.json lists.

Included in: Recovery, Pro, Operator, Shred feed, Change feed, Bank stream, Account and transaction streams, Validator Ops (every size), Client Lab, Fast start, Managed standby.

  • /downloads/index.json
  • /downloads/<tool>/<version>/<target>/<tool>
  • /downloads/<tool>/<version>/<target>/<tool>.sha256
  • /downloads/<tool>/<version>/<target>/<tool>.release.json
curl -fsS -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/downloads/pipe-vote-guard-agent/0.1.0/x86_64-unknown-linux-gnu/pipe-vote-guard-agent"

Live: send a key from a plan that includes it.Mainnet only for now.Access group downloadsEach release’s statement (its sha256, size, target and source revision) is signed by the downloads key, listed in /attest/keys.json for client-release.Client tools (signed downloads): limits and details →

Fast start

A new or restarting validator hot in minutes, and through a cluster restart: the onboarding tool, signed incrementals over the full you keep, fastboot artifacts, catch-up shreds and lazy-state proofs, each verified by the node itself. Sold as the Fast start add-on, one key per purchase.

Bootstrap artifacts

LiveTestnet

Start Agave or Jito-Solana from Pipe's newest snapshot without the unpack: a signed map of the fastboot layout onto the converted archives, fetched in parallel by pipe-bootstrap, checked frame by frame and verified by the node's own lattice hash. Part of Fast start.

Included in: Fast start.

  • /bootstrap/agave/index.json
  • /bootstrap/agave/agave-fastboot-<slot>/manifest.json
  • /bootstrap/agave/archives/<archive>
pipe-bootstrap plan --api-key-file ~/.config/pipe/key -- agave-validator --ledger /mnt/ledger ...

On testnet, free without a key

  • /testnet/bootstrap/agave/index.json
  • /testnet/bootstrap/agave/agave-fastboot-<slot>/manifest.json
  • /testnet/bootstrap/agave/archives/<archive>

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group bootstrapEach artifact’s manifest is signed by the service’s own key, listed in /attest/keys.json; the archives’ bytes are agave-snapshots’, signed by its own key.Bootstrap artifacts: limits and details →

Cluster restart artifacts

Live

During an announced mainnet restart: the coordinated parameters (checked by two operators), Pipe's independent cross-check (never authoritative) and the restart-slot snapshot, each signed. Your node verifies all of it against the announcement and keeps its local fallback.

Included in: Validator Ops (every size), Fast start.

  • /restart/parameters.json
  • /restart/crosscheck.json
  • /restart/artifacts.json
  • /restart/artifacts/<snapshot>
curl -fsS "http://186.233.184.235:8080/restart/parameters.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access group restartThe parameters, Pipe’s cross-check and each restart snapshot are signed by the service’s own key, listed in /attest/keys.json; your node checks them against the coordinated announcement, never against Pipe alone.Cluster restart artifacts: limits and details →

Fast catch-up

Live

Restart from the Pipe full you kept: a signed Agave incremental to Pipe's newest slot, built on demand, verified and installed by pipe-fast-catchup.

Included in: Fast start.

  • POST /catchup/v1/incremental
  • /catchup/v1/jobs/<id>
  • /catchup/v1/bases.json
  • /catchup/files/<incremental>
  • /catchup/attest/<incremental>.json
pipe-fast-catchup --snapshots /mnt/ledger/snapshots --api-key-file ~/.config/pipe/key
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" -d '{"base_slot": <slot>, "base_hash": "<hash>"}' "http://186.233.184.235:8080/catchup/v1/incremental"

Live: send a key from a plan that includes it.Mainnet only for now.Access group catchupEach incremental’s statement is signed by the service’s own key, listed in /attest/keys.json; the archive it builds on is agave-snapshots’, signed by its own key.Fast catch-up: limits and details →

Account proofs for lazy state

Live

Start an ngSol node replaying in seconds: its first blocks' accounts arrive in signed batches tied to mainnet's bank hash, while the full state loads; it votes only once its own full state verifies.

Included in: Fast start.

  • /state-proofs/index.json
  • /state-proofs/slots.json
  • POST /state-proofs/batch?slot=<slot>
  • POST /state-proofs/stream?slot=<slot>
  • /state-proofs/manifest/<slot>
  • /state-proofs/features/<slot>

Live: send a key from a plan that includes it.Mainnet only for now.Access group state_proofsEach answer is signed by its own service key, listed in /attest/keys.json.Account proofs for lazy state: limits and details →

Onboarding (Fast start)

LiveTestnet

Bring a validator to voting hot and verified: hot before its stake activates, back as soon as it is ready after a restart, or through a cluster restart. It never votes on anything it has not executed itself.

Included in: Recovery, Pro, Operator, Validator Ops (every size), Fast start.

  • /onboard/plan/<vote>.json?client=agave&version=4.3.2&mode=new
  • /onboard/status.json
pipe-onboard init --mode new --client agave --vote-account <vote> --identity ~/validator-keypair.json --ledger /mnt/ledger --launch systemd:sol.service --api-key-file ~/.config/pipe/solana.key
pipe-onboard run
pipe-onboard status

On testnet, free without a key

  • /testnet/onboard/plan/<vote>.json?client=agave&version=4.3.2&mode=new
  • /testnet/onboard/status.json

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group planEach answer is signed by its own service key, listed in /attest/keys.json.Onboarding (Fast start): limits and details →

Catch-up shreds

LiveTestnet

Restart and catch up in minutes: the slots since your snapshot, from Pipe's stored shreds, streamed into your validator's TVU by the pipe-shred-feeder tool, every shred checked against a signed manifest and its leader's signature first.

Included in: Fast start.

  • /shred-range/status.json
  • /shred-range/stream?from=<slot>&follow=1
  • /shred-range/manifest/<bucket>.json
curl -fsS "http://186.233.184.235:8080/shred-range/status.json"
pipe-shred-feeder --rpc http://127.0.0.1:8899 --api-key-file ~/.config/pipe/api-key

On testnet, free without a key

  • /testnet/shred-range/status.json
  • /testnet/shred-range/stream?from=<slot>&follow=1
  • /testnet/shred-range/manifest/<bucket>.json

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access group shred_rangeEach range manifest is signed by the service’s own key, listed in /attest/keys.json; the feeder checks every shred against it.Catch-up shreds: limits and details →

Client development and testing

Release qualification, the leader shadow lab, Alpenglow vectors, block validation, conformance, feature simulation and replay for client teams and auditors, sold as the Client Lab add-on.

Block validation

Live

Submit a block your client built on a parent Pipe holds: it is replayed against that parent's state and every rule it breaks is named. Part of Client Lab.

Included in: Client Lab.

  • POST /blocks/validate
  • /blocks/jobs/<id>.json
  • /blocks/rules.json
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/octet-stream" --data-binary @block.pipeblk1 "http://186.233.184.235:8080/blocks/validate"

Live: send a key from a plan that includes it.Mainnet only for now.Access group blocksBlock validation: limits and details →

Conformance checks

Live

Compare your client's per-slot bank hashes, accounts and transactions with Pipe's replay and get the first slot, transaction and account that differ. Part of Client Lab.

Included in: Client Lab.

  • POST /conformance/check
  • /conformance/slot/<slot>
  • /conformance/status
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" --data-binary @check.json "http://186.233.184.235:8080/conformance/check"

Live: send a key from a plan that includes it.Mainnet only for now.Access group conformanceConformance checks: limits and details →

Conformance fixtures

Live

protosol transaction and instruction fixtures cut from mainnet replay, for solana-conformance, solfuzz and sol_compat. Part of Client Lab.

Included in: Client Lab.

  • /fixtures/index.json
  • /fixtures/txn/<signature>.fix
  • /fixtures/sets/<set>.tar.zst
curl -fsS -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/fixtures/sets/<set>.tar.zst"

Live: send a key from a plan that includes it.Mainnet only for now.Access group fixturesConformance fixtures: limits and details →

Feature simulator

Live

What an unactivated feature gate would change in recent mainnet blocks: which transactions and which bank hashes. Part of Client Lab.

Included in: Client Lab.

  • /features/index.json
  • /features/<feature>/simulate?from=<slot>&to=<slot>
  • /features/jobs/<id>.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/features/<feature>/simulate?from=<slot>&to=<slot>"

Live: send a key from a plan that includes it.Mainnet only for now.Access group featuresFeature simulator: limits and details →

Repro bundles

Live

A kit to re-execute a recent rooted slot offline and compare its bank hash: pre-state accounts, parent bank, entries and the producer's report. Part of Client Lab.

Included in: Client Lab.

  • /repro/index.json
  • /repro/<slot>.tar.zst
  • /repro/<slot>.json
curl -fL -H "Authorization: Bearer psol_…" -O "http://186.233.184.235:8080/repro/<slot>.tar.zst"

Live: send a key from a plan that includes it.Mainnet only for now.Access group reproRepro bundles: limits and details →

Replay benchmark

Live

Compare your ngSol node's replay with Pipe's producer slot by slot and see what is slower, why, and what to change. In Validator Ops and Client Lab.

Included in: Validator Ops (every size), Client Lab.

  • POST /bench/submit
  • /bench/report/<id>.json
  • /bench/reference.json
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Encoding: gzip" --data-binary @submission.json.gz "http://186.233.184.235:8080/bench/submit"

Live: send a key from a plan that includes it.Mainnet only for now.Access group benchReplay benchmark: limits and details →

Traffic replay

By request

Captured mainnet turbine and repair traffic re-sent to your test node at recorded speed or faster, with loss and reordering. Run by Pipe against a target you verify. Part of Client Lab.

Included in: Client Lab, on request.

Run by Pipe on request: write to hello@pipe.network.Mainnet only for now.Traffic replay: limits and details →

Execution census

Live

What mainnet executes, by count and compute units, per epoch and day, so a client team knows what to implement and optimize first.

Included in: Free tier (no key), Recovery, Pro, Operator, Validator Ops (every size), Client Lab.

  • /census/latest.json
  • /census/<epoch>.json
  • /census/day/<date>.json
curl -fsS "http://186.233.184.235:8080/census/latest.json"

Live, and free without a key at the free tier’s limits.Mainnet only for now.Access group analyticsExecution census: limits and details →

Alpenglow readiness

LiveTestnet

Mainnet's Alpenglow certificates, votes and aggregates plus edge cases, each with the reference outcome, as signed vector sets for your client's CI; a scored conformance check; and per-slot vote latency and credits attribution for a validator.

Included in: Validator Ops (every size), Client Lab.

  • /alpenglow-readiness/vectors/index.json
  • /alpenglow-readiness/vectors/<set>.tar
  • /alpenglow-readiness/vectors/<set>/manifest.json
  • /alpenglow-readiness/vectors/<set>/statement.json
  • POST /alpenglow-readiness/check
  • /alpenglow-readiness/validators/<vote>.json
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/alpenglow-readiness/vectors/index.json"
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" --data-binary @results.json "http://186.233.184.235:8080/alpenglow-readiness/check"
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/alpenglow-readiness/validators/<vote>.json?slots=0"

On testnet, free without a key

  • /testnet/alpenglow-readiness/vectors/index.json
  • /testnet/alpenglow-readiness/vectors/<set>.tar
  • /testnet/alpenglow-readiness/vectors/<set>/manifest.json
  • /testnet/alpenglow-readiness/vectors/<set>/statement.json
  • /testnet/alpenglow-readiness/validators/<vote>.json

Live: send a key from a plan that includes it.On testnet too: free without a key under /testnet/.Access groups alpenglow_lab, alpenglow_attribEach vector set, check report and attribution is signed by the service’s own key, listed in /attest/keys.json.Alpenglow readiness: limits and details →

Release qualification

Live

Qualify a client release before you run it: Pipe builds it from source in a sandbox, restores it from recent mainnet, replays mainnet's blocks and signs a report: bank-hash agreement, the first divergence, replay speed, conformance and feature gates. Part of Client Lab.

Included in: Client Lab.

  • /qualify/allowlist.json
  • /qualify/jobs (POST)
  • /qualify/jobs.json
  • /qualify/jobs/<id>.json
  • /qualify/jobs/<id>/report.json
curl -fsS -X POST -H "Authorization: Bearer psol_…" -H 'Content-Type: application/json' -d '{"repo":"https://github.com/anza-xyz/agave","tag":"v4.3.2","slots":500}' "http://186.233.184.235:8080/qualify/jobs"
curl -fsS -H "Authorization: Bearer psol_…" "http://186.233.184.235:8080/qualify/jobs/<id>/report.json"

Live: send a key from a plan that includes it.Mainnet only for now.Access groups qualify, lab_statusEach finished job’s report is signed by the service’s own key, listed in /attest/keys.json.Release qualification: limits and details →

Leader shadow lab

Live

Run your client as a leader on a private fork of mainnet while mainnet's own transactions replay into its TPU; compare its packing slot by slot with the real leaders'. Part of Client Lab.

Included in: Client Lab.

  • POST /shadow-lab/jobs
  • /shadow-lab/jobs/<id>.json
  • /shadow-lab/reports/<id>.json
  • /shadow-lab/clients.json
  • /shadow-lab/status.json
curl -fsS -H "Authorization: Bearer psol_…" -H "Content-Type: application/json" --data '{"client":"agave","tag":"v4.3.2","slots":450}' "http://186.233.184.235:8080/shadow-lab/jobs"

Live: send a key from a plan that includes it.Mainnet only for now.Access groups shadow, lab_statusEach finished job’s report is signed by the service’s own key, listed in /attest/keys.json.Leader shadow lab: limits and details →

From the Pipe Solana services registry, revision 2026-10-30-r6. Prices are on the plans page, read live from Pipe’s control plane.