Programmatic access to Navtrac's maritime intelligence: vessel registry and live positions, satellite position estimates, historical tracks and port calls, port traffic and congestion, marine weather and tides, sea routes, security incidents, and compliance screening — sanctions, safety records, flag risk, and emissions. All endpoints are versioned under https://navtrac.io/api/v1 and return JSON.
Last updated: October 25, 2026
GET /api/v1/status (free) to verify your key works.curl "https://navtrac.io/api/v1/status" \ -H "X-API-Key: YOUR_API_KEY"
Or import the Postman collection — it includes every endpoint below with the{{baseUrl}} and{{apiKey}} variables preconfigured:
Every request must include your API key in the X-API-Key header. Keys carry scopes (vessels, ports, weather, compliance) that gate endpoint groups; reference and status endpoints work with any valid key. Keep keys secret — never embed them in client-side code.
X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset; a 429 includes Retry-After.GET /api/v1/status.Errors return { "error": "message", "code": "ERROR_CODE" } with an appropriate HTTP status. Codes every endpoint can return:
| HTTP | Code | Meaning |
|---|---|---|
| 401 | MISSING_API_KEY | No X-API-Key header was provided. |
| 401 | INVALID_API_KEY | The API key is unknown, revoked, or expired. |
| 403 | ACCOUNT_INACTIVE | The API account is suspended or deactivated. |
| 403 | INSUFFICIENT_SCOPE | The key does not include the scope required by this endpoint. |
| 429 | RATE_LIMITED | The key's hourly rate limit was exceeded. Check the Retry-After header. |
| 402 | INSUFFICIENT_CREDITS | The account has no credits left for this billable call. |
| 500 | INTERNAL_ERROR | Unexpected server error. Safe to retry with backoff. |
Endpoint-specific validation and not-found codes (e.g. INVALID_MMSI, PORT_NOT_FOUND) are listed per endpoint below.
Search the vessel registry, fetch static details, live positions, voyages, historical tracks, and AI risk assessments.
/api/v1/vessels/searchSearch vessels by name, call sign, MMSI, or IMO, optionally filtered by vessel type and flag. Provide 'q' (min 2 characters) or at least one of 'type'/'flag'.
vesselsCredits: 1Errors: INVALID_QUERY| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| q | query | string | no | Search text — vessel name, call sign, 9-digit MMSI, or 7-digit IMO. Min 2 characters. |
| type | query | string | no | Filter by vessel type name (substring match), e.g. 'cargo', 'tanker'. |
| flag | query | string | no | Filter by flag country code (exact, case-insensitive). |
| limit | query | integer | no | Page size, 1–100 (default 50). |
| offset | query | integer | no | Rows to skip for pagination (default 0). |
Example request
curl "https://navtrac.io/api/v1/vessels/search?q=ever%20given" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"mmsi": "353136000",
"imo": "9811000",
"name": "EVER GIVEN",
"callSign": "H3RC",
"vesselType": 70,
"vesselTypeName": "Cargo",
"flag": "PA",
"flagName": "Panama",
"length": 400,
"width": 59,
"draught": 14.5,
"deadweight": 199629,
"grossTonnage": 219079,
"yearBuilt": 2018,
"lastSeen": "2026-08-03T09:12:44.000Z"
}
],
"meta": {
"limit": 50,
"offset": 0,
"count": 1
}
}/api/v1/vessels/in-areaLive vessels inside a geographic area. Provide either a bounding box (north, south, east, west) or a circle (lat, lon, radius_nm — radius clamped to 1–300 nm).
vesselsCredits: 2Errors: INVALID_AREA| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| north | query | number | no | Bounding box north latitude. |
| south | query | number | no | Bounding box south latitude. |
| east | query | number | no | Bounding box east longitude. |
| west | query | number | no | Bounding box west longitude. |
| lat | query | number | no | Circle centre latitude (use with lon and radius_nm). |
| lon | query | number | no | Circle centre longitude. |
| radius_nm | query | number | no | Circle radius in nautical miles (1–300). |
| limit | query | integer | no | Max vessels returned, 1–500 (default 200). |
Example request
curl "https://navtrac.io/api/v1/vessels/in-area?north=52.2&south=51.6&east=4.8&west=3.6&radius_nm=25" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"mmsi": "244660123",
"name": "MAERSK DETROIT",
"imo": "9356803",
"vesselTypeName": "Cargo",
"flag": "NL",
"latitude": 51.951,
"longitude": 4.083,
"sog": 12.4,
"cog": 271.5,
"heading": 272,
"destination": "NLRTM",
"navStatus": 0
}
],
"meta": {
"count": 1,
"limit": 200
}
}/api/v1/vessels/positionsLatest known positions for up to 100 vessels in one call. Credits scale with batch size: ceil(count / 10), minimum 1.
vesselsCredits: ceil(n/10), min 1Errors: INVALID_BODYTOO_MANY_MMSIS| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsis | body | string[] | yes | Array of 9-digit MMSIs (max 100). |
Example request
curl "https://navtrac.io/api/v1/vessels/positions" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST -d '{"mmsis":["366999712","244660123"]}'Example response
{
"data": [
{
"mmsi": "366999712",
"position": {
"mmsi": "366999712",
"latitude": 37.802,
"longitude": -122.405,
"sog": 0.1,
"cog": 233,
"heading": 234,
"navStatus": 5,
"timestamp": "2026-08-03T09:14:02.000Z",
"source": "live"
},
"found": true
},
{
"mmsi": "244660123",
"position": null,
"found": false
}
],
"meta": {
"requested": 2,
"found": 1
}
}/api/v1/vessels/:mmsiStatic registry details for a single vessel. Look up by 9-digit MMSI in the path, or pass a 7-digit IMO via the ?imo= query parameter (path value is ignored when the IMO matches).
vesselsCredits: 1Errors: INVALID_IDENTIFIERVESSEL_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
| imo | query | string | no | 7-digit IMO number as an alternative identifier. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "366999712",
"imo": "7625354",
"name": "GOLDEN GATE",
"callSign": "WYX2158",
"vesselType": 60,
"vesselTypeName": "Passenger",
"flag": "US",
"flagName": "United States",
"length": 27,
"width": 9,
"draught": 3.2,
"deadweight": null,
"grossTonnage": 96,
"yearBuilt": 1978,
"lastSeen": "2026-08-03T09:12:44.000Z"
}
}/api/v1/vessels/:mmsi/positionLatest known position for a vessel, preferring the live AIS feed over stored data. The 'source' field indicates which was used.
vesselsCredits: 1Errors: INVALID_MMSIPOSITION_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/position" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "366999712",
"latitude": 37.802,
"longitude": -122.405,
"sog": 0.1,
"cog": 233,
"heading": 234,
"navStatus": 5,
"timestamp": "2026-08-03T09:14:02.000Z",
"source": "live"
}
}/api/v1/vessels/:mmsi/voyageCurrent voyage data for a vessel: reported destination, ETA, draught, and navigation status.
vesselsCredits: 1Errors: INVALID_MMSIVESSEL_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/voyage" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "244660123",
"destination": "NLRTM",
"eta": "2026-08-04T18:00:00.000Z",
"draught": 11.2,
"navStatus": 0,
"atd": "2026-07-30T04:12:00.000Z",
"updatedAt": "2026-08-03T09:12:44.000Z"
}
}/api/v1/vessels/:mmsi/trackHistorical track points for a vessel. Defaults to the last 24 hours; the requested range may not exceed 31 days.
vesselsCredits: 3Errors: INVALID_MMSIINVALID_DATE_RANGERANGE_TOO_LARGE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
| from | query | string (ISO-8601) | no | Range start (default: 24 hours ago). |
| to | query | string (ISO-8601) | no | Range end (default: now). Must be after 'from'; max span 31 days. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/track?from=2026-08-01T00%3A00%3A00Z&to=2026-08-03T00%3A00%3A00Z" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"latitude": 51.94,
"longitude": 3.98,
"sog": 13.1,
"cog": 268,
"heading": 269,
"timestamp": "2026-08-02T23:55:00.000Z"
}
],
"meta": {
"mmsi": "244660123",
"from": "2026-08-01T00:00:00.000Z",
"to": "2026-08-03T00:00:00.000Z",
"count": 1
}
}/api/v1/vessels/:mmsi/photoPhoto for a vessel. Imagery coverage is being rolled out; vessels without imagery return PHOTO_NOT_AVAILABLE.
vesselsCredits: 1Errors: INVALID_MMSIVESSEL_NOT_FOUNDPHOTO_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/photo" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"error": "No photo is available for this vessel",
"code": "PHOTO_NOT_AVAILABLE"
}/api/v1/vessels/:mmsi/riskAI-generated compliance/risk assessment for a vessel based on its registry profile. Results are cached for 6 hours.
vesselsCredits: 5Errors: INVALID_MMSIVESSEL_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/risk" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"riskLevel": "low",
"score": 12,
"factors": [
"Flag state has strong port-state-control record",
"Vessel age within normal range"
],
"summary": "No elevated risk indicators identified."
},
"meta": {
"mmsi": "244660123",
"generatedAt": "2026-08-03T09:20:11.000Z"
}
}/api/v1/vessels/:mmsi/position/satellitePosition estimate for vessels outside terrestrial AIS coverage (open ocean). When the last terrestrial fix is recent, that authoritative position is returned with source 'terrestrial'; when it is stale, an extrapolated estimate is returned with source 'satellite'. Cached for 10 minutes.
vesselsCredits: 5Errors: INVALID_MMSISATELLITE_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/position/satellite" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "244660123",
"imo": "9356803",
"name": "MAERSK DETROIT",
"latitude": 38.42,
"longitude": -41.87,
"sog": 16.2,
"cog": 265,
"heading": 266,
"timestamp": "2026-08-08T07:55:00.000Z",
"source": "satellite"
}
}/api/v1/vessels/:mmsi/port-callsRecorded port calls for a vessel — port, arrival, departure, and dwell time — derived from observed vessel movements, most recent first.
vesselsCredits: 2Errors: INVALID_MMSI| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
| limit | query | integer | no | Page size, 1–100 (default 50). |
| offset | query | integer | no | Rows to skip for pagination (default 0). |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/port-calls" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"portId": "NLRTM",
"portName": "Rotterdam",
"arrivalTime": "2026-08-01T06:20:00.000Z",
"departureTime": "2026-08-02T14:05:00.000Z",
"dwellMinutes": 1905,
"purpose": "Cargo operations",
"berthNumber": "E4"
}
],
"meta": {
"mmsi": "244660123",
"limit": 50,
"offset": 0,
"count": 1
}
}/api/v1/vessels/:mmsi/nearbyLive vessels currently around a given vessel — useful for spotting escorts, bunkering barges, tugs, or close-quarters traffic.
vesselsCredits: 2Errors: INVALID_MMSIPOSITION_NOT_FOUNDINVALID_RADIUS| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
| radius_nm | query | number | no | Search radius in nautical miles, 1–50 (default 10). |
| limit | query | integer | no | Max vessels returned, 1–100 (default 50). |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/nearby?radius_nm=10" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"mmsi": "215678000",
"name": "FAIRPLAY 31",
"imo": "9506253",
"vesselTypeName": "Tug",
"flag": "MT",
"latitude": 51.952,
"longitude": 4.081,
"sog": 3.1,
"cog": 92,
"navStatus": 0,
"destination": "NLRTM"
}
],
"meta": {
"mmsi": "244660123",
"radiusNm": 10,
"count": 1
}
}/api/v1/vessels/:mmsi/encountersDetected ship-to-ship (STS) encounters for a vessel — prolonged close-quarters meetings at sea, a key signal for transshipment monitoring. Computed continuously from observed vessel movements.
vesselsCredits: 3Errors: INVALID_MMSI| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
| days | query | integer | no | Look-back window in days, 1–365 (default 90). |
| limit | query | integer | no | Max encounters returned, 1–100 (default 20). |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/encounters" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "b1f7…",
"partnerMmsi": "215678000",
"partnerName": "OCEAN TRADER",
"partnerType": "Tanker",
"startTime": "2026-07-21T02:10:00.000Z",
"endTime": "2026-07-21T05:40:00.000Z",
"durationMinutes": 210,
"latitude": 35.92,
"longitude": 14.38,
"sampleCount": 14
}
],
"meta": {
"mmsi": "244660123",
"days": 90,
"lastScanAt": "2026-08-08T06:00:00.000Z",
"count": 1
}
}/api/v1/vessels/:mmsi/emissionsVerified annual CO₂ emissions and fuel consumption reported under the EU MRV scheme, one record per reporting year. Meta 'source' indicates whether records came from the local EU MRV dataset or a provider fallback.
vesselsCredits: 3Errors: INVALID_MMSI| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/emissions" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"imo": "9356803",
"name": "MAERSK DETROIT",
"reporting_period": "2025",
"vessel_type": "Container ship",
"co2_emissions_total": 48123.5,
"co2_emissions_at_berth": 1830.2,
"fuel_consumption_total": 15321.7,
"total_time_at_sea": 5840,
"verified": true
}
],
"meta": {
"mmsi": "244660123",
"imo": "9356803",
"count": 1,
"source": "eu-mrv",
"providerUnavailable": false
}
}/api/v1/vessels/:mmsi/zonesWhether the vessel is currently inside an Emission Control Area (ECA/SECA), with the zone's sulfur limit and NOx Tier III status.
vesselsCredits: 1Errors: INVALID_MMSIPOSITION_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/zones" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "244660123",
"position": {
"latitude": 51.95,
"longitude": 4.08,
"timestamp": "2026-08-08T08:01:00.000Z"
},
"inEmissionControlArea": true,
"zone": {
"id": "north-sea",
"name": "North Sea ECA",
"shortName": "North Sea",
"sulfurLimit": "0.10% m/m",
"noxTierIII": true,
"effectiveFrom": "2021-01-01"
}
}
}/api/v1/vessels/:mmsi/safetyPort State Control record across four regimes — Paris MoU (bans and detentions), Tokyo MoU, Black Sea MoU, and Riyadh MoU — plus the vessel's flag performance rating. Overall status is 'banned', 'detained', or 'clear'.
vesselsCredits: 4Errors: INVALID_MMSIVESSEL_NOT_FOUNDSAFETY_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/safety" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "244660123",
"imo": "9356803",
"name": "MAERSK DETROIT",
"status": "clear",
"parisMou": {
"banned": [],
"detained": [],
"lastImportedAt": "2026-08-07T03:00:00.000Z"
},
"tokyoMou": {
"detained": [],
"lastImportedAt": "2026-08-07T03:10:00.000Z"
},
"blackSeaMou": {
"detained": [],
"lastImportedAt": "2026-08-07T03:12:00.000Z"
},
"riyadhMou": {
"detained": [],
"lastImportedAt": "2026-08-07T03:15:00.000Z"
},
"flagRating": {
"code": "NL",
"name": "Netherlands",
"category": "white",
"rank": 4,
"listYear": 2025,
"validFrom": "2025-07-01"
}
}
}/api/v1/vessels/:mmsi/flag-riskThe vessel's flag state performance on the Paris MoU White/Grey/Black list — a quick screen for flags with poor inspection records.
vesselsCredits: 1Errors: INVALID_MMSIVESSEL_NOT_FOUNDFLAG_RATING_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/flag-risk" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "244660123",
"flag": "NL",
"flagName": "Netherlands",
"rating": {
"code": "NL",
"name": "Netherlands",
"category": "white",
"rank": 4,
"listYear": 2025,
"validFrom": "2025-07-01"
}
}
}/api/v1/vessels/:mmsi/registryOwnership and management (beneficial owner, registered owner, operator, technical and commercial managers with country), classification society, main engine, build details, sales & demolition records, dry-dock and survey dates, inspection/detention history and marine casualties. Company names are screened against the sanctions lists. Meta 'sections' gives each section's status: 'ok', 'unavailable' (not included in the data subscription), 'error' (temporary), or for casualties 'partial' (not every casualty source could be checked — an empty list then does not mean no casualties).
vesselsCredits: 5Errors: INVALID_MMSIVESSEL_NOT_FOUNDREGISTRY_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| mmsi | path | string | yes | 9-digit MMSI of the vessel. |
Example request
curl "https://navtrac.io/api/v1/vessels/366999712/registry" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"mmsi": "636015321",
"imo": "9575149",
"vesselName": "DARYA MAYA",
"companies": [
{
"role": "beneficial_owner",
"name": "Dry Bulk Services",
"country": "Hong Kong",
"companyImo": "1796681",
"fleetLookup": true
},
{
"role": "technical_manager",
"name": "Anglo-Eastern Management (HK)",
"country": "Hong Kong",
"companyImo": "0522961",
"fleetLookup": true
}
],
"build": {
"yearBuilt": 2012,
"builder": null,
"flag": "Liberia",
"vesselType": "Bulk",
"homePort": null,
"operatingStatus": null,
"piClub": null,
"formerNames": []
},
"classification": {
"society": "BV",
"specialSurveyDate": "2027-03-01",
"dryDockDate": "2025-02-14",
"grossTonnage": 36330,
"netTonnage": 21557,
"deadweight": 63301,
"lengthOverall": 199.9,
"beam": 32.24,
"depth": 18.5,
"draft": 13.3,
"propulsion": "Oil engine(s), direct drive"
},
"engine": {
"designation": "6S50ME-C8.2",
"builder": "Doosan Engine",
"designer": "MAN B&W",
"power": 8050,
"powerUnit": "kW",
"rpm": 117,
"propulsion": "Oil engine(s), direct drive"
},
"salesDemolitions": [],
"dryDock": {
"lastDryDock": "2025-02-14",
"specialSurvey": "2027-03-01",
"ioppIssued": null,
"ioppExpires": null
},
"inspections": [
{
"date": "2025-09-12",
"authority": "Tokyo MoU",
"port": "Kaohsiung",
"type": "Initial inspection",
"detained": false,
"deficiencies": 2,
"description": null
}
],
"casualties": [],
"sanctions": {
"screened": true,
"matches": []
}
},
"meta": {
"imo": "9575149",
"sections": {
"ownership": "ok",
"registry": "ok",
"classification": "ok",
"engine": "ok",
"salesDemolitions": "ok",
"dryDock": "ok",
"inspections": "ok",
"casualties": "ok"
},
"available": true,
"fetchedAt": "2026-10-25T09:00:00.000Z",
"ageSeconds": 120
}
}/api/v1/companies/fleetVessels a company controls in a given role. Use the role, name and companyImo values from a vessel's registry 'companies' entry; companyImo gives an exact match.
vesselsCredits: 3Errors: INVALID_ROLEINVALID_QUERY| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| role | query | string | yes | beneficial_owner, operator, technical_manager or commercial_manager |
| name | query | string | yes | Company name |
| companyImo | query | string | no | Company registration number (exact match) |
Example request
curl "https://navtrac.io/api/v1/companies/fleet?role=operator&name=KC%20Maritime%20Hong%20Kong" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"imo": "9575149",
"name": "DARYA MAYA",
"flag": "Liberia",
"vesselType": "Bulk",
"yearBuilt": 2012,
"deadweight": 63301
}
],
"meta": {
"role": "operator",
"name": "KC Maritime Hong Kong",
"count": 1,
"available": true,
"status": "ok",
"fetchedAt": "2026-10-25T09:00:00.000Z"
}
}Port registry lookups, terminals, live traffic, expected arrivals, recorded departures, statistics, and port events.
/api/v1/portsList ports, optionally filtered by free-text query and/or country.
portsCredits: 1| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| q | query | string | no | Free-text filter on port name, country, or UN/LOCODE. |
| country | query | string | no | Country code or name filter. |
| limit | query | integer | no | Page size, 1–200 (default 50). |
| offset | query | integer | no | Rows to skip for pagination (default 0). |
Example request
curl "https://navtrac.io/api/v1/ports?q=rotterdam" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "NLRTM",
"uuid": "b8b1a1f0-0000-0000-0000-000000000000",
"name": "Rotterdam",
"unlocode": "NLRTM",
"country": "Netherlands",
"countryCode": "NL",
"latitude": 51.95,
"longitude": 4.14,
"type": "Seaport",
"size": "L"
}
],
"meta": {
"limit": 50,
"offset": 0,
"total": 1,
"count": 1
}
}/api/v1/ports/:idDetails for a single port by internal id, UN/LOCODE, or provider UUID.
portsCredits: 1Errors: PORT_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"id": "NLRTM",
"uuid": "b8b1a1f0-0000-0000-0000-000000000000",
"name": "Rotterdam",
"unlocode": "NLRTM",
"country": "Netherlands",
"countryCode": "NL",
"latitude": 51.95,
"longitude": 4.14,
"type": "Seaport",
"size": "L"
}
}/api/v1/ports/:id/terminalsTerminals within a port: terminal code and name, operating company, coordinates, website and address. Ports without terminal coverage return an empty list.
portsCredits: 2Errors: PORT_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/terminals" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"code": "EMX",
"name": "ECT EUROMAX TERMINAL (EMX)",
"operator": "HUTCHISON PORTS ECT ROTTERDAM",
"latitude": 51.974167,
"longitude": 4.038056,
"website": "https://www.ect.nl/",
"address": "Maasvlakteweg 951, 3199 LZ Rotterdam (Maasvlakte), The Netherlands"
}
],
"meta": {
"portId": "NLRTM",
"count": 1
}
}/api/v1/ports/:id/vesselsLive vessels currently in or near the port, within an adjustable radius.
portsCredits: 3Errors: PORT_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
| radius_nm | query | number | no | Search radius in nautical miles, 1–50 (default 10). |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/vessels?radius_nm=10" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"mmsi": "244660123",
"name": "MAERSK DETROIT",
"vesselTypeName": "Cargo",
"flag": "NL",
"latitude": 51.951,
"longitude": 4.083,
"sog": 0.2,
"navStatus": 5,
"destination": "NLRTM"
}
],
"meta": {
"portId": "NLRTM",
"radiusNm": 10,
"count": 1
}
}/api/v1/ports/:id/arrivalsVessels reporting this port as their destination with an ETA inside the requested window.
portsCredits: 2Errors: PORT_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
| window | query | string | no | Look-ahead window: 24h, 3d, or 7d (default 3d). |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/arrivals?window=3d" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"mmsi": "244660123",
"name": "MAERSK DETROIT",
"imo": "9356803",
"vesselTypeName": "Cargo",
"flag": "NL",
"destination": "NLRTM",
"eta": "2026-08-04T18:00:00.000Z",
"sog": 12.4,
"latitude": 51.4,
"longitude": 2.9,
"navStatus": 0,
"lastSeen": "2026-08-03T09:12:44.000Z"
}
],
"meta": {
"portId": "NLRTM",
"window": "3d",
"count": 1
}
}/api/v1/ports/:id/departuresRecorded port calls with a departure time, most recent first.
portsCredits: 2Errors: PORT_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
| limit | query | integer | no | Page size, 1–100 (default 50). |
| offset | query | integer | no | Rows to skip for pagination (default 0). |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/departures" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"mmsi": "244660123",
"portName": "Rotterdam",
"arrivalTime": "2026-08-01T06:20:00.000Z",
"departureTime": "2026-08-02T14:05:00.000Z",
"dwellMinutes": 1905,
"purpose": "Cargo operations",
"berthNumber": "E4"
}
],
"meta": {
"portId": "NLRTM",
"limit": 50,
"offset": 0,
"count": 1
}
}/api/v1/ports/:id/statisticsTraffic statistics for a port over the requested period. Cached for 15 minutes.
portsCredits: 2Errors: PORT_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
| period | query | string | no | Aggregation period: day, week, or month (default month). |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/statistics?period=month" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"vesselsInPort": 143,
"vesselsUnderway": 38,
"vesselsAtBerthOrAnchor": 105,
"expectedArrivals72h": 61,
"byType": {
"Cargo": 71,
"Tanker": 34,
"Tug": 18
}
},
"meta": {
"portId": "NLRTM",
"period": "month"
}
}/api/v1/ports/:id/eventsRecent arrival/departure events for a port. Requires a port with a UN/LOCODE. Cached for 10 minutes.
portsCredits: 2Errors: PORT_NOT_FOUNDEVENTS_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
| limit | query | integer | no | Max events, 1–50 (default 50). |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/events" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"eventType": "arrival",
"mmsi": "244660123",
"vesselName": "MAERSK DETROIT",
"timestamp": "2026-08-03T05:41:00.000Z"
}
],
"meta": {
"portId": "NLRTM",
"count": 1
}
}/api/v1/ports/:id/factsPractical port characteristics from the World Port Index: harbor type and size, channel/anchorage/cargo-pier depths, pilotage and tug availability, supplies, repairs, cranes, and cargo facilities. Cached for 6 hours.
portsCredits: 2Errors: PORT_NOT_FOUNDFACTS_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/facts" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"wpiPortNumber": 31170,
"portName": "ROTTERDAM",
"countryCode": "NL",
"countryName": "Netherlands",
"unlocode": "NLRTM",
"latitude": 51.9,
"longitude": 4.48,
"harborSize": {
"code": "L",
"label": "Large"
},
"harborType": {
"code": "CN",
"label": "Coastal natural"
},
"shelter": {
"code": "G",
"label": "Good"
},
"depths": {
"channelM": 23.2,
"anchorageM": 21.6,
"cargoPierM": 18.9,
"oilTerminalM": 22.9
},
"tideRangeM": 1.8,
"maxVessel": {
"lengthM": 366,
"beamM": 49,
"draftM": 21.3
},
"entry": {
"goodHoldingGround": true,
"turningArea": true,
"firstPortOfEntry": true
},
"pilotage": {
"compulsory": true,
"available": true,
"advisable": true
},
"tugs": {
"assist": true,
"salvage": true
},
"services": {
"provisions": true,
"freshWater": true,
"fuelOil": true,
"diesel": true,
"medical": true,
"garbage": true,
"repairs": {
"code": "A",
"label": "Major"
},
"drydock": {
"code": "L",
"label": "Large"
},
"railway": {
"code": "M",
"label": "Medium"
}
},
"cranes": {
"fixed": true,
"mobile": true,
"floating": true
},
"facilities": {
"wharves": true,
"anchorage": true,
"medMoor": false,
"container": true,
"roro": true,
"solidBulk": true,
"liquidBulk": true,
"breakBulk": true,
"oilTerminal": true,
"dangerousCargo": true
}
},
"meta": {
"portId": "NLRTM",
"source": "World Port Index"
}
}/api/v1/ports/:id/tidesHigh/low tide predictions from the nearest NOAA station. Currently available for US ports with a NOAA station nearby; other ports return TIDES_NOT_AVAILABLE.
portsCredits: 2Errors: PORT_NOT_FOUNDTIDES_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/tides" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"stationId": "9414290",
"stationName": "San Francisco",
"stationDistanceKm": 3.2,
"datum": "MLLW",
"units": "m",
"days": [
{
"date": "2026-08-08",
"events": [
{
"time": "2026-08-08 04:12",
"type": "H",
"heightM": 1.71
},
{
"time": "2026-08-08 10:47",
"type": "L",
"heightM": 0.28
}
]
}
]
},
"meta": {
"portId": "USSFO",
"source": "NOAA CO-OPS"
}
}/api/v1/ports/:id/weatherCurrent marine weather conditions at the port's coordinates — a convenience wrapper so you don't have to look up the port position first.
portsCredits: 1Errors: PORT_NOT_FOUNDWEATHER_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/weather" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"current": {
"waveHeight": 1.1,
"wavePeriod": 5.4,
"waveDirection": 245,
"windWaveHeight": 0.6,
"swellHeight": 0.7,
"swellDirection": 250,
"swellPeriod": 7.1,
"oceanCurrentVelocity": 0.4,
"oceanCurrentDirection": 12,
"windSpeed": 14.2,
"windDirection": 240,
"temperature": 18.3,
"weatherCode": 2,
"visibility": 9600,
"precipitation": 0,
"seaState": "Slight",
"seaStateLevel": 3,
"beaufortScale": 4,
"beaufortDescription": "Moderate breeze"
},
"hourly": [
{
"time": "2026-08-08T09:00",
"waveHeight": 1.2,
"waveDirection": 246,
"windWaveHeight": 0.6,
"swellHeight": 0.7,
"windSpeed": 15.1,
"windDirection": 242,
"temperature": 18.6,
"weatherCode": 2,
"precipitation": 0
}
],
"daily": [
{
"date": "2026-08-08",
"maxWaveHeight": 1.6,
"maxWindSpeed": 19.4,
"avgTemperature": 18.1,
"dominantWeatherCode": 3
}
],
"attribution": "Marine weather from public forecast data",
"tier": "free",
"latitude": 51.95,
"longitude": 4.14
},
"meta": {
"portId": "NLRTM"
}
}/api/v1/ports/:id/congestionLive congestion snapshot for a port: vessels nearby, how many are waiting at anchor or moored versus underway, the waiting ratio, and a congestion score where port-call history is available. Cached for 15 minutes.
portsCredits: 2Errors: PORT_NOT_FOUNDCONGESTION_NOT_AVAILABLE| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Port identifier: internal id, UN/LOCODE (e.g. NLRTM), or provider UUID. |
Example request
curl "https://navtrac.io/api/v1/ports/NLRTM/congestion" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"vesselsNearby": 187,
"waitingOrMoored": 141,
"underway": 46,
"waitingRatio": 0.75,
"congestionScore": 68,
"radiusNm": 15
},
"meta": {
"portId": "NLRTM",
"computedAt": "2026-08-08T08:05:00.000Z"
}
}Marine weather at a point and along a planned route.
/api/v1/weather/marineCurrent marine weather conditions at a coordinate.
weatherCredits: 1Errors: INVALID_COORDINATES| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| lat | query | number | yes | Latitude (-90 to 90). |
| lon | query | number | yes | Longitude (-180 to 180). |
Example request
curl "https://navtrac.io/api/v1/weather/marine?lat=51.95&lon=4.14" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"current": {
"waveHeight": 1.1,
"wavePeriod": 5.4,
"waveDirection": 245,
"windWaveHeight": 0.6,
"swellHeight": 0.7,
"swellDirection": 250,
"swellPeriod": 7.1,
"oceanCurrentVelocity": 0.4,
"oceanCurrentDirection": 12,
"windSpeed": 14.2,
"windDirection": 240,
"temperature": 18.3,
"weatherCode": 2,
"visibility": 9600,
"precipitation": 0,
"seaState": "Slight",
"seaStateLevel": 3,
"beaufortScale": 4,
"beaufortDescription": "Moderate breeze"
},
"hourly": [
{
"time": "2026-08-08T09:00",
"waveHeight": 1.2,
"waveDirection": 246,
"windWaveHeight": 0.6,
"swellHeight": 0.7,
"windSpeed": 15.1,
"windDirection": 242,
"temperature": 18.6,
"weatherCode": 2,
"precipitation": 0
}
],
"daily": [
{
"date": "2026-08-08",
"maxWaveHeight": 1.6,
"maxWindSpeed": 19.4,
"avgTemperature": 18.1,
"dominantWeatherCode": 3
}
],
"attribution": "Marine weather from public forecast data",
"tier": "free",
"latitude": 51.95,
"longitude": 4.14
}
}/api/v1/weather/routeWeather along a route of up to 20 waypoints. Each waypoint needs numeric lat/lon and may include an ISO-8601 estimatedTime for time-aware forecasts.
weatherCredits: 2Errors: INVALID_BODYTOO_MANY_WAYPOINTSINVALID_WAYPOINT| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| waypoints | body | object[] | yes | Array of { lat, lon, estimatedTime? } waypoints (max 20). |
Example request
curl "https://navtrac.io/api/v1/weather/route" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST -d '{"waypoints":[{"lat":51.95,"lon":4.14},{"lat":50.9,"lon":1.4,"estimatedTime":"2026-08-04T06:00:00Z"}]}'Example response
{
"data": {
"points": [
{
"latitude": 51.95,
"longitude": 4.14,
"weather": {
"waveHeight": 1.1,
"wavePeriod": 5.4,
"waveDirection": 245,
"windWaveHeight": 0.6,
"swellHeight": 0.7,
"swellDirection": 250,
"swellPeriod": 7.1,
"oceanCurrentVelocity": 0.4,
"oceanCurrentDirection": 12,
"windSpeed": 14.2,
"windDirection": 240,
"temperature": 18.3,
"weatherCode": 2,
"visibility": 9600,
"precipitation": 0,
"seaState": "Slight",
"seaStateLevel": 3,
"beaufortScale": 4,
"beaufortDescription": "Moderate breeze"
},
"delayHours": 0
},
{
"latitude": 50.9,
"longitude": 1.4,
"weather": {
"waveHeight": 1.8,
"wavePeriod": 6.2,
"waveDirection": 252,
"windWaveHeight": 1,
"swellHeight": 1.1,
"swellDirection": 255,
"swellPeriod": 7.8,
"oceanCurrentVelocity": 0.6,
"oceanCurrentDirection": 20,
"windSpeed": 18.7,
"windDirection": 248,
"temperature": 17.4,
"weatherCode": 61,
"visibility": 7200,
"precipitation": 0.4,
"seaState": "Moderate",
"seaStateLevel": 4,
"beaufortScale": 5,
"beaufortDescription": "Fresh breeze"
},
"delayHours": 0.5
}
],
"totalDelayHours": 0.5,
"overallSeverity": "moderate"
}
}Sanctions screening against published vessel sanctions lists.
/api/v1/sanctions/checkScreen a vessel against sanctions lists by name, MMSI, or IMO. Provide at least one identifier; MMSI lookups are enriched with local registry data for better matching.
complianceCredits: 5Errors: INVALID_QUERY| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| name | query | string | no | Vessel name to screen. |
| mmsi | query | string | no | 9-digit MMSI. |
| imo | query | string | no | 7-digit IMO number. |
Example request
curl "https://navtrac.io/api/v1/sanctions/check?name=OCEAN%20EXPLORER" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"query": {
"mmsi": null,
"imo": null,
"name": "OCEAN EXPLORER"
},
"status": "clear",
"matches": [],
"sources": [
"OFAC SDN",
"EU Consolidated",
"UK OFSI"
],
"checkedAt": "2026-08-03T09:30:00.000Z"
}
}/api/v1/sanctions/check-batchScreen up to 25 vessels against sanctions lists in one call — ideal for onboarding whole fleets. Each vessel needs at least one of name, MMSI, or IMO; entries with no usable identifier come back with status 'invalid'. Credits: 3 per vessel.
complianceCredits: 3 per vesselErrors: INVALID_BODYTOO_MANY_VESSELS| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| vessels | body | object[] | yes | Array of { mmsi?, imo?, name? } to screen (max 25). |
Example request
curl "https://navtrac.io/api/v1/sanctions/check-batch" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST -d '{"vessels":[{"mmsi":"366999712"},{"imo":"9811000"},{"name":"OCEAN EXPLORER"}]}'Example response
{
"data": [
{
"query": {
"mmsi": "366999712",
"imo": "7625354",
"name": "GOLDEN GATE"
},
"status": "clear",
"matches": []
},
{
"query": {
"mmsi": null,
"imo": "9811000",
"name": null
},
"status": "clear",
"matches": []
},
{
"query": {
"mmsi": null,
"imo": null,
"name": "OCEAN EXPLORER"
},
"status": "match",
"matches": [
{
"list": "OFAC SDN",
"matchType": "name",
"vessel": {
"name": "OCEAN EXPLORER",
"imo": "9038658",
"aliases": [],
"designatedDate": "2024-02-23"
}
}
]
}
],
"meta": {
"requested": 3,
"matched": 1,
"sources": [
"OFAC SDN",
"EU Consolidated",
"UK OFSI",
"UN Consolidated"
],
"checkedAt": "2026-08-08T08:10:00.000Z"
}
}Piracy and maritime-security incident data, and port-to-port sea route calculation.
/api/v1/security/incidentsPiracy and maritime-security incidents reported by naval authorities. Call with no coordinates for the global feed, or pass lat/lon (and optional radius_nm) for incidents near a position.
vesselsCredits: 2Errors: INVALID_COORDINATESINVALID_RADIUS| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| lat | query | number | no | Centre latitude for a proximity search (use with lon). |
| lon | query | number | no | Centre longitude for a proximity search. |
| radius_nm | query | number | no | Proximity radius in nautical miles, 10–500 (default 200). |
| months | query | integer | no | Look-back window in months, 3–24 (default 12). |
| limit | query | integer | no | Page size, 1–500 (default 200). |
| offset | query | integer | no | Rows to skip for pagination (default 0). |
Example request
curl "https://navtrac.io/api/v1/security/incidents?radius_nm=200" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"reference": "2026-145",
"date": "2026-07-28",
"latitude": 12.61,
"longitude": 44.92,
"category": "boarding",
"hostility": "Pirates",
"victim": "Bulk carrier",
"navArea": "IX",
"description": "Six persons in a skiff approached and boarded...",
"source": "nga-asam"
}
],
"meta": {
"count": 1,
"radiusNm": 200,
"months": 12,
"latestIncidentAt": "2026-08-05"
}
}/api/v1/routes/seaShortest practical sea route between two coordinates: total distance in nautical miles plus the route line as GeoJSON-style [longitude, latitude] pairs. Routes between fixed points are cached for 6 hours.
vesselsCredits: 3Errors: INVALID_COORDINATESROUTE_NOT_FOUND| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| from_lat | query | number | yes | Origin latitude. |
| from_lon | query | number | yes | Origin longitude. |
| to_lat | query | number | yes | Destination latitude. |
| to_lon | query | number | yes | Destination longitude. |
Example request
curl "https://navtrac.io/api/v1/routes/sea?from_lat=51.95&from_lon=4.05&to_lat=40.68&to_lon=-74.02" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"from": {
"latitude": 51.95,
"longitude": 4.05
},
"to": {
"latitude": 40.68,
"longitude": -74.02
},
"distanceNm": 3312.4,
"coordinates": [
[
4.05,
51.95
],
[
3.4,
51.6
],
[
-74.02,
40.68
]
]
}
}Free lookups available to any valid API key — no scope required, zero credit cost.
/api/v1/reference/vessel-typesAll vessel type codes and labels used across the API.
anyCredits: 0Example request
curl "https://navtrac.io/api/v1/reference/vessel-types" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"code": 70,
"label": "Cargo"
},
{
"code": 80,
"label": "Tanker"
}
]
}/api/v1/reference/flagsAll flag state codes and names used across the API.
anyCredits: 0Example request
curl "https://navtrac.io/api/v1/reference/flags" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"code": "NL",
"name": "Netherlands"
},
{
"code": "PA",
"name": "Panama"
}
]
}/api/v1/reference/portsLightweight index of known ports for id resolution.
anyCredits: 0| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| limit | query | integer | no | Page size, 1–500 (default 200). |
| offset | query | integer | no | Rows to skip (default 0). |
Example request
curl "https://navtrac.io/api/v1/reference/ports" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "NLRTM",
"name": "Rotterdam",
"unlocode": "NLRTM",
"country": "Netherlands"
}
],
"meta": {
"limit": 200,
"offset": 0,
"total": 1,
"count": 1
}
}/api/v1/account/usageYour key's request and credit usage over the requested period, broken down by endpoint. Free to call — use it to monitor spend programmatically.
anyCredits: 0| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| days | query | integer | no | Look-back window in days, 1–90 (default 30). |
Example request
curl "https://navtrac.io/api/v1/account/usage" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"keyPrefix": "nvt_live_ab12",
"periodDays": 30,
"totalRequests": 1284,
"totalCredits": 3711,
"byEndpoint": [
{
"endpoint": "GET /vessels/{mmsi}/position",
"requests": 840,
"credits": 840
},
{
"endpoint": "GET /sanctions/check",
"requests": 61,
"credits": 305
}
]
}
}/api/v1/statusAPI health plus your account status, remaining credits, key scopes, and rate limit. Free to call — useful as a connectivity check.
anyCredits: 0Example request
curl "https://navtrac.io/api/v1/status" \ -H "X-API-Key: YOUR_API_KEY"
Example response
{
"data": {
"status": "ok",
"version": "v1",
"timestamp": "2026-08-03T09:30:00.000Z",
"account": {
"name": "Acme Logistics",
"status": "active",
"creditsRemaining": 9421
},
"key": {
"prefix": "nvt_live_ab12",
"scopes": [
"vessels",
"ports"
],
"rateLimitPerHour": 1000
}
}
}