Vessel Tracker API Documentation

Real-time vessel position tracking API

Overview

The Vessel Tracker API provides flexible methods for submitting vessel position data to keep your friends, family, and followers updated on your journey. Whether you're sailing with full internet connectivity or crossing oceans with only satellite email access, we have a solution that works for your situation.

Choose the method that best fits your vessel's connectivity:

REST API Submission

Authentication

All API requests require authentication using a Bearer token in the Authorization header.

Authorization: Bearer YOUR_API_KEY

Your API key can be found in your vessel's admin dashboard.

Base URL

https://trackmywake.com/api/v1

Endpoints

POST /positions

Record a new vessel position with optional weather and navigation data.

Request Body

{
  "timestamp": "2025-07-22T12:00:00Z",
  "lat": 40.7128,
  "lon": -74.0060,
  "course": 180.5,
  "speed": 8.2,
  "air_temp": 22.5,
  "water_temp": 18.3,
  "wind_speed": 12.1
}

Field Descriptions

  • timestamp - Optional. ISO 8601 datetime, defaults to current time
  • lat - Required. Latitude in decimal degrees (-90 to 90)
  • lon - Required. Longitude in decimal degrees (-180 to 180)
  • course - Optional. Course over ground in degrees (0-360)
  • speed - Optional. Speed over ground in knots
  • air_temp - Optional. Air temperature in Celsius
  • water_temp - Optional. Water temperature in Celsius
  • wind_speed - Optional. Wind speed in knots

Response

Success (201 Created)
{
  "status": "ok",
  "message": "Position recorded"
}
Error (422 Unprocessable Entity)
{
  "status": "error",
  "errors": {
    "lat": ["can't be blank"],
    "lon": ["can't be blank"]
  }
}

Example cURL Request

curl -X POST https://trackmywake.com/api/v1/positions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "lat": 40.7128,
    "lon": -74.0060,
    "course": 180.5,
    "speed": 8.2,
    "air_temp": 22.5,
    "water_temp": 18.3,
    "wind_speed": 12.1
  }'

Error Codes

Code Description
401 Unauthorized - Invalid or missing API key
422 Unprocessable Entity - Invalid request data
500 Internal Server Error - Contact support

Getting Started

1

Get your API Key

Sign in to your vessel's admin dashboard to find your unique API key.

2

Test the API

Use the cURL example above to send your first position update.

3

View Live Updates

Watch your vessel's position update in real-time on the tracking page.

Real-time Updates

When positions are submitted via the API, they are automatically broadcast in real-time to the vessel's tracking page using WebSockets.

Live Tracking Page

View your vessel's real-time position at: https://trackmywake.com/your-vessel-slug

Email Position Reports

For vessels with limited connectivity, you can send position reports via email. You'll receive a confirmation email for each report.

Setup

  1. Configure your vessel's email address in the admin settings
  2. Send position reports to: positions@app.trackmywake.com

Email Format

Send position data in the email body. You can include multiple reports (one per line) with timestamps:

# With timestamps (ISO, European, or US format):
2024-01-20 14:30 lat: 45.1234, lon: -123.4567
2024-01-20T15:45:00Z lat: 45.2345, lon: -123.5678, speed: 5.5, course: 270
20/01/2024 16:00 45°12.34'N 123°45.67'W

# With additional weather data:
2024-01-20 17:00 lat: 45.3456, lon: -123.6789, speed: 6.2, course: 185, airtemp: 22.5, watertemp: 18.3, windspeed: 12.1

# Without timestamps (uses current time):
lat: 45.1234, lon: -123.4567
lat: 45.4567, lon: -123.7890, course: 90, speed: 7.5
45°12.34'N 123°45.67'W

# Various field name formats accepted:
lat: 45.5678, lon: -123.8901, air temp: 20, water temp: 16, wind: 15

Supported Formats

  • Decimal degrees: lat: 45.1234, lon: -123.4567
  • Marine format: 45°12.34'N 123°45.67'W
  • Navigation fields: speed (knots), course (degrees true)
  • Weather fields: airtemp/air temperature (°C), watertemp/water temperature (°C), windspeed/wind (knots)
  • Multiple reports: One position per line, each with optional timestamp
  • Timestamp formats: ISO 8601, DD/MM/YYYY HH:MM, MM-DD-YYYY HH:MM