onikora FIX Parsing API
Machine-readable API definition: /api/fix/v1/openapi.json
Available endpoints:
POST /api/fix/v1/messages/parsePOST /api/fix/v1/messages/parse-batch
For single-message parsing, the default response is the human-readable hierarchical JSON output. To request the tag-based view instead, call POST /api/fix/v1/messages/parse?type=tags. Single-message parsing does not support sequence.
Single-message request example:
{
"message": "8=FIX.4.4|9=61|35=A|49=CLIENT1|56=SERVER1|34=1|52=20260413-12:00:00.000|98=0|108=30|10=000|"
}
The single-message endpoint returns the parsed message object directly. It does not wrap the result in items.
Single-message response example:
{
"StandardHeader": {
"BeginString": "FIX.4.4",
"BodyLength": 61,
"MsgType": "A",
"SenderCompID": "CLIENT1",
"TargetCompID": "SERVER1",
"MsgSeqNum": 1,
"SendingTime": "20260413-12:00:00.000"
},
"EncryptMethod": "0",
"HeartBtInt": 30,
"StandardTrailer": {
"CheckSum": "000"
}
}
Single-message tag view example (?type=tags):
{
"StandardHeader": {
"8": "FIX.4.4",
"9": 61,
"35": "A",
"49": "CLIENT1",
"56": "SERVER1",
"34": 1,
"52": "20260413-12:00:00.000"
},
"98": "0",
"108": 30,
"StandardTrailer": {
"10": "000"
}
}
For batch parsing, if outputs is omitted, the API defaults to ["ufo", "ffo"]. Include "sequence" explicitly when you want sequence rows returned.
Batch request example:
{
"outputs": ["ufo", "ffo", "sequence"],
"messages": [
"8=FIX.4.4|9=164|35=8|49=MYSERVER|56=CLIENTLAT-EXT-1|34=59704|52=20260414-19:04:42.644|37=ORD-LAT-59701|11=LAT-59701|17=EX-LAT-59701|150=0|39=0|55=AAPL|54=1|38=100|151=100|14=0|6=0|10=030|",
"8=FIX.4.4|9=61|35=A|49=CLIENT1|56=SERVER1|34=1|52=20260413-12:00:00.000|98=0|108=30|10=000|"
]
}
Batch response example:
{
"protocol": "fix",
"outputs": ["ufo", "ffo", "sequence"],
"count": 2,
"items": [
{
"index": 0,
"raw": "8=FIX.4.4|9=164|35=8|49=MYSERVER|56=CLIENTLAT-EXT-1|34=59704|52=20260414-19:04:42.644|37=ORD-LAT-59701|11=LAT-59701|17=EX-LAT-59701|150=0|39=0|55=AAPL|54=1|38=100|151=100|14=0|6=0|10=030|",
"messageName": "ExecutionReport",
"messageType": "8",
"ufo": {
"StandardHeader": {
"BeginString": "FIX.4.4",
"BodyLength": 164,
"MsgType": "8",
"SenderCompID": "MYSERVER",
"TargetCompID": "CLIENTLAT-EXT-1",
"MsgSeqNum": 59704,
"SendingTime": "20260414-19:04:42.644"
}
},
"ffo": {
"StandardHeader": {
"8": "FIX.4.4",
"9": 164,
"35": "8",
"49": "MYSERVER",
"56": "CLIENTLAT-EXT-1",
"34": 59704,
"52": "20260414-19:04:42.644"
}
},
"sequence": {
"time": "20260414-19:04:42.644",
"senderCompId": "MYSERVER",
"targetCompId": "CLIENTLAT-EXT-1",
"messageType": "8",
"messageName": "ExecutionReport",
"direction": "right",
"left": "MYSERVER",
"right": "CLIENTLAT-EXT-1",
"arrow": "→",
"flow": "MYSERVER → CLIENTLAT-EXT-1",
"message": "ExecutionReport[8]"
}
},
{
"index": 1,
"raw": "8=FIX.4.4|9=61|35=A|49=CLIENT1|56=SERVER1|34=1|52=20260413-12:00:00.000|98=0|108=30|10=000|",
"messageName": "Logon",
"messageType": "A",
"ufo": {
"StandardHeader": {
"BeginString": "FIX.4.4",
"BodyLength": 61,
"MsgType": "A",
"SenderCompID": "CLIENT1",
"TargetCompID": "SERVER1",
"MsgSeqNum": 1,
"SendingTime": "20260413-12:00:00.000"
}
},
"ffo": {
"StandardHeader": {
"8": "FIX.4.4",
"9": 61,
"35": "A",
"49": "CLIENT1",
"56": "SERVER1",
"34": 1,
"52": "20260413-12:00:00.000"
},
"98": "0",
"108": 30,
"StandardTrailer": {
"10": "000"
}
},
"sequence": {
"time": "20260413-12:00:00.000",
"senderCompId": "CLIENT1",
"targetCompId": "SERVER1",
"messageType": "A",
"messageName": "Logon",
"direction": "right",
"left": "CLIENT1",
"right": "SERVER1",
"arrow": "→",
"flow": "CLIENT1 → SERVER1",
"message": "Logon[A]"
}
}
]
}
Batch response preserves request order in items, and invalid messages are reported in errors with their original index.