/v1/course-made-good
Course/speed over ground
Try it live
10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.
It works. Grab an API key and use it in your project.
Get an API keyCode snippets
curl "https://api.oanor.com/setanddrift-api/v1/course-made-good" \ -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/setanddrift-api/v1/course-made-good", {
headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/setanddrift-api/v1/course-made-good");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
"https://api.oanor.com/setanddrift-api/v1/course-made-good",
headers={"x-oanor-key": "oanor_test_..."}
)
Example response
A real response from this endpoint, captured by the latest health check.
{
"data": {
"note": "Adding the boat's velocity through the water to the current vector gives the real track over the ground: the course over ground (COG) and speed over ground (SOG). 'Set' is the direction the current flows toward and 'drift' its speed. The difference between COG and the heading is the drift angle — the current quietly pushes you off your nose, so a steady heading is not a steady track.",
"inputs": {
"set_deg": 0,
"drift_kt": 2,
"heading_deg": 90,
"speed_through_water_kt": 10
},
"drift_angle_deg": -11.31,
"speed_over_ground_kt": 10.2,
"course_over_ground_deg": 78.69
},
"meta": {
"timestamp": "2026-06-07T08:17:58.893Z",
"request_id": "24884640-ba59-4628-9ae4-30eb952f2fcf"
},
"status": "ok",
"message": "Course made good",
"success": true
}