- Data API
- Reference
API Reference
A small, read-only REST API over the canonical YachtMaster make / model / engine taxonomy.
JSON in, JSON out, versioned under /v1.
Introduction
Every make, model and engine is keyed on a stable YachtMaster id —
the identifier you store and build against. Names on makes and models are plain strings; lookup
enums (fuels, engine types, object types) carry multilingual { de, en, es, fi, fr, it, lt, sv } names — 8 languages.
The data is maintained for you and refreshed weekly.
Authentication
Send your key as a bearer token on every request:
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/makes
Create, reveal, rotate or revoke keys from your dashboard. Keep keys server-side — they carry your billing.
Conventions
- Pagination. List endpoints return
{ data, page, page_size, has_more }. Usepageandpage_size(max 1000). - Incremental sync. Pass
updated_since=<ISO 8601>to fetch only what changed — ideal for keeping a local copy fresh. - Caching. Responses carry an
ETag; send it back asIf-None-Matchto get a cheap304 Not Modified. - Forward-compatible. New fields are added without notice — ignore unknown ones. Breaking changes ship under a new version path.
- Localization. Lookup and object-type names are returned as a
nameobject keyed by language — 8 languages:de, en, es, fi, fr, it, lt, sv.
Endpoints
List the vehicle classes (motorboat, sailingboat, car, campervan, jetski …) with multilingual names in de, en, es, fi, fr, it, lt, sv.
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/object-types [ { "id": 1, "name": { "de": "Motorboot", "en": "Motorboat", "es": "Motora", "fi": "Moottorivene", "fr": "Bateau à moteur", "it": "Barca a Motore", "lt": "motorinė valtis", "sv": "Motorbåt" } } ]
List makes. Filterable by object type, paginated, with model counts.
| object_type | integer | Filter to one vehicle class (e.g. 1 = motorboat). |
| updated_since | ISO 8601 | Only makes changed after this timestamp. |
| page | integer | Page number, default 1. |
| page_size | integer | 1–1000, default 100. |
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/makes?object_type=1&page_size=2 { "data": [ { "id": 1, "object_type_id": 1, "name": "Aaltomarine", "model_count": 1, "updated_at": "2026-07-06T06:34:29Z" }, { "id": 2, "object_type_id": 1, "name": "AB", "model_count": 1, "updated_at": "2026-07-06T06:34:29Z" } ], "page": 1, "page_size": 2, "has_more": true }
A single make by YachtMaster id.
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/makes/771 { "id": 771, "object_type_id": 1, "name": "Beneteau", "model_count": 52, "updated_at": "2026-07-06T06:47:41Z" }
Models for a make, paginated.
| updated_since | ISO 8601 | Only models changed after this timestamp. |
| page | integer | Page number, default 1. |
| page_size | integer | 1–1000, default 100. |
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/makes/771/models?page_size=3 { "data": [ { "id": 3070, "make_id": 771, "name": "50", "updated_at": "2026-07-06T06:38:06Z" }, { "id": 3071, "make_id": 771, "name": "550 Cabin", "updated_at": "2026-07-06T06:38:06Z" }, { "id": 3072, "make_id": 771, "name": "Antares", "updated_at": "2026-07-06T06:38:06Z" } ], "page": 1, "page_size": 3, "has_more": true }
Walkthrough — makes → models
List makes for an object type — each entry carries a model_count.
Beneteau (id: 771) reports model_count: 52, so
drill in with GET /v1/makes/771/models to page through its 52 models. The make id
from step one is simply the path parameter in step two — no lookups needed in between.
List engine makes with model counts, paginated.
| updated_since | ISO 8601 | Only engine makes changed after this timestamp. |
| page | integer | Page number, default 1. |
| page_size | integer | 1–1000, default 100. |
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/engine-makes?page_size=2 { "data": [ { "id": 1, "name": "Abini", "model_count": 0, "updated_at": "2025-04-29T04:18:28Z" }, { "id": 2, "name": "Albin", "model_count": 0, "updated_at": "2025-04-29T04:18:28Z" } ], "page": 1, "page_size": 2, "has_more": true }
Engine models for an engine make, paginated.
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/engine-makes/1/models { "data": [ { "id": 501, "engine_make_id": 1, "name": "9.9 FourStroke", "updated_at": "2025-04-29T04:18:28Z" } ], "page": 1, "page_size": 100, "has_more": false }
Engine-model coverage is still expanding — some engine makes currently return an empty data array.
Fuel types with multilingual names in de, en, es, fi, fr, it, lt, sv.
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/lookups/fuels [ { "id": 1, "name": { "de": "Benzin", "en": "Petrol", "es": "Gasolina", "fi": "Bensiini", "fr": "Essence", "it": "Benzina", "lt": "Benzinas", "sv": "Bensin" } }, { "id": 2, "name": { "en": "Diesel", "fi": "Diesel", "sv": "Diesel", "de": "Diesel" } } ]
Translation coverage varies per entry — a name object may carry fewer than 8 keys until all languages are confirmed.
Engine types with multilingual names in de, en, es, fi, fr, it, lt, sv.
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/lookups/engine-types [ { "id": 1, "name": { "en": "Outboard 4-stroke", "fi": "Perämoottori 4-tahti", "sv": "Utombordare 4-takt", "de": "Außenborder 4-Takt" } } ]
The entire taxonomy in one response — object types, makes, models, engine makes, engine models and lookups. Ideal for a periodic full sync.
Example response
curl -H "Authorization: Bearer ymk_your_key" \ https://data.yachtmaster.cloud/v1/dump { "object_types": [ /* 12 */ ], "makes": [ /* 3364 */ ], "models": [ /* 12838 */ ], "engine_makes": [ /* 129 */ ], "engine_models": [ /* … */ ], "fuels": [ /* 5 */ ], "engine_types": [ /* 7 */ ] }
A large payload — most integrations poll updated_since on the individual endpoints instead and reserve /v1/dump for the initial seed.
Errors
Errors return a JSON body with a detail message and the status below.
| 401 | Missing or invalid API key. |
| 402 | Subscription inactive — reactivate billing to resume. |
| 404 | No resource with that id. |
| 429 | Rate limit exceeded — slow down and retry. |
Rate limits
Your plan includes 100,000 requests per month; usage beyond that is billed at €1 per additional
10,000. A per-key rate limit (a few requests per second) guards against abuse — well above what a
cache-and-sync integration needs. If you hit it, back off and retry on 429.
Prefer an interactive reference? The full OpenAPI spec and a live “try it” console are always in sync with the API.
Open the live API console