Streaming Overview

Real-time access by network. Every channel carries a measured mount status: channels whose contract is published but whose route is not served are labeled explicitly, as are channels mounted on only some PoPs.

Method / Endpoint
gRPC https://grpc.triport.io and wss://triport.io/ws/*
Network
Networks with mounted streams
Authentication
gRPC metadata x-token: $TRIPORT_API_KEY; WebSocket x-token: $TRIPORT_API_KEY (or Authorization: Bearer) or ?api-key= query param
Required scope
— (tier-gated per channel/method)
Tier / rate limit
Per-channel tier floor (see table); rate limiting is RPS-per-tier with burst — there is no daily quota

Description

Solana has one connection set, with the same API key on every entry:

ConnectionAddressTierReference
Solana gRPC (Yellowstone)https://grpc.triport.ioProsol-grpc
Shred streamwss://triport.io/ws/sol-preexecProsol-preexec
Firehosewss://triport.io/ws/sol-streamProsol-stream
WebSocket (Pub/Sub)wss://triport.io/ws/sol—sol-pubsub
HTTPS (JSON-RPC)https://triport.io/sol—Solana guide
  • gRPC (Yellowstone) is the native geyser.Geyser protobuf API for backend services with server-side filters; Yellowstone is our gRPC endpoint, not a separate one, and it is not a WebSocket. Clients that take host:port use grpc.triport.io:443.
  • Shred stream pushes transactions reassembled from the leader's shreds before the cluster executes them; on Pro it needs an account filter, e.g. wss://triport.io/ws/sol-preexec?accounts=TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.
  • Firehose is one fixed WebSocket feed of every non-vote transaction; client filters are not applied. For filters, use gRPC (Yellowstone).
  • WebSocket (Pub/Sub) is the standard Solana JSON-RPC subscription API (accountSubscribe, logsSubscribe, slotSubscribe and the rest).

There are six WebSocket channels. Three speak the standard JSON-RPC pub/sub shape (*Subscribe → ack with a subscription id → server-pushed notifications): the Solana pub/sub channel (/ws/sol), the Ethereum channel (/ws/eth) and the Polygon channel (/ws/poly, which mirrors the Ethereum subscription types). The Solana Firehose (WebSocket) (/ws/sol-stream) is a push-only feed: every client receives the same fixed stream of non-vote transactions as compact JSON frames (slot, signature, fee) plus a stats frame once per second; client filters are not applied. For account-change notifications on Solana, use accountSubscribe on /ws/sol.

Per-method and per-channel access is gated by your plan tier. Subscribing to a method above your tier does not silently fail — the server sends a forbidden error frame and closes the connection with code 4003, carrying the current_tier / required_tier so your client can prompt for an upgrade.

Authentication

Every channel accepts the same two auth forms. Bearer is preferred.

1. Bearer token (preferred). Send it on the WebSocket upgrade request:

wscat -c wss://triport.io/ws/sol \
  -H "Authorization: Bearer $TRIPORT_API_KEY"

If your client cannot set headers on the upgrade, send the token as the first WS frame instead:

{ "jsonrpc": "2.0", "method": "auth", "params": ["$TRIPORT_API_KEY"] }

2. API key query param. Append ?api-key= to the channel URL:

wscat -c "wss://triport.io/ws/eth?api-key=$TRIPORT_API_KEY"

A connection that authenticates with neither (or an invalid token) is closed with code 4001.

Close codes

All channels share one set of WebSocket close codes. The numeric code travels on the RFC-6455 close frame itself; the server usually sends a JSON WSErrorFrame immediately before closing so SDKs can classify the failure.

Close codeerrorMeaning
4001unauthorizedMissing or invalid credentials on connect.
4003forbiddenTier insufficient for the requested method, or method unknown. Frame carries current_tier, required_tier, method, and an upgrade_url.
4029rate_limited / stream_limitPer-tier limit reached. rate_limited: RPS limit exceeded, frame carries retry_after_sec and limit_rps. stream_limit: the key already holds its maximum number of concurrent streams on this channel. On /ws/sol-preexec an existing stream may instead be closed with 4029 and the plain reason superseded_by_new_connection when a newer stream on the same key replaced it — see sol-preexec.
4030trial_expiredThe key's trial or paid subscription has ended (a lapsed subscription also closes with 4030). Frame carries an upgrade_url.

The error frame mirrors the HTTP error envelope, so the same SDK error classes apply. See Errors for the full envelope and field reference.

Channels

