Fleet operators
Automate voyage planning without replacing your FMS. Submit vessel parameters once; receive optimized waypoints on every departure.
VesselFront's REST API gives you programmatic access to the same AI-powered routing engine used by commercial fleets. Weather-aware, ECDIS-compatible, claims-ready by design.
11–13 kn14.0 mavoidedclearedcurl https://api.vesselfront.com/v1/organization \
-H "X-API-Key: vf_live_your_key_here"
# → 200 OK
# {
# "id": "7a510548-aec2-49b3-…",
# "name": "Acme Shipping Ltd"
# } Automate voyage planning without replacing your FMS. Submit vessel parameters once; receive optimized waypoints on every departure.
Embed route optimization as a feature in your maritime SaaS. One endpoint call returns a complete route your users can act on immediately.
Every route is exported with a SHA-256 integrity hash — the immutable evidence trail your P&I submissions require.
Pull accurate ETAs backed by real weather forecasts and vessel performance curves. Query active chartings or push live telemetry for deviation tracking.
A single POST to /charting triggers the VesselFront multi-agent engine.
Weather forecasts, ECA zones, war-zone avoidance, vessel performance curves, and your
custom constraints are applied simultaneously — returning a complete set of waypoints,
typically within a minute depending on voyage parameters.
{
"id": "cafb8188-674b-424f-88dc-…",
"portFromName": "AABENRAA",
"portToName": "AAHEIM",
"vesselId": "66b72ad4-…",
"optimizationType": "1",
"routeType": "1",
"avoidWarZones": true,
"avoidEca": false,
"speedRangeMin": 11,
"speedRangeMax": 13,
"startDate": "2026-06-01T00:00:00.000Z"
} Every optimized route can be exported in RTZ 1.1 format for direct ECDIS upload, or as a signed CSV with a SHA-256 integrity hash. The hash confirms the file wasn't altered after download — a requirement under most P&I standard forms.
/v1/charting/{id}/rtz/v1/charting/{id}/csv/v1/charting/{id}/foc/v1/charting/{id}/critical-pointsPush AIS-derived position, engine state, and fuel consumption to the Telemetry API. Retrieve historical records with time-range filters and pagination. The data feeds voyage deviation tracking, fuel performance analytics, and CII reporting.
{
"timestamp": "2026-06-01T14:23:00.000Z",
"latitude": 57.41,
"longitude": 8.12,
"heading": 342,
"speed": 12.4,
"rpm": 55,
"engineLoad": 72,
"fuelConsumption": 24.6,
"draft": 14.0,
"windSpeed": 8.2,
"seaState": 3
} Common integration patterns — from first call to production.
curl -X POST https://api.vesselfront.com/v1/charting \
-H "X-API-Key: vf_live_your_key" \
-d '{
"vesselId": "66b72ad4-...",
"portFromName": "AABENRAA",
"portToName": "AAHEIM",
"startDate": "2026-06-01T00:00:00.000Z",
"speedRangeMin": 11,
"speedRangeMax": 13,
"draft": 14, "trim": 2, "rpm": 55,
"optimizationType": "1",
"avoidWarZones": true,
"avoidEca": false
}' curl -X POST https://api.vesselfront.com/v1/constraints \
-H "X-API-Key: vf_live_your_key" \
-d '{
"name": "Black Sea Exclusion Zone",
"type": "HIGH_RISK",
"level": "ORGANIZATION",
"geometry": {
"type": "Polygon",
"coordinates": [[[31.5,46.5],[34.0,46.5],
[34.0,44.0],[31.5,44.0],[31.5,46.5]]]
},
"is_active": true,
"start_date": "2026-06-01",
"end_date": "2026-12-31"
}' curl -X POST https://api.vesselfront.com/v1/telemetry/66b72ad4-... \
-H "X-API-Key: vf_live_your_key" \
-d '{
"timestamp": "2026-06-01T14:23:00.000Z",
"latitude": 57.41,
"longitude": 8.12,
"speed": 12.4,
"heading": 342,
"rpm": 55,
"fuelConsumption": 24.6,
"draft": 14.0,
"engineLoad": 72
}' # RTZ 1.1 — direct ECDIS import
curl https://api.vesselfront.com/v1/charting/cafb8188-.../rtz \
-H "X-API-Key: vf_live_your_key" \
-o route.rtz
# Signed CSV — claims documentation
curl https://api.vesselfront.com/v1/charting/cafb8188-.../csv \
-H "X-API-Key: vf_live_your_key" \
-o route.csv
# Response header: X-Content-Hash: sha256:a3f9... curl https://api.vesselfront.com/v1/charting/cafb8188-.../foc \
-H "X-API-Key: vf_live_your_key"
# Also available: critical waypoints for the voyage
curl https://api.vesselfront.com/v1/charting/cafb8188-.../critical-points \
-H "X-API-Key: vf_live_your_key" curl https://api.vesselfront.com/v1/charting/cafb8188-.../explanation \
-H "X-API-Key: vf_live_your_key"
# → 200 OK
# {
# "summary": "Route transits via the Norwegian Trench
# corridor to avoid forecasted 4.2m wave heights in
# the central North Sea on June 2. The ECA boundary
# is cleared by 12 nm at all waypoints.",
# "generatedAt": "2026-06-01T15:00:00.000Z"
# } Routes the API returns are the same routes that defend a P&I claim.
Verify your key, register a vessel, optimize a route. Available in cURL, Python, Node.js. Postman collection
Send a GET to /organization with your key in the X-API-Key header.
curl https://api.vesselfront.com/v1/organization \
-H "X-API-Key: vf_live_your_key_here"
# → 200 OK
# {
# "id": "1ec61828-fb01-4d40-9ed5-...",
# "name": "Your Organization"
# } Vessel particulars are the performance baseline every routing call inherits.
curl -X POST https://api.vesselfront.com/v1/vessel \
-H "X-API-Key: vf_live_your_key_here" \
-d '{
"name": "MV Atlantic Star",
"dwt": 75000, "loa": 229, "lbp": 220,
"breadth": 32.2, "depth": 20.1,
"draftDesign": 14.5, "serviceSpeed": 14.5,
"draftScant": 15.0, "pitch": 5.2,
"dateConstructed": "2015-06-01"
}' import requests
BASE = "https://api.vesselfront.com/v1"
HEADERS = {"X-API-Key": "vf_live_your_key_here"}
vessel = requests.post(f"{BASE}/vessel", headers=HEADERS, json={
"name": "MV Atlantic Star", "dwt": 75000,
"loa": 229, "lbp": 220, "breadth": 32.2,
"depth": 20.1, "draftDesign": 14.5,
"serviceSpeed": 14.5, "draftScant": 15.0,
"pitch": 5.2, "dateConstructed": "2015-06-01",
}).json() const BASE = "https://api.vesselfront.com/v1";
const HEADERS = {
"X-API-Key": "vf_live_your_key_here",
"Content-Type": "application/json",
};
const vessel = await fetch(`${BASE}/vessel`, {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
name: "MV Atlantic Star", dwt: 75000,
loa: 229, lbp: 220, breadth: 32.2,
depth: 20.1, draftDesign: 14.5,
serviceSpeed: 14.5, draftScant: 15.0,
pitch: 5.2, dateConstructed: "2015-06-01",
}),
}).then(r => r.json()); POST departure parameters; the engine returns the optimized track in under a minute.
curl -X POST https://api.vesselfront.com/v1/charting \
-H "X-API-Key: vf_live_your_key_here" \
-d '{
"vesselId": "<vessel-id-from-step-2>",
"portFromName": "AABENRAA",
"portToName": "AAHEIM",
"latFrom": 55.03, "lngFrom": 9.46,
"latTo": 62.06, "lngTo": 5.51,
"startDate": "2026-06-01T00:00:00.000Z",
"speedRangeMin": 11, "speedRangeMax": 13,
"draft": 14, "trim": 2, "rpm": 55,
"dwt": 68439, "lbp": 220, "pitch": 5.435,
"optimizationType": "1", "routeType": "1"
}' charting = requests.post(f"{BASE}/charting", headers=HEADERS, json={
"vesselId": vessel["id"],
"portFromName": "AABENRAA",
"portToName": "AAHEIM",
"latFrom": 55.03, "lngFrom": 9.46,
"latTo": 62.06, "lngTo": 5.51,
"startDate": "2026-06-01T00:00:00.000Z",
"speedRangeMin": 11, "speedRangeMax": 13,
"draft": 14, "trim": 2, "rpm": 55,
"dwt": 68439, "lbp": 220, "pitch": 5.435,
"optimizationType": "1", "routeType": "1",
}).json()
print(charting["id"]) const charting = await fetch(`${BASE}/charting`, {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
vesselId: vessel.id,
portFromName: "AABENRAA", portToName: "AAHEIM",
latFrom: 55.03, lngFrom: 9.46,
latTo: 62.06, lngTo: 5.51,
startDate: "2026-06-01T00:00:00.000Z",
speedRangeMin: 11, speedRangeMax: 13,
draft: 14, trim: 2, rpm: 55,
dwt: 68439, lbp: 220, pitch: 5.435,
optimizationType: "1", routeType: "1",
}),
}).then(r => r.json());
console.log(charting.id); Scope and coverage at a glance. Browse the full reference
Email support@vesselfront.com with your organization name and intended use case. You'll receive a vf_live_ key for production during onboarding. Access is granted on a rolling basis.
Typically under a minute. Exact duration varies with voyage parameters — longer passages, complex constraints, or unusual routing challenges may take longer.
AlongRoute's hybrid-AI marine weather forecasts, updated every three hours via rolling satellite assimilation. AlongRoute applies deep-learning corrections to raw numerical weather prediction outputs, delivering superior wave-height and wind accuracy versus standard Copernicus baselines. Weather is applied along the entire route corridor, not just at departure.
POST to /constraints with a GeoJSON polygon and set level (GLOBAL, ORGANIZATION, or VESSEL_TYPE). The routing engine respects all active constraints automatically on every subsequent charting call. Set start_date and end_date for time-limited zones.
RTZ 1.1 XML for direct ECDIS import (/charting/{id}/rtz) and signed CSV with SHA-256 integrity hash (/charting/{id}/csv). The hash confirms the route file is unaltered after download — required for P&I club submissions.
Request credentials and run your first voyage optimization in minutes. No commitment, no card required.