Skip to content

Protocols & transports

ProtocolContent-TypeBest for
gRPC (binary)application/grpcNative Rust / Python clients — hot path.
gRPC-Web (binary)application/grpc-web+protoBrowser SDK default.

The FLINT SDKs use:

SDKDefault transport
RustgRPC (binary) over HTTPS
PythongRPC (binary) over HTTPS
TypeScript-webgRPC-Web binary over HTTPS

gRPC examples

Use the SDKs for production clients. For quick checks from a shell, grpcurl can call the same RPCs over gRPC using the bundled proto:

sh
# Public — no auth needed.
grpcurl \
  -proto api.proto \
  -d '{}' \
  api.superis.exchange:443 \
  sweetspot.api.v1.MarketDataService/ListPairs

# Authenticated — pass the session token as gRPC metadata.
grpcurl \
  -proto api.proto \
  -H "authorization: Bearer ${SUPERIS_TOKEN}" \
  -d '{}' \
  auth.api.superis.exchange:443 \
  sweetspot.api.v1.MakerService/GetBalance

# Historical candles — public, no auth. Timestamp.micros is unix microseconds.
grpcurl \
  -proto api.proto \
  -d '{"pair":{"base":{"id":1},"quote":{"id":0}},"interval":"CANDLE_INTERVAL_5M","start":{"micros":"1735689600000000"},"end":{"micros":"1735776000000000"}}' \
  api.superis.exchange:443 \
  sweetspot.api.v1.HistoricalService/GetCandles

grpcurl accepts JSON input for convenience, then sends the request as gRPC. The on-the-wire schema remains protobuf.

Streaming

Long-lived server streams (MarketDataService.Subscribe, MarketDataService.SubscribeFills, MarketDataService.SubscribeMarketSnapshots, MakerService.SubscribeBalance, MakerService.SubscribeFills, MakerService.SubscribeMarketSnapshots, TxService.SubscribeBlockhash / SubscribeSlots / SubscribeTxStatus) are the recommended path for anything event-driven. The SDK helpers handle auto-reconnect and fan-out internally — see the per-language SDK pages.

Build on Solana