Maps
APIs for building maps
Maps are the centerpiece of Felt.
With these APIs, you can create, retrieve, update, delete, move, and duplicate maps programmatically.
Create a new map with optional customization options.
Several aspects can be customized when creating a new map, including:
Title
Initial location (latitude, longitude and zoom level)
Sharing permissions (defaults to viewing and commenting for users with the map URL)
An array of URLs to import on map creation
The basemap to use for the new map. Defaults to "default". Valid values are "default", "light", "dark", "satellite", a valid raster tile URL with {x}, {y}, and {z} parameters, or a hex color string like #ff0000.
A description to display in the map legend
If no data has been uploaded to the map, the initial latitude to center the map display on.
An array of urls to use to create layers in the map. Only tile URLs for raster layers are supported at the moment.
If no data has been uploaded to the map, the initial longitude to center the map display on.
The level of access to grant to the map. Defaults to "view_only".
The title to be used for the map. Defaults to "Untitled Map"
The workspace to create the map in. Defaults to the latest used workspace
If no data has been uploaded to the map, the initial zoom level for the map to display.
Map
UnauthorizedError
UnauthorizedError
NotFoundError
Unprocessable Entity
Unprocessable Entity
InternalServerError
POST /api/v2/maps HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 149
{
"basemap": "text",
"description": "text",
"lat": 1,
"layer_urls": [
"text"
],
"lon": 1,
"public_access": "private",
"title": "text",
"workspace_id": "text",
"zoom": 1
}
{
"basemap": "text",
"created_at": "2024-05-25T15:51:34",
"element_groups": [
{
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"id": "luCHyMruTQ6ozGk3gPJfEB",
"name": "text"
}
],
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"folder_id": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layer_groups": [
{
"caption": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/v13k4Ae9BRjCHHdPP5Fcm6D"
},
"name": "text",
"ordering_key": 1,
"type": "layer_group",
"visibility_interaction": "default"
}
],
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC"
},
"project_id": "text",
"public_access": "private",
"table_settings": {
"default_table_layer_id": "luCHyMruTQ6ozGk3gPJfEB",
"viewers_can_open_table": true
},
"thumbnail_url": "text",
"title": "text",
"type": "map",
"url": "text",
"viewer_permissions": {
"can_duplicate_map": true,
"can_export_data": true,
"can_see_map_presence": true
},
"visited_at": "text"
}
Move a map to a different project or folder within the same workspace. Project IDs and Folder IDs can be found inside map settings.
Map
UnauthorizedError
UnauthorizedError
NotFoundError
Unprocessable Entity
Unprocessable Entity
InternalServerError
POST /api/v2/maps/{map_id}/move HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 39
{
"project_id": "luCHyMruTQ6ozGk3gPJfEB"
}
{
"basemap": "text",
"created_at": "2024-05-25T15:51:34",
"element_groups": [
{
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"id": "luCHyMruTQ6ozGk3gPJfEB",
"name": "text"
}
],
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"folder_id": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layer_groups": [
{
"caption": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/v13k4Ae9BRjCHHdPP5Fcm6D"
},
"name": "text",
"ordering_key": 1,
"type": "layer_group",
"visibility_interaction": "default"
}
],
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC"
},
"project_id": "text",
"public_access": "private",
"table_settings": {
"default_table_layer_id": "luCHyMruTQ6ozGk3gPJfEB",
"viewers_can_open_table": true
},
"thumbnail_url": "text",
"title": "text",
"type": "map",
"url": "text",
"viewer_permissions": {
"can_duplicate_map": true,
"can_export_data": true,
"can_see_map_presence": true
},
"visited_at": "text"
}
Create a copy of a map with all its layers, elements, and configuration.
The ID of the map to duplicate
Title for the duplicated map. If not provided, will default to '[Original Title] (copy)'
Duplicated Map
UnauthorizedError
UnauthorizedError
NotFoundError
Unprocessable Entity
Unprocessable Entity
InternalServerError
POST /api/v2/maps/{map_id}/duplicate HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 70
{
"destination": {
"project_id": "luCHyMruTQ6ozGk3gPJfEB"
},
"title": "text"
}
{
"basemap": "text",
"created_at": "2024-05-25T15:51:34",
"element_groups": [
{
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"id": "luCHyMruTQ6ozGk3gPJfEB",
"name": "text"
}
],
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"folder_id": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layer_groups": [
{
"caption": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/v13k4Ae9BRjCHHdPP5Fcm6D"
},
"name": "text",
"ordering_key": 1,
"type": "layer_group",
"visibility_interaction": "default"
}
],
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC"
},
"project_id": "text",
"public_access": "private",
"table_settings": {
"default_table_layer_id": "luCHyMruTQ6ozGk3gPJfEB",
"viewers_can_open_table": true
},
"thumbnail_url": "text",
"title": "text",
"type": "map",
"url": "text",
"viewer_permissions": {
"can_duplicate_map": true,
"can_export_data": true,
"can_see_map_presence": true
},
"visited_at": "text"
}
Update map properties including title, description, and access permissions.
The ID of the map to update
The basemap to use for the map. Defaults to "default". Valid values are "default", "light", "dark", "satellite", a valid raster tile URL with {x}, {y}, and {z} parameters, or a hex color string like #ff0000.
A description to display in the map legend
The level of access to grant to the map. Defaults to "view_only".
The new title for the map
Map
UnauthorizedError
UnauthorizedError
NotFoundError
Unprocessable Entity
Unprocessable Entity
InternalServerError
POST /api/v2/maps/{map_id}/update HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 278
{
"basemap": "text",
"description": "text",
"public_access": "private",
"table_settings": {
"default_table_layer_id": "luCHyMruTQ6ozGk3gPJfEB",
"viewers_can_open_table": true
},
"title": "text",
"viewer_permissions": {
"can_duplicate_map": true,
"can_export_data": true,
"can_see_map_presence": true
}
}
{
"basemap": "text",
"created_at": "2024-05-25T15:51:34",
"element_groups": [
{
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"id": "luCHyMruTQ6ozGk3gPJfEB",
"name": "text"
}
],
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"folder_id": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layer_groups": [
{
"caption": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/v13k4Ae9BRjCHHdPP5Fcm6D"
},
"name": "text",
"ordering_key": 1,
"type": "layer_group",
"visibility_interaction": "default"
}
],
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC"
},
"project_id": "text",
"public_access": "private",
"table_settings": {
"default_table_layer_id": "luCHyMruTQ6ozGk3gPJfEB",
"viewers_can_open_table": true
},
"thumbnail_url": "text",
"title": "text",
"type": "map",
"url": "text",
"viewer_permissions": {
"can_duplicate_map": true,
"can_export_data": true,
"can_see_map_presence": true
},
"visited_at": "text"
}
Retrieve a map with its metadata including title, URL, thumbnail, and timestamps.
Map
UnauthorizedError
UnauthorizedError
NotFoundError
Unprocessable Entity
Unprocessable Entity
InternalServerError
GET /api/v2/maps/{map_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*
{
"basemap": "text",
"created_at": "2024-05-25T15:51:34",
"element_groups": [
{
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"id": "luCHyMruTQ6ozGk3gPJfEB",
"name": "text"
}
],
"elements": {
"features": [
{
"geometry": {
"felt:id": "luCHyMruTQ6ozGk3gPJfEB",
"felt:parentId": "luCHyMruTQ6ozGk3gPJfEB"
},
"properties": {},
"type": "Feature"
}
],
"type": "FeatureCollection"
},
"folder_id": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layer_groups": [
{
"caption": "text",
"id": "luCHyMruTQ6ozGk3gPJfEB",
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/v13k4Ae9BRjCHHdPP5Fcm6D"
},
"name": "text",
"ordering_key": 1,
"type": "layer_group",
"visibility_interaction": "default"
}
],
"layers": [
{
"caption": "text",
"geometry_type": "Line",
"hide_from_legend": true,
"id": "luCHyMruTQ6ozGk3gPJfEB",
"is_spreadsheet": true,
"legend_display": "default",
"legend_visibility": "hide",
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA"
},
"metadata": {
"attribution_text": "text",
"attribution_url": "text",
"description": "text",
"license": "text",
"source_abbreviation": "text",
"source_name": "text",
"source_url": "text",
"updated_at": "2025-03-24"
},
"name": "text",
"ordering_key": 1,
"progress": 1,
"refresh_period": "15 min",
"status": "uploading",
"style": {},
"tile_url": "text",
"type": "layer"
}
],
"links": {
"self": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC"
},
"project_id": "text",
"public_access": "private",
"table_settings": {
"default_table_layer_id": "luCHyMruTQ6ozGk3gPJfEB",
"viewers_can_open_table": true
},
"thumbnail_url": "text",
"title": "text",
"type": "map",
"url": "text",
"viewer_permissions": {
"can_duplicate_map": true,
"can_export_data": true,
"can_see_map_presence": true
},
"visited_at": "text"
}
Permanently delete a map and all its associated data.
This action cannot be undone. The map and all its layers, elements, and comments will be permanently removed.
The ID of the map to delete
No Content
No content
UnauthorizedError
UnauthorizedError
NotFoundError
Unprocessable Entity
Unprocessable Entity
InternalServerError
DELETE /api/v2/maps/{map_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*
No content
Was this helpful?