Docs
v1 · stable

Quickstart

Create a map in Studio, copy its ID, and embed it. A non-technical user is live in under three minutes; a developer adds an interactive pinned map in under ten lines.

<!-- Paste anywhere you can paste HTML -->
<div data-tint="abc123" style="height:420px"></div>
<script src="https://embed.tintmap.dev/v1/embed.js" async></script>

AI agents & LLMs

Tint is built so an AI coding agent — Cursor, Claude, Copilot, v0 — can add a branded map to a site without a human reading these docs. Point your agent at tintmap.dev/llms.txt, a plain-text spec of everything below.

A map is designed and published in the Studio, where it gets a stable ID like m_ab12cd34 and is served from embed.tintmap.dev. To place it on a page, an agent needs only that ID and one snippet.

1
Get the map ID
From the publish screen or dashboard — e.g. m_ab12cd34
2
Choose an embed
Script tag (auto-iframe), iframe, React, or Web Component
3
Paste the snippet
Drop it where the map should appear — responsive & lazy-loaded
4
Drive markers (optional)
Use the JS SDK (Tint.ready) to push pins from your data at runtime
<!-- Paste anywhere you can paste HTML -->
<div data-tint="abc123" style="height:420px"></div>
<script src="https://embed.tintmap.dev/v1/embed.js" async></script>

An agent can also generate a brand-new map programmatically with POST /v1/maps and a secret API key — see REST API below.

Embeds

Two modes from one map ID. Both are domain-locked, lazy-loaded, and carry automatic OpenStreetMap attribution.

<!-- iframe: simplest, fully isolated -->
<iframe src="https://embed.tintmap.dev/m/abc123"
  width="100%" height="420" loading="lazy"
  style="border:0;border-radius:12px"></iframe>

JavaScript SDK

The SDK wraps MapLibre GL with a simpler, theme-aware API: pins, clustering, routes, popups, placeholders and events.

<!-- Embed the map, then drive its markers from your own JS (Starter plan & up) -->
<div data-tint="abc123" style="height:420px"></div>
<script src="https://embed.tintmap.dev/v1/embed.js"></script>

<script>
  Tint.ready("abc123", (map) => {
    // push markers from your data — e.g. after a search/filter
    map.setMarkers([
      { id: "hq", lat: 41.015, lng: 28.979, label: "HQ", address: "Open until 9pm" },
    ]);
    map.flyTo(41.015, 28.979, 13);
    map.on("markerClick", (m) => openDrawer(m.id));
  });
</script>

React

import { TintMap, Pin, Placeholder } from '@tint/react';

<TintMap theme="minimal-light" brandColor="#13A89E"
         center={[2.349, 48.864]} zoom={11}>
  {loading && <Placeholder variant="shimmer" />}
  {stores.map(s => <Pin key={s.id} lng={s.lng} lat={s.lat} />)}
</TintMap>

Web Component

<script type="module" src="https://embed.tintmap.dev/v1/tint-map.js"></script>
<tint-map key="pk_live_xxx" theme="blueprint" brand="#0B2545"
  center="13.405,52.520" zoom="11" style="height:400px">
</tint-map>

REST API

Create and publish maps from your own backend or an AI agent. Authenticate with a secret key (Authorization: Bearer sk_live_…) from the API Keys page — keep it server-side. Requires a Pro plan.

curl -X POST https://tintmap.dev/v1/maps \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Our stores", "theme": "midnight",
    "center": [41.0289, 28.974], "zoom": 12,
    "markers": [{ "lat": 41.0289, "lng": 28.974, "label": "HQ" }]
  }'
POST/v1/mapsCreate & publish a map
GET/v1/mapsList maps
GET/v1/maps/{id}Fetch a map configuration
GET/v1/usageAccount usage & quota
GET/v1/geocodeGeocoding · coming soon
GET/v1/staticStatic image · coming soon