Developer reference

API Reference

VesselFront's REST API gives you programmatic access to maritime route optimization, vessel management, and telemetry. Embed AI-powered voyage intelligence directly into your fleet management system, ERP, or custom workflows. No installation required.

REST · JSON 27 endpoints Typically < 1 min per route OpenAPI 3.0

Organization 1 endpoint

Confirm key validity and retrieve organization metadata. The first call every integration makes.

GET /organization

Verify API key, retrieve org metadata

Returns the organization owning the supplied API key. Use this as a health-check call before submitting voyage requests.

Example request

GET · /organization bash
curl https://api.vesselfront.com/v1/organization \
  -H "X-API-Key: vf_live_your_key"

Example response

200 OK json
{
  "id":   "7a510548-aec2-49b3-…",
  "name": "Acme Shipping Ltd"
}

Responses

  • 200 Success
  • 401 Invalid or missing API key

Need the full request/response schema? Request the OpenAPI spec.

Vessel 6 endpoints

Manage vessel profiles — the performance data the engine runs on. Every charting request resolves against a stored vessel.

GET /vessel

List vessels in your organization

Returns all vessel profiles. Supports pagination and search.

Parameters

NameInTypeRequiredNotes
page query integer optional Default: 1
pageSize query integer optional Default: 25, max: 100
search query string optional Substring match on vessel name

Responses

  • 200 Success
POST /vessel

Create a vessel profile

Vessel particulars are the performance baseline every routing call inherits. DWT, LBP, pitch, and service speed drive the FOC model directly.

Parameters

NameInTypeRequiredNotes
name body string required
dwt body number required Deadweight tonnage (mt)
loa body number required Length overall (m)
lbp body number required Length between perpendiculars (m)
breadth body number required Beam (m)
depth body number required Moulded depth (m)
draftDesign body number required Design draft (m)
draftScant body number required Scantling draft (m)
serviceSpeed body number required Service speed (kn)
pitch body number required Propeller pitch (m)
dateConstructed body string (date) required YYYY-MM-DD

Example request

POST · /vessel json
{
  "name":            "MV Atlantic Star",
  "dwt":             75000,
  "loa":             229,
  "lbp":             220,
  "breadth":         32.2,
  "depth":           20.1,
  "draftDesign":     14.5,
  "draftScant":      15.0,
  "serviceSpeed":    14.5,
  "pitch":           5.2,
  "dateConstructed": "2015-06-01"
}

Responses

  • 201 Resource created
  • 403 Validation error or insufficient permissions
GET /vessel/{vesselId}

Get a single vessel by ID

Returns the full vessel profile, including stored performance curves and historical baseline references.

Parameters

NameInTypeRequiredNotes
vesselId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 404 Resource not found
PATCH /vessel/{vesselId}

Update a vessel profile

Partial update. Send only the fields you want to change.

Parameters

NameInTypeRequiredNotes
vesselId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 403 Validation error or insufficient permissions
  • 404 Resource not found
DELETE /vessel/{vesselId}

Delete a vessel profile

Deletes the vessel and detaches it from historical chartings. Historical voyage records remain queryable for audit.

Parameters

NameInTypeRequiredNotes
vesselId path string (uuid) required Resource identifier

Responses

  • 204 No content — resource deleted
  • 404 Resource not found
GET /vessel/{vesselId}/stats

Vessel-level voyage statistics

Aggregate stats for a vessel: voyages completed, distance covered, fuel-saving averages, CII trajectory.

Parameters

NameInTypeRequiredNotes
vesselId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 404 Resource not found

Charting 11 endpoints

Create route optimizations, query and update them, export to ECDIS-ready formats, and retrieve LLM-generated rationales.

GET /charting

List route optimizations

Returns chartings for your organization, newest first.

Parameters

NameInTypeRequiredNotes
vesselId query string (uuid) optional Filter by vessel
status query string optional One of: pending, computing, completed, failed
page query integer optional Default: 1
pageSize query integer optional Default: 25, max: 100

