Recommended
SimBrief Integration Flow
Step 1 — Fetch: Call POST /generate-from-simbrief with the
pilot's SimBrief
username. The server fetches their latest OFP and returns all flight weights (BOW, fuel,
cargo, max weights,
times, registration, etc.). You do not need to call SimBrief directly.
Step 2 — Distribute PAX: SimBrief only returns a total
passenger count — it
has no knowledge of cabin class split. Your dispatch UI must present the pax count to
the dispatcher so they can
distribute it across the classes defined by the selected cabinConfig (e.g.
a C16Y182
config needs a Business and an Economy input). You may also distribute automatically
based on your own
logic.
Step 3 — Generate: Call POST /generate-loadsheet with all
the fetched SimBrief
weights plus the resolved per-class pax counts (paxC, paxY,
etc.). This produces the
final loadsheet.
PAX class distribution is not handled by SimBrief. This endpoint places the
full SimBrief
pax_count into paxY (economy) by default. If your cabin config has
multiple classes, you
must split the total into the correct class fields (paxF, paxC,
paxY, etc.)
before calling /generate-loadsheet. How you do this — manual
dispatcher input
or automatic distribution
logic — is entirely up to your implementation.
POST https://www.eloadcontrol.com/api/v1/generate-from-simbrief
Fetches the pilot's latest SimBrief OFP and returns all parsed flight weights ready for use
in
/generate-loadsheet. Always uses the pilot's most
recent active flight
plan.
Request Body
| Field |
Type |
Description |
simbriefUsername * |
String |
The pilot's SimBrief username. The API fetches their latest
active OFP. |
cabinConfig * |
String |
Cabin configuration string (e.g. "Y189"). Must
be valid for the aircraft type in the OFP. Get valid values from
GET /aircraft.
|
loadsheetFormat * |
String |
Template ID for the loadsheet layout (e.g.
"standard_iata"). Get valid values from GET /formats.
|
* Required
†
At least one pax field required for passenger aircraft. Not required for freighter cabin
configs.
Example JSON Request Body
{
"simbriefUsername": "SimBriefUser123",
"cabinConfig": "Y189",
"loadsheetFormat": "standard_iata"
}
Example JSON Response (Success)
{
"loadsheet": "...",
"loadPlanning": "CPT 1 : 0\nCPT 2 : 1044\nCPT 3 : 1566\nCPT 4 : 0",
"distributedCargo": [
{ "hold": "AFT", "section": "CPT 3", "load": 1566, "z": 230 },
{ "hold": "FWD", "section": "CPT 2", "load": 1044, "z": -200 }
],
"acarsMessage": "...",
"cgData": {
"MACZFW": 25.4,
"MACTOW": 24.1,
"MACLAW": 24.8
},
"loadedIndices": {
"ZFW": 60559,
"TOW": 68021,
"LAW": 63286,
"LIZFW": 45.2,
"LITOW": 48.1,
"LILAW": 46.5
},
"aircraftMaxWeights": {
"MZFW": 61000,
"MTOW": 69235,
"MLDW": 64500,
"BOW": 42600
},
"cgLimits": {
"forwardLimit": 15,
"aftLimit": 39
},
"unit": "kgs"
}
Sandbox key: cgData values will return as "XX.X"
and the loadsheet string will contain a watermark header. Switch to a live Pro
key for full output.
POST https://www.eloadcontrol.com/api/v1/generate-loadsheet
The raw dispatch engine. Use this if your Virtual Airline has a custom dispatch system
instead of SimBrief. You must manually provide all flight weights.
Request Body
| Field |
Type |
Description |
airline *
|
String |
Airline ICAO code (e.g. "RYR"). Get valid
values from GET /airlines. |
flightNumber * |
String |
Flight number without the airline prefix (e.g.
"1942").
|
departure *
|
String |
Departure airport ICAO code (e.g. "EHAM"). |
destination * |
String |
Destination airport ICAO code (e.g. "EGLL").
|
type * |
String |
Aircraft ICAO code (e.g. "B738"). Use the
icao field from GET /aircraft.
|
aircraftReg * |
String |
Aircraft registration (e.g. "EI-DCL"). |
cabinConfig * |
String |
Cabin configuration string (e.g. "Y189"). Must
be valid for the aircraft type. Get valid values from GET /aircraft.
|
loadsheetFormat * |
String |
Template ID (e.g. "standard_iata"). Get valid
values from GET /formats. |
BOW * |
Number |
Basic Operating Weight in kg (e.g. 42264). |
cargo *
|
Number |
Total cargo weight in kg (e.g. 2100). |
paxF / paxC / paxJ / paxW / paxY / paxO / paxG / paxX / paxP / paxZ
†
|
Number |
Passenger counts per class. Use whichever fields match the
classes in your selected
cabinConfig. Common ones: paxF = First, paxC
= Business,
paxJ = Premium Economy, paxY = Economy. All default to
0 if omitted. At
least one must be provided for passenger aircraft. For freighter flights, use
paxSUP for
supernumeraries instead.
|
paxWeight |
Number |
Standard weight per passenger in kg including baggage.
Defaults to 86 if omitted. |
crewAmount * |
String |
Flight deck / cabin crew in "FD/CC" format
(e.g. "02/04"). |
blockFuel *
|
Number |
Total block fuel in kg (e.g. 7500). |
taxiFuel *
|
Number |
Taxi fuel in kg (e.g. 200). Used to derive
takeoff fuel when
toFuel is not provided.
|
toFuel |
Number |
Takeoff fuel in kg. If provided, this value is used
directly. If omitted, the server
calculates it as blockFuel − taxiFuel. SimBrief integrations should
pass this directly from the OFP
as it is more precise. |
tripFuel *
|
Number |
Trip fuel burned en route in kg (e.g. 4100).
Used to derive Landing Weight. |
tripTime *
|
String |
Estimated flight time in "HHMM" format (e.g.
"0130" for 1h30m).
|
taxiTime *
|
String |
Estimated taxi time in "HHMM" format (e.g.
"0020").
|
date * |
String |
Flight date in "DDMMMYY" format (e.g.
"28MAR26").
|
departureTime * |
String |
Scheduled departure time UTC in "HHMM" format
(e.g. "1200"). |
editionNumber |
Number |
Loadsheet revision number. Increment each time you
regenerate for the same flight. Defaults to 1. |
* Required
Example JSON Request Body
{
"airline": "RYR",
"flightNumber": "1942",
"departure": "EHAM",
"destination": "EGLL",
"type": "B738",
"aircraftReg": "EI-DCL",
"cabinConfig": "Y189",
"loadsheetFormat": "standard_iata",
"BOW": 42264,
"cargo": 2100,
"paxY": 140,
"paxWeight": 86,
"crewAmount": "02/04",
"blockFuel": 7500,
"taxiFuel": 200,
"tripFuel": 4100,
"tripTime": "0130",
"taxiTime": "0020",
"date": "28MAR26",
"departureTime": "1200",
"editionNumber": 1
}
Example JSON Response (Success)
{
"loadsheet": "...",
"loadPlanning": "CPT 1 : 0\nCPT 2 : 840\nCPT 3 : 1260\nCPT 4 : 0",
"distributedCargo": [
{ "hold": "AFT", "section": "CPT 3", "load": 1260, "z": 225 },
{ "hold": "FWD", "section": "CPT 2", "load": 840, "z": -200 }
],
"acarsMessage": "...",
"editionNumber": 1,
"cgData": {
"MACZFW": 25.4,
"MACTOW": 24.1,
"MACLAW": 24.8
},
"loadedIndices": {
"ZFW": 56404,
"TOW": 63704,
"LAW": 59604,
"LIZFW": 45.2,
"LITOW": 48.1,
"LILAW": 46.5
},
"aircraftMaxWeights": {
"MZFW": 62750,
"MTOW": 79000,
"MLDW": 65317,
"BOW": 42264
},
"cgLimits": {
"forwardLimit": 15,
"aftLimit": 38
},
"unit": "kgs"
}
Sandbox key: cgData values will return as "XX.X"
and the loadsheet / acarsMessage strings will contain a watermark.
Switch to a live Pro key for full output.
POST https://www.eloadcontrol.com/api/v1/calculate-cg
A lightweight CG-only engine. Provide flight weights and the API returns precise Center of
Gravity percentages for ZFW, TOW, and LDW along with the structural envelope limits. Ideal
for building interactive CG envelope charts in your dispatch UI. Returns full data
with sandbox keys.
Important: This endpoint uses aircraftType (the full type
name, e.g. "Boeing 737-800"), not the ICAO code. Use the type
field returned by GET /aircraft.
Request Body
| Field |
Type |
Description |
aircraftType * |
String |
Full aircraft type name (e.g.
"Boeing 737-800"). Use the type field from
GET /aircraft. Not the ICAO code.
|
cabinConfig * |
String |
Cabin configuration string (e.g. "Y189"). Must
be valid for the aircraft type. |
BOW * |
Number |
Basic Operating Weight in kg. |
cargo *
|
Number |
Total cargo weight in kg. |
paxF / paxC / paxJ / paxW / paxY / paxO / paxG / paxX / paxP / paxZ
†
|
Number |
Passenger counts per class. Use whichever fields match the
classes in your selected
cabinConfig. Common ones: paxF = First, paxC
= Business,
paxJ = Premium Economy, paxY = Economy. All default to
0 if omitted. At
least one must be provided for passenger aircraft.
|
paxWeight |
Number |
Standard weight per passenger in kg including baggage.
Defaults to 84 if omitted. |
blockFuel *
|
Number |
Total block fuel in kg. |
taxiFuel *
|
Number |
Taxi fuel in kg. Subtracted from block fuel to derive
takeoff fuel. |
tripFuel *
|
Number |
Trip fuel in kg. Subtracted from takeoff fuel to derive
landing fuel. |
* Required
†
At least one pax field required for passenger aircraft. Not required for freighter cabin
configs.
Example JSON Request Body
{
"aircraftType": "Boeing 737-800",
"cabinConfig": "Y189",
"BOW": 42264,
"cargo": 2100,
"paxY": 140,
"paxWeight": 86,
"blockFuel": 7500,
"taxiFuel": 200,
"tripFuel": 4100
}
Example JSON Response (Success)
{
"unit": "kgs",
"payload": 14140,
"weights": {
"ZFW": 56404,
"TOW": 63704,
"LDW": 59604,
"BOW": 42264
},
"cgPercentageMACZFW": 25.4,
"cgPercentageMACTOW": 24.1,
"cgPercentageMACLDW": 24.8,
"loadedIndices": {
"DOI": 42.3,
"LIZFW": 40.0,
"LITOW": 43.8,
"LILAW": 41.1
},
"envelope": {
"forwardLimit": 15,
"aftLimit": 38
},
"maxWeights": {
"MTOW": 79000,
"MZFW": 62750,
"MLDW": 65317
}
}
Common Errors
| HTTP Code |
Error & Cause |
400 |
"Invalid aircraft type" —
aircraftType did not match any aircraft. Use the full type
string from GET /aircraft, e.g.
"Boeing 737-800", not
"B738".
|
404 |
"Cabin configuration '...' does not exist." —
the cabinConfig string is not valid for this aircraft type. Check
availableCabinConfigs from GET /aircraft.
|