Skip to main content

FIX Session

FIX sessions provide deterministic ordering, liveness checks, and gap recovery for institutional integrations.

Logon

Clients establish a session with Logon (35=A). The first message on a connection must be Logon.

Private-beta FIX uses raw TCP/TLS. For the current live endpoint, connect to fix.sentico-labs.xyz:9878 and use TLS SNI fix.sentico-labs.xyz; do not connect to Cloudflare-proxied HTTPS for FIX. Logon credentials are HMAC credentials issued to a business-line institutional_agent.

Read FIX/BSL Connectivity Bundle before connecting. It returns the direct FIX host/port, TargetCompID, and a stable recommended SenderCompID for the authenticated institutional_agent.

FieldFIX tagNotes
BeginString8FIX.4.4
MsgType35A
SenderCompID49Client-stable identifier. Use the bundle value such as SC-ABCDEF12-123456-OE, or another stable value you intentionally manage.
TargetCompID56SENTICORE unless the connectivity bundle says otherwise.
TargetSubID57Optional scope such as order_entry or drop_copy
MsgSeqNum34Starts at 1 unless reset was agreed
SendingTime52UTC timestamp
EncryptMethod980 over TLS
HeartBtInt108Negotiated heartbeat interval
Account1Engine account address
Username553API key id
Password554<api_secret>:<api_passphrase>

Set ResetSeqNumFlag(141)=Y only when operations has agreed to reset the session. Otherwise, the gateway enforces persisted inbound and outbound sequence continuity.

The persisted FIX session is keyed by SenderCompID + TargetCompID + Account. Changing SenderCompID creates a different session and breaks normal sequence recovery. Use a separate SenderCompID suffix for drop-copy, for example -DC, if order entry and drop-copy should maintain independent sequence state.

Heartbeat and liveness

The gateway sends Heartbeat (35=0) according to HeartBtInt. If either side needs an explicit liveness check, it sends TestRequest (35=1) and expects a Heartbeat carrying the matching TestReqID(112). The gateway echoes inbound TestReqID(112) on its Heartbeat reply.

Sequence recovery

Clients must support:

  • ResendRequest (35=2) for sequence gaps
  • SequenceReset (35=4) for administrative reset
  • duplicate detection through PossDupFlag
  • idempotent handling of repeated ExecutionReport messages

The resend window is capped by FIX_RESEND_MAX_MESSAGES on the gateway.

Logout

Sessions terminate with Logout (35=5). Unclean disconnects can trigger cancel-on-disconnect behavior when enabled for BSL/liquidity-provider accounts.