TriportRPC

Streaming Overview

Real-time WebSocket access to Solana, Ethereum and Polygon data — pub/sub subscriptions, a high-throughput Solana stream, and a custom account watchlist push, all over a single wss:// gateway.

Method / Endpointwss://ws.triport.io/ws/* (5 channels — see table below)
NetworkSolana, Ethereum, Polygon
AuthenticationAuthorization: Bearer $TRIPORT_API_KEY (upgrade header or first WS frame) 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 its real-time surface over WebSocket. All streaming connects to the single production gateway host ws.triport.io over wss://; a ws.staging.triport.io host is available for testing. Each channel is a distinct path on that host.

There are five 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://ws.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://ws.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 JSON-RPC Pub/Sub/ws/solSolanafree (per-method: free → pro)sol-pubsub
Solana high-throughput stream/ws/sol-streamSolanaprosol-stream
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.

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.
  • 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.