ChannelEndpointNetworkTier floorStatusDetail
Solana gRPC (Yellowstone)https://grpc.triport.ioSolanaprolive — GetSlot, GetVersion and a slots Subscribe answered on 2026-10-05sol-grpc
Solana shred stream/ws/sol-preexecSolanapromounted — EU, CAsol-preexec
Solana Firehose/ws/sol-streamSolanapromounted — EU, CAsol-stream
Solana WebSocket (Pub/Sub)/ws/solSolanafree (per-method: free → pro)mounted — EU, CAsol-pubsub
Ethereum Pub/Sub/ws/ethEthereumfree (per-method: free → pro)mounted — EU, CAeth-ws
Polygon Pub/Sub/ws/polyPolygonfree (per-method: free → pro)mounted — EU, CApoly-ws
Wallet watch events (custom)/ws/wallet-watch?id=…Ethereum, Base, Polygon, BNB Smart Chain, Robinhood Chainbusinessnot_verified — requires a subscription idwallet-watch · AsyncAPI

Status values were measured on 2026-09-21 (the Polygon row re-measured on 2026-09-22 on its served path /ws/poly; /ws/polygon returns 404) against both production PoPs (EU and North America) by attempting a WebSocket upgrade on each origin with a valid key, alongside a known-live and a known-absent control route. mounted means the upgrade succeeded; it is not a statement about payload conformance, per-tier limits or SLA. The gRPC row is not a WebSocket route, so it was checked separately on 2026-10-05 with gRPC calls against grpc.triport.io:443. The not_verified row (an id-bound channel) was not reachable by the upgrade method and carries no claim either way.

Base channels

Base has two client channels, both checked on the production PoPs (EU, CA) on 2026-10-10. A {key} is a Triport key; it is never an upstream provider credential.

ChannelPublic templateScopeMinimum tier
JSON-RPC Pub/Sub (newHeads){WSSBase}/ws/base/{key}base:wsBasic
Normalized Flashblocks feed (address filter required){WSSBase}/ws/base-feed/{key}base:feedPro

The raw Flashblocks firehose is internal infrastructure and is not a client endpoint. See Base WS and Base Flashblocks.

Per-method tiers (networks with mounted WebSocket Pub/Sub). The connection opens on free, but individual subscriptions unlock at higher tiers:

  • Solana (/ws/sol): accountSubscribe, signatureSubscribe → free; logsSubscribe, programSubscribe, slotSubscribe, rootSubscribe → basic; blockSubscribe, voteSubscribe, slotsUpdatesSubscribe → pro.
  • Ethereum (/ws/eth) and Polygon (/ws/poly): newPendingTransactions → free; logs → basic; newHeads, syncing → pro.

Solana stream access. /ws/sol-stream is gated by tier (pro and above) rather than RPS.

Pre-execution stream access. /ws/sol-preexec uses stream and account-filter limits: 2 concurrent streams on pro and 4 on business; an account filter of at most 50 entries on pro and 200 on business; and the filter is mandatory on pro. Business may connect unfiltered. There is no outbound data-volume quota or per-GB traffic charge. A stream holds its slot until it is closed, so close sockets cleanly — see sol-preexec → Concurrent streams and reconnects.

Notes

  • Fixed feed on /ws/sol-stream. Unlike the JSON-RPC pub/sub channels, the Solana stream takes no subscription: Triport holds one upstream Yellowstone subscription for non-vote transactions and pushes every transaction to every client as a compact tx frame, plus a stats frame once per second. Client messages are not applied as filters (measured 2026-09-22). It is a live, at-most-once feed — no replay/backfill. See sol-stream for the frame fields and sol-stream → Source, proto & delivery semantics.
  • Keepalives. The Solana stream uses Ping/Pong frames.
  • See Authentication and Rate limits & tiers for account-wide details.
NetworkChannelEndpointReference
SolanagRPC (Yellowstone)https://grpc.triport.iosol-grpc
SolanaShred stream/ws/sol-preexecsol-preexec
SolanaFirehose/ws/sol-streamsol-stream
SolanaWebSocket (Pub/Sub)/ws/solsol-pubsub
EthereumPub/Sub/ws/etheth-ws
PolygonPub/Sub/ws/polypoly-ws
StellarHorizon SSE`/rpc/stellar/horizon/{ledgerstransactions}?cursor=now`
EVM (eth, base, polygon, bsc, robinhood)Wallet watch events (custom)/ws/wallet-watch?id=…wallet-watch
BNB Smart ChainPub/Sub (planned; not mounted)—No navigation link