Appearance
Endpoints
Environments
Mainnet (default)
- Dashboard: mainnet.dash.flint.trade
- Public API:
https://mainnet.api.flint.trade - Authed API:
https://mainnet.makerapi.flint.trade
Devnet
- Dashboard: devnet.dash.flint.trade
- Public API:
https://devnet.api.flint.trade - Authed API:
https://devnet.makerapi.flint.trade
Listener architecture
The Flint server binds two gRPC listeners so each can be fronted with a different ingress policy: a public CDN or cache for market data, and a stricter authenticated edge for maker and transaction RPCs:
| Listener | Default port | Services | Auth |
|---|---|---|---|
| Public | 50051 | MarketDataService, StatsService, HistoricalService, NodeService, AuthService | None; public. |
| Authed | 50052 | AuthService, MakerService, TxService | Bearer session token for all except AuthService. |
AuthService is available on both listeners. The public listener is enough for login flows; makers also configure the authed listener because the tokens it mints are used by MakerService and TxService.
Overriding the endpoint
Every client defaults to mainnet, so the common case needs no endpoint at all. Pass an endpoint only to target another network or a custom host. Set one endpoint for a known network (mainnet or devnet) and the SDK assumes its partner; for any unrecognized host, set both. Each SDK also exports the endpoint constants (MAINNET_* / DEVNET_*) so you don't have to hardcode URLs.
rust
use flint_api_client::{
Client,
DEVNET_MAKER_ENDPOINT,
DEVNET_PUBLIC_ENDPOINT,
};
// Default — mainnet.
let client = Client::builder().build().await?;
// Mainnet — explicit, for symmetry.
let client = Client::builder().mainnet().build().await?;
// Devnet — maker endpoint derived automatically.
let client = Client::builder().devnet().build().await?;
// Override only the public endpoint. Known network pairs derive the authed endpoint.
let client = Client::builder()
.public_endpoint(DEVNET_PUBLIC_ENDPOINT)
.build()
.await?;
// Override only the authed endpoint. Known network pairs derive the public endpoint.
let client = Client::builder()
.auth_endpoint(DEVNET_MAKER_ENDPOINT)
.build()
.await?;
// Custom deployment — set both listeners explicitly.
let client = Client::builder()
.public_endpoint("https://api.example.com")
.auth_endpoint("https://makerapi.example.com")
.build()
.await?;python
from flint import Client, Endpoints, DEVNET_PUBLIC_ENDPOINT, DEVNET_MAKER_ENDPOINT
# Default — mainnet.
client = Client()
# Devnet — the authed endpoint is assumed from the public one.
client = Client(Endpoints(public_url=DEVNET_PUBLIC_ENDPOINT, auth_url=DEVNET_MAKER_ENDPOINT))ts
import {
createClient,
createMakerClient,
DEVNET_PUBLIC_ENDPOINT,
DEVNET_MAKER_ENDPOINT,
} from "@superis-labs/flint-api-client";
// Default — mainnet.
const market = createClient();
// Devnet — each factory takes its own baseUrl.
const devnetMarket = createClient({ baseUrl: DEVNET_PUBLIC_ENDPOINT });
const devnetMaker = createMakerClient({ baseUrl: DEVNET_MAKER_ENDPOINT, auth });