Responses

  • 200 Success
POST /charting

Create a new charting (route optimization)

A single POST triggers the VesselFront multi-agent engine. Weather forecasts, ECA zones, war-zone avoidance, vessel performance curves, and your custom constraints are applied simultaneously. Typically returns within a minute.

Parameters

NameInTypeRequiredNotes
vesselId body string (uuid) required
portFromName body string required
latFrom body number required
lngFrom body number required
nidFrom body string optional
portToName body string required
latTo body number required
lngTo body number required
nidTo body string optional
startDate body string (date-time) required
endDate body string (date-time) optional
speedRangeMin body number required
speedRangeMax body number required
draft body number required
trim body number required
rpm body number required
dwt body number required
lbp body number required
pitch body number required
optimizationType body string required fuel · ETA · balanced
routeType body string required
maxWaveHeight body number optional
maxWindBf body number optional Beaufort scale
maxNorthLat body number optional
waveUnit body string optional meters · douglas
windUnit body string optional m/s · bf
noGoAreas body array optional
avoidEca body boolean optional Default: false
avoidPiracyAreas body boolean optional Default: true
avoidWarZones body boolean optional Default: true

Example request

POST · /charting json
{
  "vesselId":         "66b72ad4-…",
  "portFromName":     "AABENRAA",
  "latFrom":          55.03,
  "lngFrom":          9.46,
  "portToName":       "AAHEIM",
  "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",
  "avoidWarZones":    true,
  "avoidEca":         false
}

Responses

  • 201 Resource created
  • 403 Validation error or insufficient permissions
GET /charting/active

List ongoing voyages

Returns chartings whose voyages are currently in progress (startDate ≤ now ≤ ETA).

Responses

  • 200 Success

Need the full request/response schema? Request the OpenAPI spec.

GET /charting/{chartingId}

Get a single charting by ID

Returns the optimized route, waypoint sequence, FOC estimate, and links to RTZ/CSV exports.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 404 Resource not found
PATCH /charting/{chartingId}

Update a charting

Partial update — for example, attaching metadata or marking a voyage as completed.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 403 Validation error or insufficient permissions
  • 404 Resource not found
POST /charting/{chartingId}/segments/compute

Re-compute voyage segments

Re-runs the segment-level computations against the latest weather window — useful after a long delay between charting creation and departure.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 201 Resource created
  • 404 Resource not found
GET /charting/{chartingId}/critical-points

Key waypoints with weather state

Returns segment-level critical waypoints — wave height peaks, wind shifts, ECA transitions. Useful for operator briefings.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 404 Resource not found
GET /charting/{chartingId}/foc

Fuel-oil consumption estimate

Returns the FOC baseline (mt/day) for the voyage, computed from the vessel's stored performance curve and the optimized track.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 404 Resource not found
GET /charting/{chartingId}/csv

Download signed CSV

Returns the route as a CSV with a SHA-256 integrity hash in the X-Content-Hash response header. Required for P&I claims documentation.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 CSV body; X-Content-Hash header set to sha256:…
  • 404 Resource not found
GET /charting/{chartingId}/rtz

Download RTZ 1.1 XML

Returns the route in RTZ 1.1 XML format — accepted by all major ECDIS systems.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 RTZ 1.1 XML body
  • 404 Resource not found
GET /charting/{chartingId}/explanation

LLM-generated routing rationale

Returns a plain-English explanation for the route — why waypoints were chosen, hazards avoided, trade-offs made. Rate-limited to 10 requests per hour per organization.

Parameters

NameInTypeRequiredNotes
chartingId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 404 Resource not found
  • 429 Rate limit exceeded

Constraints 3 endpoints

Define geographic no-go polygons scoped globally, per organization, or per vessel type. Active constraints are applied automatically on every charting.

GET /constraints

List constraints

Returns active constraints visible to your organization.

Parameters

