Skip to content

Getting Started

Five steps stand between you and your first quote: create a wallet, deposit FISH, generate API credentials, connect market data, and start with conservative quote limits.


Use an EVM wallet address as your Openfish trading identity. The wallet signs authentication and order payloads.

Recommended setup:

ItemRecommendation
Wallet typeDedicated market-making wallet
Key storageHardware-backed or encrypted secret manager
FundingKeep only the amount needed for active strategy inventory
SeparationUse separate wallets for production, staging, and experiments

Do not reuse a personal wallet that holds unrelated assets.


Openfish markets use the FISH token. Deposit through the Bridge and wait for the ledger balance to appear before quoting.

FISH token on BSC -> Bridge -> Openfish ledger balance

After the deposit is credited, the CLOB balance endpoint reports funds available for orders.


Authenticated CLOB endpoints rely on API credentials derived from a wallet signature.

use openfish_client_sdk::auth::{LocalSigner, Signer};
use openfish_client_sdk::clob::{Client, Config};
use std::str::FromStr;
let private_key = std::env::var("OPENFISH_PRIVATE_KEY")?;
let signer = LocalSigner::from_str(&private_key)?;
let client = Client::new("https://api.openfish.me", Config::default())?
.authentication_builder(&signer)
.authenticate()
.await?;
// The client now holds your API key, secret, and passphrase internally.

Persist credentials in environment variables or a secret manager. Never check them into version control.

Terminal window
export OPENFISH_PRIVATE_KEY="0x..."
export OPENFISH_API_KEY="..."
export OPENFISH_SECRET="..."
export OPENFISH_PASSPHRASE="..."

Before quoting, build a local view of the market:

  1. Discover markets with /browse/markets or /browse/topics/world-cup/games.
  2. Read /book?token_id=... for each token you quote.
  3. Subscribe to wss://api.openfish.me/ws/market with level: 2.
  4. Apply price_change, best_bid_ask, and last_trade_price events as they arrive.

Use level: 3 with initial_dump: true only when you want the WebSocket to send a one-time full book snapshot after subscribing.


Start with small limits until balance accounting, cancellation, and risk controls have been verified.

Minimum controls:

ControlPurpose
Max order sizeCaps single-order loss from stale quotes
Max market exposurePrevents concentration in one market
Max portfolio exposureLimits total FISH committed
Kill switchCancels all live orders on abnormal fills or connectivity loss
Balance reconciliationConfirms API balances match strategy state

  • Trading — Post limit orders and manage quotes.
  • Market Data — Connect to real-time orderbook feeds.
  • Inventory — Manage ledger balances and outcome exposure.