TriportRPC

Get mempool snapshot

GEThttps://api.triport.io/v1/sol/mempool/snapshot?limit=50

Returns a point-in-time snapshot of the pending Solana transactions Triport is currently observing pre-confirmation.

Solanasol_read_rpc_heavyfree (RPS-per-tier with burst — see [Rate limits](../../rate-limits.md))

Returns the current snapshot of pending transactions, each tagged with the program IDs it touches, how long ago it was first observed, and its fee.

Solana has no classic mempool: there is no shared, queryable pool of unconfirmed transactions the way Ethereum-family chains have. The data returned here is aggregated from pre-confirmation observations collected across Triport's own validator set. Treat it as a best-effort, eventually-stale view of in-flight traffic — useful for fee estimation, congestion monitoring, and spotting program-level activity spikes, but not as a guarantee that any listed transaction will land.

Each call is independent and returns whatever is in-flight at the moment it is served, alongside the slot and observed_at timestamp that scope the snapshot. Use GET /v1/sol/mempool/stats for rolling aggregate metrics (throughput, latency percentiles, counts by program) instead of the raw transaction list.

Parameters

Query parameters

limitintegeroptional
Maximum number of pending transactions to return. Range 11000, default 50.

Response

Response fields

FieldTypeDescription
slotinteger (int64)Slot the snapshot was anchored to when observed.
observed_atstring (date-time)RFC 3339 timestamp of when the snapshot was taken.
pendingarrayList of pending transactions (SolPendingTx), up to limit.
pending[].signaturestringTransaction signature (base58). Always present.
pending[].program_idsstring[]Program IDs invoked by the transaction.
pending[].observed_lat_msnumber (double)Milliseconds since the transaction was first observed.
pending[].feeinteger (int64)Transaction fee in lamports.

Errors

CodeMeaningWhen it happens
401unauthorized / trial_expired / subscription_expiredMissing, invalid, or expired credentials.
403tier_insufficient / method_unknownKey lacks the sol_read_rpc_heavy scope, or the method is not part of your product. Response carries an X-Required-Tier header.
429rate_limitedSustained RPS for your tier exceeded. Response carries Retry-After, X-RateLimit-Limit, and X-RateLimit-Remaining headers.

All errors share the standard envelope — see Errors for the full shape and the retry_after_sec / limit_rps / current_tier fields on 429.

Examples

JavaScript (fetch)

const res = await fetch(
  "https://api.triport.io/v1/sol/mempool/snapshot?limit=50",
  { headers: { Authorization: `Bearer ${process.env.TRIPORT_API_KEY}` } }
);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { slot, observed_at, pending } = await res.json();
console.log(`slot ${slot} @ ${observed_at}: ${pending.length} pending`);

TypeScript SDK (@triport/sdk)

import { Triport } from "@triport/sdk";


const client = new Triport({ apiKey: process.env.TRIPORT_API_KEY! });


const snapshot = await client.sol.mempool.snapshot({ limit: 50 });
for (const tx of snapshot.pending) {
  console.log(tx.signature, tx.observed_lat_ms, tx.fee);
}

Python (triport-sdk)

import os
from triport import Triport


client = Triport(api_key=os.environ["TRIPORT_API_KEY"])


snapshot = client.sol.mempool.snapshot(limit=50)
for tx in snapshot.pending:
    print(tx.signature, tx.observed_lat_ms, tx.fee)

Notes

  • Not a durable mempool. Two consecutive calls can return disjoint sets; absence of a signature does not mean it failed, and presence does not guarantee it lands. Anchor any reasoning to the returned slot / observed_at.
  • limit caps the number of returned entries, not the size of the underlying observation set — the snapshot may be truncated. There is no pagination cursor on this endpoint.
  • For aggregate throughput and latency percentiles, use GET /v1/sol/mempool/stats rather than computing them from repeated snapshots.
  • Rate limiting is RPS-per-tier with burst; there is no daily quota.