Async · GPU · 14+ GIS Operations

Geospatial Processing
as a Simple REST API

Convert, analyze, reproject, run terrain analysis, and deploy SAM2 segmentation on satellite imagery — all through a single, developer-friendly API. Built on top of GDAL, GeoPandas, and NVIDIA GPUs.

Try in Playground Read API Docs →
bash — Quick Start
# Submit a job: convert a Shapefile to GeoJSON
curl -X POST https://api.mapkmltools.com/v1/jobs \
  -H "Authorization: Bearer gm_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "convert",
    "object_key": "inputs/roads.shp",
    "params": { "target_format": "GeoJSON" }
  }'

# Poll for the result
curl https://api.mapkmltools.com/v1/jobs/JOB_ID \
  -H "Authorization: Bearer gm_YOUR_API_KEY"

Everything you need to build with geospatial data

GeoMiner handles the heavy lifting so you can focus on building your product.

🔄

Format Conversion

Convert between Shapefile, GeoJSON, GeoPackage, KML, and GeoTIFF. Raster COG output included.

📐

Reprojection

Reproject any vector or raster to any CRS — EPSG:4326, EPSG:3857, or custom proj strings.

🔍

Spatial Analysis

Buffer, intersect, union, and spatial join operations with automatic CRS alignment.

📊

Statistics & Metadata

Deep metadata extraction and band statistics (min/max/mean/std) for rasters. Feature counts and area for vectors.

🏔️

Terrain Analysis

Generate slope maps (degrees) and hillshade renders from DEM rasters using numpy gradient.

🤖

AI Planning

Describe your GIS problem in plain English. Powered by Llama 3.1-70B via NVIDIA NIM, it returns an executable workflow JSON.

🛰️

Band Math

Calculate NDVI, NDWI, and NDBI spectral indices from multi-band satellite imagery in a single API call.

🗺️

XYZ Tiling

Generate XYZ tile pyramids from GeoTIFF and upload directly to Cloudflare R2. Returns a ready-to-use tile URL template.

👁️

Computer Vision GPU

SAM2 segmentation and GroundingDINO object detection on satellite imagery. Returns geographic GeoJSON polygons/bboxes.

⏳ Async Job Model

All GeoMiner operations are asynchronous. You submit a job and poll for the result. This lets you process massive files (500MB+) without timeouts.

Status Flow

queued
Job accepted, waiting for a worker
processing
Running. Check progress (0–100)
completed
output.download_url contains a 1-hour presigned R2 URL
failed
output.error contains the reason

Polling Pattern

javascript
// 1. Submit job
const { output: { job_id } } = await fetch(
  'https://api.mapkmltools.com/v1/jobs', {
    method: 'POST',
    headers: { Authorization: `Bearer ${API_KEY}` },
    body: JSON.stringify({ action: 'terrain', object_key })
  }
).then(r => r.json());

// 2. Poll until done
let result;
while (true) {
  result = await fetch(
    `https://api.mapkmltools.com/v1/jobs/${job_id}`,
    { headers: { Authorization: `Bearer ${API_KEY}` } }
  ).then(r => r.json());

  if (['completed', 'failed'].includes(result.output.status)) break;
  await new Promise(r => setTimeout(r, 2000));
}

console.log(result.output.download_url); // ← your file

🔐 Authentication

GeoMiner supports two authentication methods depending on how you integrate:

Developer API Key — Recommended

Request a key to get a gm_ prefixed API key. Pass it in the Authorization header:

http
Authorization: Bearer gm_YOUR_API_KEY

Firebase ID Token — For mapkmltools.com users

If you are a signed-in mapkmltools.com user, pass your Firebase ID token directly:

http
Authorization: Bearer eyJhbGciOiJ...
ℹ️ Rate limit: 30 requests/minute per API key. Contact us for higher limits.

💰 Pricing

Start free. Scale as you grow. All plans include access to the full API surface.

Free

$0
forever
  • ✅ 100 jobs/month
  • ✅ All CPU actions
  • ✅ 50MB max file size
  • ✅ 1-hour result retention
  • ❌ GPU (SAM2, GroundingDINO)
  • ❌ Priority queue
Get Started

Enterprise

Custom
contact us
  • ✅ Unlimited jobs
  • ✅ All actions
  • ✅ Unlimited file size
  • ✅ 7-day result retention
  • ✅ Dedicated GPU endpoint
  • ✅ SLA + dedicated support
Contact Us