FIX Gateway Overview
Senticore exposes a FIX gateway for institutional clients, algorithmic traders,
and OMS integrations. In the 0.1.3 private beta, FIX is a separate TCP listener,
not an HTTPS route under api.sentico-labs.xyz.
Supported dialects
| Dialect | Status |
|---|---|
| FIX 4.4 | Implemented in the current gateway |
| Senticore extensions | Implemented where documented below |
Session structure
| Session | Direction | Purpose |
|---|---|---|
| Order Entry | Client to server | New orders, cancels, cancel-replace |
| Order Status | Client to server | Single-order and mass-status queries |
| Drop Copy | Server to client | Execution report stream for downstream systems |
Connection
| Environment | Endpoint |
|---|---|
| Private beta | Provisioned 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. |
| Mainnet | Not 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 tag | Meaning |
|---|---|
1 | Account address |
49 | Client SenderCompID |
56 | Senticore TargetCompID |
57 | Session scope, for example order_entry or drop_copy |
553 | API 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.
Supported messages
Inbound
| MsgType | Description |
|---|---|
A | Logon |
0 | Heartbeat |
1 | TestRequest |
2 | ResendRequest |
4 | SequenceReset |
5 | Logout |
D | NewOrderSingle |
H | OrderStatusRequest |
F | OrderCancelRequest |
G | OrderCancelReplaceRequest |
q | OrderMassCancelRequest |
AF | OrderMassStatusRequest |
Outbound
| MsgType | Description |
|---|---|
8 | ExecutionReport |
9 | OrderCancelReject |
r | OrderMassCancelReport |
j | BusinessMessageReject |
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(YESorNO) - 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.
0.1.3 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
NewOrderListand 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 report0when 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
| Benefit | Why it matters |
|---|---|
| OMS integration | Institutions can connect existing trading infrastructure |
| Deterministic session state | Sequence numbers and gap recovery are built in |
| Lower overhead than JSON | Tag-value messages avoid JSON parsing cost |
| Industry standard | Quant desks and broker systems already support FIX |