Skip to main content

FIX Gateway Overview

Senticore exposes a FIX gateway for institutional clients, algorithmic traders, and OMS integrations. In the private beta, FIX is a separate TCP listener, not an HTTPS route under api.sentico-labs.xyz.

Supported dialects

DialectStatus
FIX 4.4Implemented in the current gateway
Senticore extensionsImplemented where documented below

Session structure

SessionDirectionPurpose
Order EntryClient to serverNew orders, cancels, cancel-replace
Order StatusClient to serverSingle-order and mass-status queries
Drop CopyServer to clientExecution report stream for downstream systems

Connection

EnvironmentEndpoint
Private betaProvisioned TCP/TLS endpoint from onboarding. Current live ops exposes direct TCP/TLS at fix.sentico-labs.xyz:9878 with TLS SNI fix.sentico-labs.xyz when FIX is enabled.
MainnetNot public yet

Cloudflare HTTPS routing does not proxy raw FIX/TCP unless a separate TCP proxy such as Cloudflare Spectrum, a TCP load balancer, or a DNS-only direct listener is configured. Do not assume https://api.sentico-labs.xyz or a Cloudflare-proxied api.sentico-labs.xyz:9878 connection can be reused as a FIX endpoint.

Read GET /api/v1/bsl/connectivity or GET /api/v1/fix/connectivity before connecting. The unauthenticated response gives the public contract; an authenticated institutional_agent HMAC request also returns the account, agent, scopes, and recommended SenderCompID values. Production connectivity uses the DNS-only direct host from the bundle; use that host, port, and TLS SNI exactly as returned.

Authentication

FIX Logon uses the same HMAC credential family as durable API and BSL agents, but the credential should be issued to the business-line institutional_agent in private beta:

FIX tagMeaning
1Account address
49Client SenderCompID
56Senticore TargetCompID
57Session scope, for example order_entry or drop_copy
553API key id
554<api_secret>:<api_passphrase>

Ed25519 machine credentials are HTTP-only and are not accepted for FIX Logon. Create institutional_agent HMAC credentials through the wallet-authorized API Agents flow.

FIX does not use the optional BSL signed-submit lane key. A client can derive its FIX bundle self-service after creating an institutional_agent: use TargetCompID(56)=SENTICORE, the bundle's stable SenderCompID(49), the desired scope in TargetSubID(57), account in Account(1), API key id in Username(553), and <api_secret>:<api_passphrase> in Password(554).

See FIX Session.

TargetSubID(57) is a session label, not a permission boundary

Order entry is authorized by the credential's agent scopes (trade, cancel, drop_copy), not by the order_entry / drop_copy value in TargetSubID(57). A session logged on with 57=drop_copy whose credential carries trade scope can still send NewOrderSingle. To run a genuinely read-only drop-copy session, issue it a separate institutional_agent credential with only read and drop_copy scopes.

Measured by an external market maker, 2026-09-03

From a client 30 ms away, Logon took 54–86 ms, NewOrderSingle → ExecutionReport 29.2–29.8 ms and OrderCancelRequest → ExecutionReport 29.9–32.2 ms, against a 29.6 ms heartbeat baseline. The venue's own share of an order round trip is therefore 0.3–0.4 ms. Two things a FIX client must handle: ClOrdIDs are remembered across sessions (a counter that restarts at 1 is rejected as duplicate), and a session-level Reject (35=3) references RefSeqNum(45), not the ClOrdID, so keep an outbound sequence-to-ClOrdID map.

Supported messages

Inbound

MsgTypeDescription
ALogon
0Heartbeat
1TestRequest
2ResendRequest
4SequenceReset
5Logout
DNewOrderSingle
HOrderStatusRequest
FOrderCancelRequest
GOrderCancelReplaceRequest
qOrderMassCancelRequest
AFOrderMassStatusRequest

Outbound

MsgTypeDescription
8ExecutionReport
9OrderCancelReject
rOrderMassCancelReport
jBusinessMessageReject

Order types

The current FIX gateway supports:

  • Market and limit orders
  • Time-in-force mapping for GTC/default, IOC, and FOK
  • Prediction-market book selection through Senticore tag 9100 (YES or NO)
  • Stable outbound admission-reject codes through Senticore tag 9101 (103 trading halted, 104 ledger degraded); standard OrdRejReason(103) remains 99 (Other) for these Senticore-specific reasons
  • Self-trade-prevention override through Senticore tag 7928
  • Cancel, cancel-replace, single order status, mass status, and mass cancel

NewOrderSingle and cancel-replace return a synchronous PendingNew ExecutionReport (35=8, 150=A, 39=A); cancels return 150=4/39=4. Real fills and terminal states arrive asynchronously on the drop-copy stream. FIX uses session/agent (HMAC) authentication, and submitted actions carry a placeholder signature rather than a per-message client crypto signature.

OrderMassStatusRequest(AF) emits ExecutionReports for matching open orders. If the request is valid but no open orders match, the gateway returns a terminal BusinessMessageReject(35=j) with RefMsgType(372)=AF and a no open orders text. Clients should treat that as a completed empty mass status response, not as a socket timeout.

Current conformance status

The current private-beta gateway has liveness, strict BodyLength/Checksum framing, malformed-frame Rejects, sequence persistence, resend replay, single-session fencing, rate limits, duplicate ClOrdID rejection, atomic cancel-replace, mass cancel, and TLS fail-closed guards in protected environments.

Execution stream reports include CumQty(14), LeavesQty(151), LastQty(32), Price(44), and AvgPx(6) when supplied by the hotpath result. Heartbeats sent in response to TestRequest(35=1) echo TestReqID(112).

Known private-beta limits:

  • Repeating groups such as NewOrderList and Party groups are not implemented.
  • Outbound sequence persistence is synchronous for stronger replay semantics; async batching is a later throughput optimization.
  • Order status snapshots enrich AvgPx(6) from persisted execution-stream history when available; they report 0 when no fill-average history remains for that order.
  • Server TLS is enforced in guarded environments; mutual TLS is available only when a client CA bundle is provisioned.
  • External QuickFIX certification is still pending.

Why FIX

BenefitWhy it matters
OMS integrationInstitutions can connect existing trading infrastructure
Deterministic session stateSequence numbers and gap recovery are built in
Lower overhead than JSONTag-value messages avoid JSON parsing cost
Industry standardQuant desks and broker systems already support FIX

Next