Skip to content

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:

ListenerDefault portServicesAuth
Public50051MarketDataService, StatsService, HistoricalService, NodeService, AuthServiceNone; public.
Authed50052AuthService, MakerService, TxServiceBearer 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 });

Built on Solana