5-Minute Onboarding
Start with the downloadable npm quickstart: unpack
it, cd senticore-quickstart, run npm install, then npm run public-read.
That first success needs no
credential and cannot place an order. App and retail-bot developers can then
continue with Getting Started. Funded bots add
the private-stream and explicitly guarded order examples from the same archive.
Market makers continue with the BSL/FIX path below.
The private-beta API is live for whitelisted accounts at
https://api.sentico-labs.xyz. You need funded beta credentials to trade there.
The custody and checkpoint contracts are live on Arbitrum One, but public,
self-service venue access to production 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 are | Lane | Production endpoint | Sandbox endpoint (launching) | Continue in |
|---|---|---|---|---|
| A bot, dashboard, or getting started | REST + WebSocket | api.sentico-labs.xyz:443 (HTTPS/WSS) | api.sentico-sandbox.xyz:443 | Getting Started |
| An existing FIX shop | FIX 4.4 | fix.sentico-labs.xyz:9878 | fix.sentico-sandbox.xyz:9878 | FIX Overview |
| A market maker doing the first live quote | BSL compact HTTP | api.sentico-labs.xyz:443 | api.sentico-sandbox.xyz:443 | First BSL Quote |
| A latency-sensitive market maker after conformance | BSL Direct TCP | bsl.sentico-labs.xyz:9001 | bsl.sentico-sandbox.xyz:9001 | BSL Direct TCP — wallet-signed AuthSidecar V1 frames are still not applied on production (reason 202, re-checked 2026-09-13); use an Ed25519 session key |
| An SBE/FIXP shop | Binary-FIX / FIXP | fixp.sentico-labs.xyz:9879 | fixp.sentico-sandbox.xyz:9879 | FIXP Conformance |
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
When Status marks the sandbox available, run them there first and use its mock-USDC faucet as step 0. Production requires whitelisted access and a funded balance before step 3 can succeed. -> Funding & Preflight
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 REST action. The downloadable starter submits a
locally signed spot SpotPlaceOrder to POST /api/v1/trading/actions; the
operator cannot forge or alter it. It is the app/bot onboarding path, not the
BSL compact quote path.
Use submit-order.mjs from the
quickstart archive. It pins public SDK 0.3.0, reads
live nonce and market constraints, requires explicit price and quantity, and
requires the exact SENTICORE_LIVE_ORDER_CONFIRM value before one submission.
Market makers implementing BSL QuoteReplace should instead follow
Place Your First Institutional BSL Quote.
-> 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.
The window exposes at most 256 allocated action nonces; account, market, risk
and rate limits can impose a lower practical order concurrency. ->
Concurrency & Nonces
5. Listen and reconcile. An HTTP ACK proves admission, not terminal order
state. Subscribe to the private WebSocket (or FIX
drop-copy) for fills and order state. The private token comes from
POST /api/v1/ws/token with a credential that has read scope; when you
resume orderUpdates, send fromSeq as a decimal string together with
cursorNamespace: "execution-v1" (error 1004 otherwise). ->
Private Channels -
FIX Drop-Copy
Use the ACK's sequence/order id and the signed clientOrderId to correlate the
terminal result. On resume_required, rebuild orders and fills from REST before
creating a new stream. Never recover by automatically resubmitting the order.
If you move to Direct TCP with a session key: registration
(POST /api/v1/bsl/session-keys/register) needs Origin: https://app.sentico-labs.xyz,
wallet-auth appName "Sentico", and no SC-* HMAC headers (403
otherwise). The policy's allowedActions must include "cancel", or arming
the dead-man switch (POST /api/v1/bsl/dms) answers DMS_AUTH_REJECTED.
Orders opt in per frame via dmsEpoch. ->
BSL Session Keys -
Dead-Man Switch
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 # binary/outcome only; omit for spot
API_KEY_ID=...
API_SECRET=...
API_PASSPHRASE=...
ACTION_PRIVATE_KEY=...
Do not start with Direct TCP as the first proof. First prove:
- HMAC credential works.
- Fresh bootstrap shows funding.
- Signed
QuoteReplaceis accepted. - 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:
- Place Your First Institutional BSL Quote - credentials -> signed
QuoteReplace-> reconciliation. - Market Maker Beta Quickstart - what is live and tested vs. reserved routes.
- Live Verified Beta - current conformance status and observed beta timings.
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.