Skip to content

Bring your own data

Private overlays live under your account prefix on R2. They participate in the map as a customer layer on top of Canada and industry catalogs. This is not generic GIS hosting: there is no search, identify, or indexing over files you send us.

Limits

CapValue
Overlays per account10
Size per overlay5 MB
FormatsGeoJSON (FeatureCollection, Feature, or a geometry) and PMTiles
AuthAPI key on /byod, session cookie on /account/byod

A larger file or an 11th overlay is 400 bad_request. Keys without an accountId (founder / integration) are isolated per key. Checkout is not wired for a BYOD add-on; 0.1 is key-authenticated and quota-gated.

Upload, list, delete

curl -X POST "https://api.unmap.dev/byod?name=leases" \
  -H "Authorization: Bearer $UNMAP_API_KEY" \
  -H "Content-Type: application/geo+json" \
  --data-binary @leases.geojson
{
  "id": "ovl_aabbccddeeff",
  "name": "leases",
  "kind": "geojson",
  "bytes": 1284,
  "createdAt": "2026-09-11T18:00:00.000Z",
  "url": "https://api.unmap.dev/byod/ovl_aabbccddeeff/data",
  "overlay": "byod:ovl_aabbccddeeff"
}

GET /byod lists your overlays and repeats the limits. DELETE /byod/{id} removes the object. GET /byod/{id}/data is the file itself (same key). Multipart file + optional name is also accepted. The dashboard data tab does the same over the account session.

Objects are stored at byod/{accountId}/{id}. Another account cannot list, read, or delete yours: the answer is 404, not a confirmation that the id exists.

Paint it on a style

GeoJSON overlays compose through the existing overlays= hook:

GET /styles/muted.json?overlays=byod:ovl_aabbccddeeff,municipalities

unmap adds a GeoJSON source pointing at /byod/{id}/data?key= and palette-only circle and line layers above roads and below labels. Customer data stays visually dominant. A missing id is a 400. PMTiles is stored and served at /byod/{id}/{z}/{x}/{y} so you can add a vector source yourself; style composition does not guess the archive's source-layer, so overlays=byod: on a PMTiles id is a 400.

const map = new Unmap({
  key,
  style: "muted",
  overlays: ["byod:ovl_aabbccddeeff", "municipalities"],
});

What this is not

  • A tenant PostGIS, tile indexer, or identify engine.
  • Search over your attributes.
  • A billed add-on with a Stripe price. Usage is metered as byod.
  • A replacement for the public layer catalog.

Next steps

  • Layers for the catalog overlays you get without uploading anything.
  • Maps API for how an overlay composes onto a style.
  • Plans & Limits for the size and retention this sits under.