Skip to main content

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.

Start in the sandbox

The sandbox (launching — see Status) at https://api.sentico-sandbox.xyz is not yet documented as available. Check Status before using it. Once Status marks it available, use its faucet and mock collateral for the funded steps below.

Production access

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 areLaneProduction endpointSandbox endpoint (launching)Continue in
A bot, dashboard, or getting startedREST + WebSocketapi.sentico-labs.xyz:443 (HTTPS/WSS)api.sentico-sandbox.xyz:443Getting Started
An existing FIX shopFIX 4.4fix.sentico-labs.xyz:9878fix.sentico-sandbox.xyz:9878FIX Overview
A market maker doing the first live quoteBSL compact HTTPapi.sentico-labs.xyz:443api.sentico-sandbox.xyz:443First BSL Quote
A latency-sensitive market maker after conformanceBSL Direct TCPbsl.sentico-labs.xyz:9001bsl.sentico-sandbox.xyz:9001BSL 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 shopBinary-FIX / FIXPfixp.sentico-labs.xyz:9879fixp.sentico-sandbox.xyz:9879FIXP Conformance
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​

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.

Session keys and the dead-man switch

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:

  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.