NameInTypeRequiredNotes
level query string optional GLOBAL · ORGANIZATION · VESSEL_TYPE
type query string optional USER_DEFINED · PREDEFINED · MILITARY · HIGH_RISK

Responses

  • 200 Success
POST /constraints

Create a no-go polygon

Block routes through any geographic area via a GeoJSON polygon. Set start_date and end_date to activate time-limited zones.

Parameters

NameInTypeRequiredNotes
name body string required
type body string required USER_DEFINED · PREDEFINED · MILITARY · HIGH_RISK
level body string required GLOBAL · ORGANIZATION · VESSEL_TYPE
geometry body GeoJSON Polygon required
is_active body boolean optional Default: true
start_date body string (date) optional
end_date body string (date) optional

Example request

POST · /constraints json
{
  "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"
}

Responses

  • 201 Resource created
  • 403 Validation error or insufficient permissions
DELETE /constraints/{constraintId}

Delete a constraint

Removes the constraint from future chartings. Historical chartings retain a reference for audit.

Parameters

NameInTypeRequiredNotes
constraintId path string (uuid) required Resource identifier

Responses

  • 204 No content — resource deleted
  • 404 Resource not found

Client Data 4 endpoints

Per-customer routing rules for multi-tenant integrations. Useful when reselling routing inside a parent platform.

GET /client-data

List per-customer routing rules

Returns rule sets attached to client identities within your organization.

Responses

  • 200 Success

Need the full request/response schema? Request the OpenAPI spec.

POST /client-data

Create a per-customer rule set

Define routing preferences scoped to a downstream client — wave limits, mode defaults, no-go regions.

Responses

  • 201 Resource created
  • 403 Validation error or insufficient permissions

Need the full request/response schema? Request the OpenAPI spec.

PUT /client-data/{constraintId}

Replace a client rule set

Full replacement of the rule set. Use PATCH semantics by submitting the merged document.

Parameters

NameInTypeRequiredNotes
constraintId path string (uuid) required Resource identifier

Responses

  • 200 Success
  • 403 Validation error or insufficient permissions
  • 404 Resource not found
DELETE /client-data/{constraintId}

Delete a client rule set

Detaches the rule set. Subsequent chartings for that client revert to organization defaults.

Parameters

NameInTypeRequiredNotes
constraintId path string (uuid) required Resource identifier

Responses

  • 204 No content — resource deleted
  • 404 Resource not found

Telemetry 2 endpoints

Push and query real-time vessel position and engine performance data. Works over VSAT, LTE, or store-and-forward.

GET /telemetry/{vesselId}

Query historical telemetry

Returns telemetry records for a vessel in a time window. Paginated by timestamp.

Parameters

NameInTypeRequiredNotes
vesselId path string (uuid) required Resource identifier
from query string (date-time) required
to query string (date-time) required
page query integer optional Default: 1
pageSize query integer optional Default: 100, max: 1000

Responses

  • 200 Success
  • 404 Resource not found
POST /telemetry/{vesselId}

Push a telemetry record

Submit an AIS-derived telemetry record for a vessel. Feeds voyage deviation tracking, fuel performance analytics, and CII reporting.

Parameters

NameInTypeRequiredNotes
vesselId path string (uuid) required Resource identifier
timestamp body string (date-time) required
latitude body number required
longitude body number required
speed body number required kn
heading body number required degrees
rpm body number required
fuelConsumption body number required mt/day
draft body number required m
engineLoad body number required %
windSpeed body number optional m/s
windDirection body number optional degrees
seaState body number optional Douglas scale
trimFore body number optional m
trimAft body number optional m
mePower body number optional Main engine power, kW

Example request

POST · /telemetry/{vesselId} json
{
  "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
}

Responses

  • 201 Resource created
  • 403 Validation error or insufficient permissions
  • 404 Resource not found
Next step

Ready to call your first endpoint?

Email for a production key and a Postman collection. The first route is free.