Passages
Get Passage
Get full details for a specific sailing passage
Endpoint
Description
Retrieve full details for a sailing passage, including route variants submitted by users, departure/arrival location details with images, and nearby POIs at each end.
Supports a direction parameter to view the return route (swaps departure and arrival).
Authentication
No authentication required for server-side requests — this is a public read endpoint. (A key is only needed for cross-origin calls made from a browser on another domain; see Authentication.) Authenticated users additionally see their own variant votes.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
slug | string | Route slug (URL-friendly identifier) |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
direction | string | No | Set to return to view the passage in reverse |
Example Request
Return Direction
Example Response
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Route ID (UUID) |
from_location_id / to_location_id | number | Departure / arrival location IDs |
slug | string | URL slug |
title | string | Route title |
description | string|null | Route description |
distance_nm | number|null | Distance in nautical miles |
difficulty | string|null | Difficulty level |
typical_duration_hours | number|null | Estimated sailing time |
rating | number|null | Average rating |
rating_count | number | Number of ratings |
variant_count | number|null | Number of route variants |
geojson | object|null | Default route geometry as a GeoJSON Feature (geometry + properties) |
created_at / updated_at | string | Row timestamps |
from_location | object | Departure location with country, harbour_category, image_url, lat, lon, country_code |
to_location | object | Arrival location (same shape) |
variants | array | Route variants sorted by default first, then by votes |
variants[].name / .description | string|null | Variant label and notes |
variants[].geojson | object | Variant geometry (GeoJSON Feature) |
variants[].distance_nm | number|null | Variant distance |
variants[].min_draft_m | number|null | Minimum draft for the variant |
variants[].source | string|null | How the variant was generated (e.g. searoute) |
variants[].is_default | boolean | Whether this is the default route |
variants[].user_id | string|null | Author user ID (null for system-generated variants) |
variants[].user | object|null | Author summary (id, name); null for system-generated variants |
variants[].upvote_count | number | Number of upvotes |
variants[].downvote_count | number | Number of downvotes |
user_votes | object | Authenticated user's votes (variant_id to vote mapping: 1 = up, -1 = down). Empty if not logged in. |
from_pois | array | Up to 5 nearest POIs at departure (distance_meters + nested poi) |
to_pois | array | Up to 5 nearest POIs at arrival (same shape) |
is_reversed | boolean | true when direction=return was used |
Notes
- When
direction=returnis set,from_locationandto_locationare swapped, along withfrom_poisandto_pois. user_votesis only populated for authenticated users. Each key is a variant ID, and the value is1(upvote) or-1(downvote).