Dark mode
/v2/cp-performance.json
GET
/v2/cp-performance.json
CP Performance Analysis Data
Returns Charter Party (CP) performance analysis data for voyages belonging to the
authenticated client. Results include warranted speed/fuel (CP terms), actual performance
metrics broken down by ECA region and weather type, damage assessment (loss/saving),
and CO2 emission estimates.
| Item | Value |
|---|---|
| Format | JSON |
| Region | Global |
| Update | When Audit XML is published in SeaNavigator |
| Max Results | 500 voyages per request |
Date Range
Specify a date range using one of the following (mutually exclusive):
| Method | Parameters | Notes |
|---|---|---|
| Relative | last_x_months |
Integer 1–48; default is 6 months back from today |
| Absolute | start_time + end_time |
YYYYMMDD format (UTC); takes priority over last_x_months |
Ship Filtering
ships: IMO numbers (7 digits, comma-separated, max 20 ships per request)- IMO numbers are internally resolved to WNI Ship Numbers via SEA-ShipDB
- Ships not found in ShipDB are skipped with a warning log
Response Structure Overview
voyages[]
└─ audit_id ← use this for POST simulation
└─ charter_info ← CP conditions (allowance, good weather definition)
└─ segments[]
└─ cp ← warranted speed/fuel for this segment
└─ damage_assessment ← time_lost / fuel overconsumption
└─ performance
└─ total.entire ← full voyage stats
└─ total.good_weather ← good weather period stats
└─ eca (in_eca / out_eca) ← ECA-split stats
└─ co2_emission ← CO2 estimate (IMO MEPC.364(79))
co2_coefficients ← emission factors used
Key Response Fields Explained
loading_condition
L= Laden (loaded),B= Ballast
leg_status
A= Arrived,D= Departed,E= En-routedamage_assessmentvalues arenullwhile status isE(voyage in progress)
eco_speed
E= ECO speed mode (reduced speed agreed between owner and charterer),N= Normal
charter_info.allowance
The permitted tolerance from warranted performance before damage is assessed:
speed.value(kts): If actual performance speed falls belowcp.speed_kts − allowance.speed, time damage appliesfo.value/do.value(% or MT/day): Fuel tolerance before overconsumption damage applies
charter_info.good_weather_definition
Criteria used to classify a time period as "good weather":
wind.beaufort: Maximum Beaufort number (e.g.4= up to Bft 4)wave.sig_wave_m: Maximum significant wave height in metres (e.g.2.0m)wave.dss: Douglas Sea Scale thresholdcurrent:"All"= include current effect,"Exclude"= exclude,"Negate"= reverse current effect
charter_info.good_weather_day
Rule for classifying a calendar day as a "good weather day":
type: "Ratio"+ratio: 50+operator: "gt"= a day is GW if more than 50% of its hours are good weather hours
performance.total.entire — Full voyage period
| Field | Description | Unit |
|---|---|---|
distance_nm |
Total distance sailed | NM |
time_hrs |
Total elapsed time | h |
avg_speed_kts |
Average speed over ground | kts |
weather_factor_kts |
Speed impact from weather (negative = hindrance) | kts |
current_factor_kts |
Speed impact from ocean current (positive = favorable) | kts |
fo_mt |
Total FO (Heavy Fuel Oil) consumed | MT |
do_mt |
Total DO (Marine Diesel Oil) consumed | MT |
daily_fo_mt |
Average daily FO consumption | MT/day |
daily_do_mt |
Average daily DO consumption | MT/day |
performance.total.good_weather — Good weather period only
Same fields as above, plus:
| Field | Description | Unit |
|---|---|---|
performance_speed_kts |
Speed corrected for weather & current effects — this is compared against CP warranted speed | kts |
Performance speed = avg_speed − weather_factor − current_factor. This is the basis for damage assessment.
damage_assessment
| Field | Sign | Meaning |
|---|---|---|
time_lost_hrs |
positive | Owner lost time (charterer claims) |
time_lost_hrs |
negative | Owner gained time (owner claims saving) |
fo_over_mt |
positive | FO overconsumption (owner's burden) |
fo_over_mt |
negative | FO underconsumption (owner's saving) |
do_over_mt |
positive | DO overconsumption |
co2_emission
Calculated using IMO MEPC.364(79) coefficients:
co2_fo_mt=fo_mt× 3.1144 (t-CO2)co2_do_mt=do_mt× 3.206 (t-CO2)
Key Changes from v1 (cp-warranty)
- No GEN server dependency — fully serverless (Lambda + DynamoDB)
client/sectionparameters removed — auto-detected from auth tokenmetadataremoved from response — response contains onlyvoyagesarray- Hierarchical JSON response — replaces flat structure
- Segment-level detail — performance data per voyage segment
- CO2 emissions included — calculated with IMO MEPC.364(79) coefficients
callback(JSONP) removed — CORS supported natively
Parameters
Header Parameters
Authorization*
"WniWebApi " + Token ID
Typestring
RequiredQuery Parameters
ships*
IMO numbers (7 digits, comma-separated, 1–20 ships).
Numbers not found in ShipDB are logged as warnings.
Typestring
RequiredExample
9000001,9000002last_x_months
Number of past months to query (1–48, default: 6).
Mutually exclusive with start_time/end_time.
Typeinteger
Example
6minimum
1maximum
48default
6start_time
Start date in YYYYMMDD format (UTC).
When omitted, defaults to 1 year before end_time.
start_time must be before end_time.
Typestring
Example
20260101pattern
^\d{8}$end_time
End date in YYYYMMDD format (UTC). When omitted, defaults to today.
start_time must be before end_time.
Typestring
Example
20260331pattern
^\d{8}$Responses
Successful response with CP performance data
application/json
JSON
{
"voyages": [
{
"audit_id": "sid20250101_000001",
"leg_id": "sid20260111_000506",
"imo_num": "9000001",
"ship_name": "ARAUCARIA",
"voyage_no": "40",
"loading_condition": "string",
"leg_status": "string",
"updated_at": "2026-02-09T09:06:49Z",
"charter_info": {
"allowance": {
"speed": {
"value": 0.5,
"unit": "kts"
},
"fo": {
"value": 5,
"unit": "%"
},
"do": {
"value": 5,
"unit": "%"
}
},
"good_weather_definition": {
"wind": {
"type": "Beaufort Scale",
"beaufort": 4
},
"wave": {
"type": "SgWave",
"sig_wave_m": 2,
"dss": 3
},
"current": "All",
"negate": "Negate current"
},
"good_weather_day": {
"type": "Ratio",
"ratio": 50,
"operator": "gt",
"unit": "%"
},
"extrapolation": "Extrapolate"
},
"segments": [
{
"seg_id": "1",
"atd": "2026/02/01T10:18:00",
"ata": "2026/02/03T20:48:00",
"dep_port": "AVEIRO",
"arr_port": "50.07N 1.46W",
"eco_speed": "E",
"cp": {
"speed_kts": 12,
"fo_mt_day": 15.1,
"do_mt_day": 0.1
},
"damage_assessment": {
"time_lost_hrs": 0,
"fo_over_mt": 0,
"do_over_mt": 0
},
"performance": {
"total": {
"entire": {
"distance_nm": 725,
"time_hrs": 58.5,
"avg_speed_kts": 12.39,
"weather_factor_kts": -0.3,
"current_factor_kts": 0.12,
"fo_mt": 22.9,
"do_mt": 11.33,
"daily_fo_mt": 9.39,
"daily_do_mt": 4.65
},
"good_weather": {
"distance_nm": 111,
"time_hrs": 8.8,
"avg_speed_kts": 12.61,
"performance_speed_kts": 12.61,
"weather_factor_kts": 0,
"current_factor_kts": 1.06,
"fo_mt": 0,
"do_mt": 5.16,
"daily_fo_mt": 0,
"daily_do_mt": 14.07
}
},
"eca": {
"in_eca": {
"distance_nm": 725,
"time_hrs": 58.5,
"avg_speed_kts": 12.39,
"weather_factor_kts": -0.3,
"current_factor_kts": 0.12,
"fo_mt": 22.9,
"do_mt": 11.33,
"daily_fo_mt": 9.39,
"daily_do_mt": 4.65
},
"out_eca": {
"distance_nm": 725,
"time_hrs": 58.5,
"avg_speed_kts": 12.39,
"weather_factor_kts": -0.3,
"current_factor_kts": 0.12,
"fo_mt": 22.9,
"do_mt": 11.33,
"daily_fo_mt": 9.39,
"daily_do_mt": 4.65
}
}
},
"co2_emission": {
"co2_fo_mt": 71.32,
"co2_do_mt": 36.33
}
}
]
}
],
"co2_coefficients": {
"fo": 3.1144,
"do": 3.206,
"unit": "t-CO2/t-fuel"
}
}