Protocols & transports
| Protocol | Content-Type | Best for |
|---|---|---|
| gRPC (binary) | application/grpc | Native Rust / Python clients — hot path. |
| gRPC-Web (binary) | application/grpc-web+proto | Browser SDK default. |
The FLINT SDKs use:
| SDK | Default transport |
|---|---|
| Rust | gRPC (binary) over HTTPS |
| Python | gRPC (binary) over HTTPS |
| TypeScript-web | gRPC-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/GetCandlesgrpcurl 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.
