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.
Step 1: Create a Wallet
Section titled “Step 1: Create a Wallet”Use an EVM wallet address as your Openfish trading identity. The wallet signs authentication and order payloads.
Recommended setup:
| Item | Recommendation |
|---|---|
| Wallet type | Dedicated market-making wallet |
| Key storage | Hardware-backed or encrypted secret manager |
| Funding | Keep only the amount needed for active strategy inventory |
| Separation | Use separate wallets for production, staging, and experiments |
Do not reuse a personal wallet that holds unrelated assets.
Step 2: Deposit FISH
Section titled “Step 2: Deposit FISH”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 balanceAfter the deposit is credited, the CLOB balance endpoint reports funds available for orders.
Step 3: Generate API Credentials
Section titled “Step 3: Generate API Credentials”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.
export OPENFISH_PRIVATE_KEY="0x..."export OPENFISH_API_KEY="..."export OPENFISH_SECRET="..."export OPENFISH_PASSPHRASE="..."Step 4: Connect Market Data
Section titled “Step 4: Connect Market Data”Before quoting, build a local view of the market:
- Discover markets with
/browse/marketsor/browse/topics/world-cup/games. - Read
/book?token_id=...for each token you quote. - Subscribe to
wss://api.openfish.me/ws/marketwithlevel: 2. - Apply
price_change,best_bid_ask, andlast_trade_priceevents 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.
Step 5: Start Quoting
Section titled “Step 5: Start Quoting”Start with small limits until balance accounting, cancellation, and risk controls have been verified.
Minimum controls:
| Control | Purpose |
|---|---|
| Max order size | Caps single-order loss from stale quotes |
| Max market exposure | Prevents concentration in one market |
| Max portfolio exposure | Limits total FISH committed |
| Kill switch | Cancels all live orders on abnormal fills or connectivity loss |
| Balance reconciliation | Confirms API balances match strategy state |
Next Steps
Section titled “Next Steps”- Trading — Post limit orders and manage quotes.
- Market Data — Connect to real-time orderbook feeds.
- Inventory — Manage ledger balances and outcome exposure.