maps
Manage CARTO Builder maps. Create, edit, validate, publish, copy across organizations, screenshot, and inspect the agent surface.
carto maps list [options] # List maps
carto maps get <map-id> # Pretty details; --json emits round-trippable JSON
carto maps create [json] # Create from JSON (positional, path, or stdin)
carto maps update <map-id> [json] # Update (partial JSON OK)
carto maps validate [json] # Tier-1 preflight (offline, no API calls)
carto maps verify-remote [json] # Tier-0 + Tier-2 (validate + warehouse dry-runs)
carto maps publish <map-id> # Freeze a snapshot so viewers see current state
carto maps schema [section] # JSON Schema reference for agents
carto maps agents <subcommand> # AI agent introspection (see below)
carto maps datasets update <map-id> <dataset-id> # PATCH a single dataset on an existing map
carto maps screenshot <map-id> [options] # Save a PNG screenshot (opt-in Chromium)
carto maps copy <map-id> --dest-profile <name> # Duplicate (cross-org or same org)
carto maps delete <map-id> # Delete mapThe bundle model
maps get <id> --json returns a round-trippable bundle — the same shape that maps create and maps update accept. Server-computed fields are stripped, privacy is synthesised from top-level fields, and datasets are inlined. You can pipe the output straight back in:
carto maps get abc123 --json > map.json
jq '.title = "New title"' map.json | carto maps update abc123Bundle input accepts a positional JSON string, a filesystem path, or stdin:
Pre-flight validation (Tier-1 schema checks, source SQL dry-run, privacy coercion, agent model auto-fill, aggregationExp auto-fill for spatial-index datasets on supported providers) runs before any write — broken bundles reject without creating an orphan map. Post-write verification surfaces as warnings in the JSON output.
For the full bundle recipe (including authoring patterns and the agent skill that drives it), see the carto-create-builder-maps skill.
Two-version model
Private editing mutates the live map via PATCH /maps/:id. Shared and public viewers read from a frozen snapshot created by POST /maps/:id/publish. Setting privacy=shared or privacy=public puts the map in dashboards, but viewers see the prior snapshot (or nothing if never published). Use carto maps publish <id> to update the snapshot — or pass --publish to maps update to chain both.
create and update emit an UNPUBLISHED_SHARED_MAP warning when privacy is shared/public but no snapshot exists.
carto maps list
--mine
Show only your maps.
--search <term>
Free-text search across title/description.
--privacy <level>
Filter by privacy: private, shared, public.
--tags <json>
Filter by tags (JSON array, e.g. '["demo","poc"]').
--order-by <field>
Sort by updatedAt, createdAt, title.
--order-direction <dir>
ASC or DESC.
--page <n> / --page-size <n>
Pagination.
--all
Fetch all pages automatically.
carto maps create / carto maps update
--dry-run
(update) Print planned actions without writing.
--datasets-mode replace
(update) Delete datasets not mentioned in the input (default: merge).
--publish
(update) Chain maps publish <id> after the update succeeds.
--allow-kepler-replace
Allow wholesale keplerMapConfig partial-update replacement (use the read-modify-write cycle instead unless you know what you're doing).
The response includes builderUrl, viewerUrl, and publicUrl as first-class fields. mapUrl is kept as a back-compat alias for builderUrl and will be dropped on the next major.
carto maps validate / carto maps verify-remote
maps validate— Tier-1 only, offline, no API calls. Same input surface ascreate. Exits 1 on any issue. Use to iterate on a bundle before writing.maps verify-remote— Tier-1 + Tier-2 (warehouse-side checks: source dry-runs, region match, region-aware SQL). Reads credentials but never callsPOST /maps. Useful before shipping a bundle in CI.
carto maps publish
Freeze a snapshot so shared/public viewers see the current state:
Snapshots are versioned; the platform tracks lastPublishedAt per map. Republishing replaces the prior snapshot.
carto maps schema [section]
JSON Schema reference for agents authoring bundles. Sections include bundle, dataset, layer.tileset, layer.h3, layer.quadbin, layer.heatmapTile, layer.clusterTile, layer.raster, widgets, sqlparameters, popupsettings, privacy, agent, enums, mapstate, mapstyle, mapsettings, uistate, legendsettings.
radiusScaleWithZoom
boolean
Enables the mode.
radiusReferenceZoom
number (0–22)
Zoom level at which radius is rendered 1:1.
sizeMinPixels
number (1–100)
Lower clamp as the user zooms out.
sizeMaxPixels
number (1–100)
Upper clamp as the user zooms in.
carto maps agents
Discover the AI surface available on the current tenant:
Call maps agents status before emitting an agent block in a bundle — bundles authored for tenants with CARTO AI disabled get the agent block stripped with a warning.
carto maps datasets update
PATCH a single dataset on an existing map without re-emitting the full bundle. Used to swap the SQL, columns, or aggregation of one source while leaving the rest of the map alone.
carto maps copy
Duplicate a map between profiles (organizations). Connections are mapped automatically by name; supply explicit mappings for renamed cases.
--dest-profile <name>
(Required) Destination profile name.
--source-profile <name>
Source profile (default: current).
--connection-mapping <map>
Per-source map (e.g. "src1=dst1,src2=dst2"). Preferred for multi-connection maps.
--connection <name>
Legacy: single connection for all datasets.
--title <title>
Override the map title in the destination.
--skip-source-validation
Skip validating that destination connections can read source tables/queries.
--keep-privacy
Preserve privacy setting from source (default: true).
For a full walkthrough including connection-mapping scenarios and troubleshooting, see Examples → Copying maps and workflows between organizations.
carto maps screenshot
Render a PNG of the map. Two render engines:
light(default) — a bundled minimal viewer (@deck.gl/cartofetchMap). ~2.5 MB asset, ~8 s cold start, ~10 MB network. Renders layers + basemap. No widgets, legends, popups, or chrome.full— the full CARTO Builder viewer at/viewer/:mapIdrendered in a headless iframe. ~20 s, ~28 MB. Full feature parity.
--render-engine <e>
light (default) or full.
-o, --output <path>
Output file path (default: screenshot.png).
--width <px> / --height <px>
Viewport size (default: 1280 × 800).
--lat <deg> / --lng <deg>
Center coordinates.
--zoom <n> / --bearing <deg> / --pitch <deg>
Viewport.
--layers <indices>
Comma-separated visible layer indices (e.g. "0,2").
--search <query>
Address or "lat,lng" to center on.
--hide-overlays
Hide CARTO logo, attribution, zoom controls, legend.
--wait <seconds>
Optional pad after auto-detected render (default: 0).
--timeout <seconds>
Navigation/render timeout (default: 60).
--full-page
Capture full scrollable page instead of viewport.
--no-cache
Bypass persistent Chromium profile (full engine).
carto maps delete
Examples
Last updated
Was this helpful?
