Connectivity & Endpoints
Senticore exposes one public HTTP/WebSocket surface and three dedicated institutional lanes (FIX 4.4, BSL Direct TCP, and binary-FIX/FIXP). This page is the single source of truth for where you connect, on which port, and how TLS is terminated. Everything here is verified against the running gateway configuration. If a number differs from an older page, this page wins.
The exact, live values (hosts, ports, SNIs, credential field names, frame sizes)
are also served by the connectivity bundle: GET /api/v1/bsl/connectivity
(aliases GET /api/v1/fix/connectivity and GET /api/v1/fixp/connectivity).
Build your deployment config from that endpoint rather than hard-coding values.
In particular, only enable FIXP clients when the returned fixp.enabled is
true.
Endpoint matrix
| Lane | Host (TLS SNI) | Port | Protocol | TLS terminates | For |
|---|---|---|---|---|---|
| Public REST + WebSocket | api.sentico-labs.xyz | 443 | HTTPS / WSS | nginx (edge) | Everyone: market data, account, retail order entry |
| FIX 4.4 (tag=value) | fix.sentico-labs.xyz | 9878 | FIX 4.4 over TLS | In-process (rustls) | Institutions with an existing FIX engine |
| BSL Direct TCP (binary) | bsl.sentico-labs.xyz | 9001 | Senticore BSL v2 over TLS | In-process (rustls) | Latency-sensitive MMs, per-order signed |
| Binary-FIX / FIXP (SBE) | fixp.sentico-labs.xyz | 9879 when fixp.enabled=true | SBE + SOFH + FIXP over TLS | In-process (rustls) | SBE/FIXP shops |
Sandbox
The sandbox (launching — see Status) is a separate off-chain deployment with the same lanes on the same ports. Only the hostname and the signing chain id differ.
| Lane | Sandbox host (TLS SNI, launching) | Port | Production equivalent |
|---|---|---|---|
| Public REST + WebSocket | api.sentico-sandbox.xyz | 443 | api.sentico-labs.xyz:443 |
| FIX 4.4 (tag=value) | fix.sentico-sandbox.xyz | 9878 | fix.sentico-labs.xyz:9878 |
| BSL Direct TCP (binary) | bsl.sentico-sandbox.xyz | 9001 | bsl.sentico-labs.xyz:9001 |
| Binary-FIX / FIXP (SBE) | fixp.sentico-sandbox.xyz | 9879 | fixp.sentico-labs.xyz:9879 |
| Binary market data | md.sentico-sandbox.xyz | 9002, 9003 | Entitlement-issued per desk |
| Web app | app.sentico-sandbox.xyz | 443 | app.sentico-labs.xyz |
Signed actions in the sandbox carry chain id 421614, not 42161. Read the chain binding from the connectivity bundle on the host you are connected to; a sandbox signature is rejected by production and a production signature is rejected by the sandbox.
All lanes terminate in-process on one host at Hetzner Online in Germany. As one
reference point rather than a guarantee: one client measuring from Vienna on
2026-09-13 (network RTT 29.5 ms) saw FIX 4.4 order acks at 29.9 ms and cancels
at 29.7 ms, FIXP acks at 35–40 ms, BSL Direct TCP CoreAck p50 of 30–38 ms with
Ed25519 session keys, and BSL HTTPS compact submits at p50 about 74 ms. Your
figures depend on your own network path; see the
HFT Market-Maker Guide for how to measure them.
Measured from a host inside the same facility on 2026-09-21, TCP connection
establishment is 0.44 ms to FIX, 0.47 ms to FIXP, 0.48 ms to BSL Direct TCP and
0.51 ms to the direct market-data route, against 21.67 ms to the CDN-fronted
api. name. The
Colocation Latency Benchmark states the
clock discipline behind those figures and what they do not cover. It also
reports a FIX 4.4 order acknowledgement measured from inside the facility:
6.22 ms p50, 183.78 ms p99.
Resolve these names through DNS at startup; do not copy a historical A record
into a client configuration. The three institutional lanes are raw TCP ports
with in-process TLS. They do not pass through a CDN or an HTTP reverse
proxy. Only api.sentico-labs.xyz is behind the HTTP edge. Hostname, port, SNI,
and enablement from the connectivity bundle override this dated page.
FIX, BSL, and FIXP are TLS-over-TCP, not HTTP. A CDN/HTTP proxy such as
Cloudflare orange-cloud will break the handshake. Keep these three records
DNS-only. The connectivity bundle advertises
cloudflareHttpsProxySupported: false for exactly this reason.
TLS, SNI, mTLS, and IP posture
- Present the correct SNI per lane. Each lane validates against its own
subdomain (
fix.,bsl.,fixp.), notapi.. - TLS is mandatory on every public lane. Production deployments fail closed if a binary lane would bind plaintext on a public interface.
- mTLS is optional and recommended for dedicated institutional routes. When a client CA is configured the gateway requires a client certificate; otherwise it accepts any valid TLS client and relies on application-layer credentials.
- Source-IP allowlisting is optional for desks with static egress IPs. The public FIX, BSL, and FIXP lanes do not require IP onboarding by default, but order entry still requires valid session or per-order credentials.
Which lane should I use?
| You are... | Use | Why |
|---|---|---|
| A retail / programmatic trader | REST + WebSocket (api.) | Simplest: one HTTPS host, JSON, signed actions, /feed/public for market data |
| An MM that already runs a FIX engine | FIX 4.4 (fix.) | Drop-in tag=value; session auth, order status, drop-copy, cancel-on-disconnect |
| A latency-sensitive MM wanting a lean binary wire | BSL Direct TCP (bsl.) | 192-byte fixed-layout order frames, recoverable session, per-order signed frames (Ed25519 session keys on production) |
| A shop with an SBE/FIXP stack | Binary-FIX / FIXP (fixp.) | Standards-interoperable SBE+FIXP; session auth; cancel-on-disconnect + mass-cancel |
All lanes feed the same deterministic matching engine and books, but they do not expose an identical action set. Signed HTTP has the broadest action coverage. BSL, FIX, and FIXP expose narrower OMS subsets and their own session, nonce, and recovery contracts. Use the capability matrix in each lane's guide instead of assuming transport-only parity.
Public REST + WebSocket base URLs
| Surface | Production URL | Sandbox URL (launching) |
|---|---|---|
| REST | https://api.sentico-labs.xyz/api/v1/... | https://api.sentico-sandbox.xyz/api/v1/... |
| Multiplexed WebSocket | wss://api.sentico-labs.xyz/api/v1/ws/public and .../api/v1/ws/private/{account} | wss://api.sentico-sandbox.xyz/api/v1/ws/public and .../api/v1/ws/private/{account} |
| Snapshot+delta market feed | wss://api.sentico-labs.xyz/api/v1/feed/public plus /feed/public/a and /feed/public/b | wss://api.sentico-sandbox.xyz/api/v1/feed/public plus /feed/public/a and /feed/public/b |
| Direct market data (no CDN, authenticated) | wss://md.sentico-labs.xyz:9002/api/v1/ws/public and :9003 | wss://md.sentico-sandbox.xyz:9002/api/v1/ws/public and :9003 |
| Server-Sent Events | https://api.sentico-labs.xyz/api/stream/market and .../api/stream/account/{account} | https://api.sentico-sandbox.xyz/api/stream/market and .../api/stream/account/{account} |
For market data, MMs and HFT should use /api/v1/feed/public/a + /b: two
redundant lines carrying a sequenced snapshot+delta stream with per-frame
integrity checksums and gap recovery. The multiplexed /api/v1/ws/public is
best for charts and lightweight clients. See WebSocket Overview.
Latency-sensitive clients should also read
Direct Market Data: the same stream without a CDN in
front, authenticated with a read-scoped credential.
Per-lane summary
FIX 4.4 - fix.sentico-labs.xyz:9878
Standard FIX.4.4 tag=value over TLS. Logon (35=A) carries your API key in
Username(553), secret:passphrase in Password(554), and the engine account
in Account(1). Supports NewOrderSingle, Cancel, atomic CancelReplace,
MassCancel, OrderStatus, drop-copy (TargetSubID(57)=drop_copy), and
cancel-on-disconnect. No per-order signing: the session is the authenticated
identity. See FIX API.
BSL Direct TCP - bsl.sentico-labs.xyz:9001
Senticore's lean binary lane (protocol id senticore-bsl-tcp-v2): a 48-byte
handshake, an 8-byte [kind][len] message header, and a 192-byte
fixed-layout CompactActionFrame decoded zero-copy. The v2 session is recoverable: sequenced acknowledgements,
heartbeats, retransmit, token-based resume, and bounded backpressure.
BSL does not authenticate once and then trust the socket. For each single order, send:
AuthSidecar(kind=4, cold AuthSidecar payload)
CompactActionFrame(kind=1, 192-byte frame)
For atomic groups, use CompactFrameGroup(kind=10) where every item embeds its
own sidecar. The AuthSidecar carries auth_binding, secp256k1 signature,
20-byte signer_id, and mandatory cold-encoded SignedAction payload_bytes.
The sequencer verifies the v2 chain-bound action hash, signer authorization,
account mapping, compact frame fields, replay/nonce state, and rate limits. See
BSL Direct TCP for the full wire order and failure modes.
Wallet-signed AuthSidecar V1 frames are accepted by the gateway but still
not applied on production (reason 202). The path that works is an Ed25519
session key with AuthSidecarV2 (senticore_session_key_v1). Register
the key over HTTP with Origin: https://app.sentico-labs.xyz, wallet-auth
appName "Sentico", and no SC-* machine-auth headers; include
"cancel" in the policy's allowedActions if you will arm the dead-man
switch. A session without client heartbeats ends after about 4 s
(sessionEnded); resting orders stay unless cancelOnDisconnect is set. See
BSL Session Keys.
Binary-FIX / FIXP - fixp.sentico-labs.xyz:9879
An SBE/FIXP stack: SBE message encoding + SOFH framing +
FIXP Recoverable session. Authenticate once at Negotiate with
apiKeyId:apiSecret:apiPassphrase:accountHex; thereafter the session is the
identity (no per-order signing). Cancel-on-disconnect, mass-cancel, ClOrdID
dedup, OrderStatusRequest replies, account-bound cross-connection resume, and a
published SBE schema + golden vectors are used for codec certification. The
public lane is reachable without IP onboarding, like FIX 4.4; invalid
credentials are rejected during FIXP negotiation. Check
GET /api/v1/fixp/connectivity before startup and fail closed if fixp.enabled
is false. See Binary-FIX Conformance.