Skip to main content

5-Minute Onboarding

The shortest path from zero to a live order. For market makers, start with the tested BSL HTTP quote path, prove reconciliation, then move the same signed flow to Direct TCP/FIX when your account conformance is green.

Beta access

The private-beta API is live for whitelisted accounts at https://api.sentico-labs.xyz. You need funded beta credentials to trade. Public mainnet is not live yet.

The touchpoints

Everything you integrate against is one of these lanes. Pick the first lane that matches your use case; you do not need all of them on day one.

You areLaneEndpointContinue in
A bot, dashboard, or getting startedREST + WebSocketapi.sentico-labs.xyz:443 (HTTPS/WSS)Getting Started
An existing FIX shopFIX 4.4fix.sentico-labs.xyz:9878FIX Overview
A market maker doing the first live quoteBSL compact HTTPapi.sentico-labs.xyz:443First BSL Quote
A latency-sensitive market maker after conformanceBSL Direct TCPbsl.sentico-labs.xyz:9001BSL Direct TCP
An SBE/FIXP (iLink-3-class) shopBinary-FIX / FIXPfixp.sentico-labs.xyz:9879BSL Overview
Never hard-code endpoints

Hosts, ports, SNIs, CompIDs, and signing parameters are served live by the connectivity bundle - build your config from it, not from copied values: GET /api/v1/bsl/connectivity. See Connectivity & Endpoints and the Connectivity Bundle.

The 5 steps

1. Get credentials. Create an institutional_agent through the wallet-authorized API Agent flow and request an HMAC credential for it. -> Authentication

2. Read the connectivity bundle. Call GET /api/v1/bsl/connectivity with the HMAC credential. Cache the BSL/FIX route, SenderCompID/TargetCompID, and the action-signing chainId + verifyingContract. -> Connectivity Bundle

3. Sign and submit one BSL action. Every order is a locally signed action - the operator cannot forge or alter it. With the SDK:

npm install @sentico-labs/[email protected]
const chainBinding = (await client.orderEntry.getActionChainBinding()).data;
const signed = signAction(payload, ACTION_PRIVATE_KEY, { chainBinding });
await client.orderEntry.submitActions([signed], {
idempotencyKey: `first-bsl-quote-${payload.account}-${payload.nonce}`,
responseMode: "detailed",
headers: { "x-bsl-result-mode": "ack" },
});

-> Local Action Signing - EIP-712 Signing

4. Pipeline, don't block. Nonces use a windowed replay model: any unused nonce in [nonceFloor, nonceFloor + 256) is valid, out-of-order and with gaps. One account keeps up to 256 orders in flight without waiting for acks. -> Concurrency & Nonces

5. Listen and reconcile. Subscribe to the private WebSocket (or FIX drop-copy) for fills and order state. -> Private Channels - FIX Drop-Copy

Market-maker checklist

For the copy-paste path, have these values ready:

API_BASE_URL=https://api.sentico-labs.xyz
ENGINE_ACCOUNT=0x... # 20-byte engine account
MARKET_ID=...
BOOK=YES
API_KEY_ID=...
API_SECRET=...
API_PASSPHRASE=...
ACTION_PRIVATE_KEY=...

Do not start with Direct TCP as the first proof. First prove:

  1. HMAC credential works.
  2. Fresh bootstrap shows funding.
  3. Signed QuoteReplace is accepted.
  4. Orders/fills/private stream reconcile the result.

Then use the same account and compact mapping for Direct TCP/FIX conformance.

Copy-paste path

When you want a real, funded end-to-end run instead of a map, go straight to the tested walkthroughs:

What you can trust

The reason this is safe to integrate against quickly: your collateral sits in an on-chain vault, every order is a signature you control, and withdrawals settle against on-chain roots with Merkle proofs - not operator discretion. Fast to onboard, and verifiable by design.