API Overview
Triport is a single multi-chain RPC platform for Solana, Ethereum, and Polygon — JSON-RPC, a REST product layer, and WebSocket streaming, all behind one base URL and one API key.
| Method / Endpoint | n/a — orientation page |
| Network | Solana | Ethereum | Polygon |
| Authentication | x-token header (SDK-preferred); see Authentication for all forms |
| Required scope | — |
| Tier / rate limit | Any tier (free 7-day trial works); see Rate Limits |
What Triport is
Triport is a multi-chain RPC platform. You send standard requests to a single base URL; Triport authenticates your key, routes the request to the right network backend, enforces your tier's rate limits, and returns the upstream result unchanged. You integrate against one API surface instead of wiring up a separate provider per chain.
Three networks are supported today:
- Solana
- Ethereum
- Polygon (PoS)
Across those networks Triport exposes three kinds of surface:
| Surface | What it is | Transport |
|---|---|---|
| JSON-RPC | The native node RPC for each chain (getBalance, eth_getBalance, bor_*, …), proxied verbatim. | HTTP POST |
| REST product | Higher-level, opinionated endpoints (wallet, mempool, sender, watchlist, and chain-specific intel) layered on top of the raw RPC. | HTTP GET/POST |
| Streaming / WebSocket | Subscription channels — JSON-RPC Pub/Sub, a high-throughput account/transaction/slot stream, and a custom watchlist push channel. | WSS |
Base URLs
There are two environments. Both speak the same protocol; staging is for integration testing and may serve non-production data.
| Environment | Base URL |
|---|---|
| Production | https://api.triport.io |
| Staging | https://staging.api.triport.io |
Each network has its own path prefix off the base URL:
| Network | JSON-RPC path | REST prefix |
|---|---|---|
| Solana | /sol | /v1/sol/… |
| Ethereum | /eth | /v1/eth/… |
| Polygon | /polygon | /v1/polygon/… |
A minimal first request (Solana getBalance against production):
curl https://api.triport.io/sol \
-H "x-token: $TRIPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": ["vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"]
}'If you have never called Triport before, start with Getting Started — it takes you from zero to a verified response in under five minutes.
Authentication, briefly
Send your API key (it looks like nl_live_…). Triport accepts it in several
forms, tried in this priority order:
x-token: <key>header — preferred, used by the SDKs.Authorization: Bearer <key>header — standard Bearer scheme.?api-key=<key>query parameter — legacy.- Path form
/<chain>/<key>— works only fornl_live_*API keys.
Full details and when to use each are on the Authentication page.
Rate limits, briefly
Triport rate-limits by sustained requests-per-second, scoped to your tier
and the request's category, with a global burst multiplier of 2×. There is
no daily quota — only the per-second budget. Tiers range from the free 7-day
trial through basic, pro, business, and custom enterprise; higher tiers
unlock more RPS and multi-region routing.
Rate-limit state is reported on responses via X-RateLimit-Limit,
X-RateLimit-Remaining, X-RateLimit-Reset, and X-RateLimit-Category. When
you exceed your budget you get HTTP 429 with a Retry-After header. See
Rate Limits for the per-tier numbers and burst behavior.
Errors, briefly
Every error comes back as a JSON envelope with a machine-readable error code,
a human message, and a request_id for support. The codes you will see most:
| HTTP | error | When it happens |
|---|---|---|
| 401 | unauthorized | Missing or invalid key |
| 401 | trial_expired / subscription_expired | Trial or subscription period ended |
| 403 | tier_insufficient | Method requires a higher tier |
| 403 | method_unknown | Method not part of that chain's product |
| 429 | rate_limited | Sustained RPS exceeded |
| 400 | invalid_params | Malformed request |
| 500 | internal_error | Server-side failure |
Over JSON-RPC, these map to wire codes -32002 (tier_insufficient),
-32003 (rate_limited), and -32601 (method_unknown). See the
Errors page for the full envelope and typed error schemas.
Surface reference — where to go next
Guides
| Page | What it covers |
|---|---|
| Getting Started | Get a key and make your first call. |
| Authentication | Every supported auth form and when to use each. |
| Rate Limits | Per-tier RPS budgets, burst, and rate-limit headers. |
| Errors | The full error envelope and typed error schemas. |
Solana
| Surface | Reference |
|---|---|
| JSON-RPC | Solana JSON-RPC |
| REST product (wallet, snapshot, watchlist, mev-intel, sender, mempool) | Solana REST |
Pub/Sub WebSocket (accountSubscribe, logsSubscribe, programSubscribe, …) | Solana Pub/Sub WS |
| High-throughput account/transaction/slot stream | Solana Stream WS |
| Watchlist push channel | Watchlist Push WS |
Ethereum
| Surface | Reference |
|---|---|
JSON-RPC (eth_*) | Ethereum JSON-RPC |
| REST product (wallet, mempool, sender, leak-mesh, validator-intel, peer-graph-intel) | Ethereum REST |
Pub/Sub WebSocket (newHeads, logs, newPendingTransactions, syncing) | Ethereum WS |
Polygon
| Surface | Reference |
|---|---|
JSON-RPC (eth_* + bor_*) | Polygon JSON-RPC |
| REST product (wallet, mempool, sender, bor, trace, firehose-ws) | Polygon REST |
Pub/Sub WebSocket (newHeads, logs, newPendingTransactions, syncing) | Polygon WS |
SDKs
You can call any surface directly over HTTP/WSS, or use an official SDK that wraps auth, retries, and rate-limit handling for you:
- TypeScript —
@triport/sdk - Python —
triport-sdk
Both default to the x-token header and the production base URL. See
Getting Started for installable examples in each.
Notes
- All three networks share one key, one error envelope, and one rate-limit model — what you learn for Solana applies to Ethereum and Polygon.
- Raw JSON-RPC results are passed through unchanged from the upstream node, so existing chain tooling and method docs continue to apply.
- Use staging (
https://staging.api.triport.io) for integration tests so your production RPS budget is unaffected.