Get started
Start here

Core concepts

Core concepts

A short tour of the ideas that run through every part of the platform. Read this once and the product guides will feel familiar. Each section links out to the page that covers it in depth, so treat this as a map rather than a manual.

The four products

Mountaya exposes four products. Most integrations use one; some combine them.

Authentication

Every request carries an API key, and most surfaces also carry a short-lived session token; the model is the same across all four products. A publishable key (pk_…) is safe to ship in a browser, a secret key (sk_…) stays on a server you control and mints session tokens, and scopes (embedding, tiles, resources, data, mcp, management) gate which products each key reaches, one surface per scope. See authentication for the key pair, scopes, the session-token flow, and the query-parameter fallbacks.

Resource types

Beyond the basemaps and environmental overlays, the platform renders and queries several kinds of content. These are the resources you select by id when embedding a map, request tiles for, or search across.

Overlays

Environmental and terrain layers: weather (wind, snow depth, temperature), terrain (hillshade, aspect and slope, steepness), and points of interest.

Itineraries

Multi-segment trips that string several legs together, with waypoint markers between them.

Collections

A composite grouping of itineraries and zones, rendered together. A collection belongs to an organization and every active member of that organization sees it, so it is a shared folder rather than a personal one. A collection owned by your personal scope is visible to you alone. To reach someone outside the organization, mint a share link: unlike an itinerary link, a collection link opens the collection and the itineraries and zones filed inside it.

Activities

The itineraries for a given activity, grouped so you can render or browse them as a set.

Zones

User annotations as polygons, lines, or points drawn onto the map.

Map Embedding selects these by id (itinerary_id, collection_id, zone_id), the Data API search query finds the itineraries, collections, and zones your credential may view, the Map Studio API creates and edits them, and the Tile API serves tiles for each.

Draft and published

An itinerary is edited as a draft and shown to the public as a published version. Editing a segment or a waypoint only ever changes the draft, so a route can be reworked in the open without anyone seeing a half-finished course. When the work is ready, publishing takes a snapshot of the whole itinerary at that moment.

Which version a request receives depends on the credential it presents, not on a parameter you choose.

Published

Share links and Map Embedding always read the most recently published snapshot. So do the tiles they render. An itinerary that has never been published is not yet reachable from either surface.

Draft

A signed-in editor working in Map Studio sees the draft, including changes that have not been published.

Because a snapshot is taken at publish time, deleting a segment from the draft does not remove it from the published version. The public view keeps serving the last published snapshot until the next publish replaces it.

Publishing is blocked while a collaborator is still editing any part of the itinerary, so a snapshot never captures an edit halfway through.

Segment groups

An itinerary's segments are its legs, and a group labels a run of neighbouring ones as a single stage — a day, a col, an approach. A group carries a name, a colour, and optionally a speed, and those override what the run shows in the segment list, on the elevation profile, and in the hover readout.

Grouping changes no geometry. The member segments keep their own shape, metrics, and position, and each stays individually selectable and editable; a group is presentation, and its members are always a contiguous run.

name and color

Always set. They are what the run is labelled and painted with wherever it reads as one leg.

speed

Optional. Set, the whole run is timed at it; left null, every member keeps computing its own duration and the group's is their sum.

Groups ship on the itinerary payload as groups, and each segment names the group it belongs to through group_id. A published snapshot freezes a group's name, colour, and speed alongside its members, so renaming or deleting a group in the draft leaves the published version untouched, exactly like every other edit.

Coordinates

Every coordinate in the platform is a [longitude, latitude] pair in WGS 84 (EPSG:4326), longitude first. This matches GeoJSON and MapLibre, and is the opposite order from the lat, lng convention some mapping tools use, a frequent source of swapped-axis bugs.

[6.8712, 45.9231]

The pair above is Chamonix: longitude 6.8712, latitude 45.9231. Across the Data API, distances are in meters, durations in seconds, elevations in meters above sea level, and gradients in degrees.

Units

Map Embedding renders measurements in the display units you choose. These preferences are set per embed and fall back to your organization's defaults.

PreferenceParameterValues
Lengthpreferred_unit_lengthmetric, imperial
Slopepreferred_unit_slopedegrees, percentage
Temperaturepreferred_unit_temperaturecelsius, fahrenheit
Themepreferred_themelight, dark
Base-map tintterrain_variantlight, dark

These set the Map Embedding iframe's initial display preferences. Each is optional; when omitted, the studio falls back to your organization's defaults and then to a built-in default.

Activities

Routing is tuned per activity: most use a profile tuned to their terrain and movement style, with a default speed you can override. Activity values appear as the ActivitySlug enum in the Data API and as a lowercase wire form in the Map Studio and Tile APIs.

ActivityAPI valueWire formDirections
Hiking and trail runningHIKING_AND_TRAILhikingandtrailYes
Professional trailPROFESSIONAL_TRAILprofessionaltrailYes, off-network
RunningRUNNINGrunningYes
Backcountry skiingBACKCOUNTRY_SKIINGbackcountryskiingFreehand line only
Ski touringSKI_TOURINGskitouringYes, off-network
Cross-country skiingCROSS_COUNTRY_SKIINGcrosscountryskiingYes
Snowshoe walkingSNOWSHOE_WALKINGsnowshoewalkingYes
Gravel bikingGRAVEL_BIKEgravelbikeNot yet available
Mountain bikingMOUNTAIN_BIKEmountainbikeNot yet available
Road cyclingROAD_CYCLINGroadcyclingNot yet available

Each activity routes on a profile tuned to its terrain and movement style. Directions availability varies: most activities support turn-by-turn routing, backcountry skiing is freehand-line only, and cycling activities are not yet available for routing. The GraphQL ActivitySlug enum uses the uppercase value; the Map Studio and Tile APIs use the lowercase, underscore-free wire form.

Languages

The platform localizes names and descriptions into the supported languages below. Select one with a Language value where the API accepts it; error messages also honour the Accept-Language header.

CodeLanguage
ENEnglish
FRFrench
ESSpanish
ITItalian
DEGerman
ZHChinese (Simplified)
JAJapanese

The Language enum sets the locale of localized strings the API returns. The Data API also honours the Accept-Language header for error messages.

Rate limiting

Quotas are applied per organization, per API, per minute, across every key the organization owns: 60 requests per minute for the Data API and 600 for the Tile API by default. The Map Studio API carries no quota; its one bounded operation is session creation, which has its own per-IP and per-key limits. When you exceed any of them, the API responds with 429 Too Many Requests and no Retry-After header. See errors and rate limits for the full model and how it surfaces across the products.

Hostnames

Each surface is served from its own hostname.

HostPurpose
data.mountaya.comThe Data API (/graphql).
internal.mountaya.comThe Map Studio API, including POST /v1/sessions for minting session tokens.
tiles.mountaya.comThe Tile API: overlay specifications and {z}/{x}/{y} tiles.
app.mountaya.comThe application root that serves the Map Embedding iframe.
mcp.mountaya.comThe Model Context Protocol server (host root /) for AI tooling, over OAuth or a key pair.

Next steps