TriportRPC

Streaming Overview

Real-time access to Solana, Ethereum and Polygon data — native Solana Yellowstone gRPC, WebSocket pub/sub subscriptions, a high-throughput Solana WebSocket bridge, and custom account watchlist push.

Method / EndpointgRPC triport.io:443 and wss://triport.io/ws/*
NetworkSolana, Ethereum, Polygon
AuthenticationgRPC metadata x-token: $TRIPORT_API_KEY; WebSocket Authorization: Bearer $TRIPORT_API_KEY or ?api-key= query param
Required scope— (tier-gated per channel/method)
Tier / rate limitPer-channel tier floor (see table); rate limiting is RPS-per-tier with burst — there is no daily quota

Description

Triport exposes two real-time Solana surfaces:

  • Native Yellowstone gRPC / LaserStream for backend services that use the geyser.Geyser protobuf API directly.
  • WebSocket channels for JSON-RPC pub/sub, browser-compatible high-throughput streams, and watchlist push notifications.

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/polygon, which mirrors the Ethereum subscription types). The Solana high-throughput stream (/ws/sol-stream) is a bidirectional filter-and-push stream that uses the provider JSON protocol — a JSON-encoded variant of the upstream geyser stream framing, where the client sends a full SubscribeRequest filter set (each request atomically replaces the previous one) and the server pushes SubscribeUpdate frames. Finally, the custom watchlist push channel (/ws/sol-watch) delivers event-driven account-change notifications for pubkeys you registered through the REST control plane.

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_limitedPer-tier RPS limit exceeded. Frame carries retry_after_sec and limit_rps.
4030trial_expiredTrial / quota window for the plan has ended. 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 floorDetail
Solana Yellowstone gRPC / LaserStreamtriport.io:443Solanaprosol-grpc
Solana JSON-RPC Pub/Sub/ws/solSolanafree (per-method: free → pro)sol-pubsub
Solana high-throughput stream/ws/sol-streamSolanaprosol-stream
Solana first-shred stream/ws/sol-firstshredSolanabusinesssol-firstshred
Solana pre-execution transaction stream/ws/sol-preexecSolanaprosol-preexec
Ethereum Pub/Sub/ws/ethEthereumfree (per-method: free → pro)eth-ws
Polygon Pub/Sub/ws/polygonPolygonfree (per-method: free → pro)poly-ws
Watchlist push (custom)/ws/sol-watchSolanabusinesswatchlist-push

Per-method tiers (Solana / Ethereum / Polygon 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/polygon): newPendingTransactions → free; logs → basic; newHeads, syncing → pro.

Solana stream concurrency. /ws/sol-stream is gated by the number of concurrent streams rather than RPS: up to 8 on pro and 20 on business. The watchlist channel allows up to 10,000 watched pubkeys on business.

Pre-execution stream limits. /ws/sol-preexec is capped on three axes rather than RPS, because its cost is bandwidth rather than request count: 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 — unfiltered the channel is roughly 21.75 Mbit/s sustained, which is more bandwidth per subscriber than the plan costs. Business may connect unfiltered.

Notes

  • Provider protocol on /ws/sol-stream. Unlike the JSON-RPC pub/sub channels, the Solana stream carries the provider JSON protocol: a single bidirectional connection where each SubscribeRequest replaces the entire active filter set atomically, and the server emits SubscribeUpdate frames whose populated key (account, slot, transaction, block, …) tells you the update kind. See sol-stream for the filter and update schemas.
  • Yellowstone source & semantics (/ws/sol-stream). The Solana stream bridges the Yellowstone Geyser gRPC interface (geyser.Geyser, proto 13.1.0) from Triport-operated cohort hosts with managed failover. It is a live, at-most-once firehose — no replay/backfill, reconnect-and-resubscribe on drop. Full proto/source/latency/failover table in sol-stream → Source, proto & delivery semantics.
  • Watchlist requires REST registration. Before connecting to /ws/sol-watch, register pubkeys via the REST control plane (POST /v1/sol/watchlist with callback_type: ws). The channel only streams entries owned by the authenticated tenant.
  • Keepalives. The Solana stream uses Ping/Pong frames; the watchlist channel emits a heartbeat every 30s when idle.
  • See Authentication and Rate limits & tiers for account-wide details.
WS Ethereum Pub/Sub WebSocket — /ws/eth
Subscribe over WebSocket to real-time Ethereum events — pending transactions, filtered logs, new block headers, and node sync state — using the standard eth_subscribe / eth_unsubscribe JSON-RPC shape.
WS Polygon Pub/Sub WebSocket — /ws/polygon
Real-time Polygon JSON-RPC pub/sub over WebSocket: subscribe with eth_subscribe, receive eth_subscription notifications until you eth_unsubscribe.
WS Solana First-Shred Stream
The earliest slot-level signal Triport exposes — a compact WebSocket fan-out of Solana's first-shred-received slot event, pushed the moment a validator receives the first shred of a new slot, ahead of processed/confirmed.
WS Solana High-Throughput Stream — /ws/sol-stream
A single bidirectional WebSocket that carries the full Solana firehose — accounts, transactions, slots, blocks, and entries — driven by one replaceable filter set.
WS Solana Pre-Execution Transaction Stream
Transactions as the validator reconstructs them from the leader's shreds —
WS Solana Pub/Sub WebSocket — /ws/sol
A single WebSocket endpoint for Solana JSON-RPC Pub/Sub: subscribe to account, signature, log, program, slot, root, block, vote, and slot-update events and receive server-pushed notifications in real time.
WS Watchlist Push WebSocket — /ws/sol-watch
Streams real-time account-change events for the Solana pubkeys your tenant has registered on its watchlist.
Solana Yellowstone gRPC / LaserStream
Production access to the Solana Yellowstone gRPC firehose for backend services that need low-latency slots, accounts, transactions, blocks, and entries over a native gRPC stream.