1. Data API
  2. Reference

API Reference

A small, read-only REST API over the canonical YachtMaster make / model / engine taxonomy. JSON in, JSON out, versioned under /v1.

Base URL https://data.yachtmaster.cloud

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 }. Use page and page_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 as If-None-Match to get a cheap 304 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 name object keyed by language — 8 languages: de, en, es, fi, fr, it, lt, sv.

Endpoints

GET /v1/object-types

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"
    }
  }
]
GET /v1/makes

List makes. Filterable by object type, paginated, with model counts.

object_typeintegerFilter to one vehicle class (e.g. 1 = motorboat).
updated_sinceISO 8601Only makes changed after this timestamp.
pageintegerPage number, default 1.
page_sizeinteger1–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
}
GET /v1/makes/{id}

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"
}
GET /v1/makes/{id}/models

Models for a make, paginated.

updated_sinceISO 8601Only models changed after this timestamp.
pageintegerPage number, default 1.
page_sizeinteger1–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.

GET /v1/engine-makes

List engine makes with model counts, paginated.

updated_sinceISO 8601Only engine makes changed after this timestamp.
pageintegerPage number, default 1.
page_sizeinteger1–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
}
GET /v1/engine-makes/{id}/models

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.

GET /v1/lookups/fuels

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.

GET /v1/lookups/engine-types

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"
    }
  }
]
GET /v1/dump

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.

401Missing or invalid API key.
402Subscription inactive — reactivate billing to resume.
404No resource with that id.
429Rate 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
enfisv