Layers

APIs to visualize spatial data

Layers enable you to visualize, style and interact with your spatial data.

With these APIs, you can upload data, manage layer styling, publish and refresh live data layers.

Get map layer

get

Retrieve detailed information about a specific layer including data source, styling, and configuration.

Authorizations
Path parameters
map_idstringRequired
layer_idstringRequired
Responses
200

Layer

application/json
get
GET /api/v2/maps/{map_id}/layers/{layer_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*
{
  "caption": "text",
  "geometry_type": "Line",
  "hide_from_legend": true,
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "is_spreadsheet": true,
  "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"
}

Delete map layer

delete

Permanently remove a layer from a map.

Authorizations
Path parameters
map_idstringRequired

The ID of the map to delete the layer from

layer_idstringRequired

The ID of the layer to delete

Responses
204

No Content

delete
DELETE /api/v2/maps/{map_id}/layers/{layer_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*

No content

Get map layer group

get

Retrieve detailed information about a specific layer group including its layers and configuration.

Authorizations
Path parameters
map_idstringRequired
layer_group_idstringRequired
Responses
200

Layer Group

application/json
get
GET /api/v2/maps/{map_id}/layer_groups/{layer_group_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*
{
  "caption": "text",
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "layers": [
    {
      "caption": "text",
      "geometry_type": "Line",
      "hide_from_legend": true,
      "id": "luCHyMruTQ6ozGk3gPJfEB",
      "is_spreadsheet": true,
      "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"
}

Update map layer group

post

Update layer group properties including name, visibility, and organization settings.

Authorizations
Path parameters
map_idstringRequired
layer_group_idstringRequired
Body
captionstringOptionalExample: A very interesting group
idstring · felt_idOptionalExample: luCHyMruTQ6ozGk3gPJfEB
legend_visibilitystring · enumOptional

Controls how the layer group is displayed in the legend

Possible values:
namestringOptionalExample: My Layer Group
ordering_keyintegerOptional
subtitlestringOptionalDeprecated

Deprecated: use caption instead.

visibility_interactionstring · enum | nullableOptional

Controls how the layer group is displayed in the legend. Defaults to "default".

Possible values:
Responses
200

LayerGroup

application/json
post
POST /api/v2/maps/{map_id}/layer_groups/{layer_group_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 171

{
  "caption": "A very interesting group",
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "legend_visibility": "hide",
  "name": "My Layer Group",
  "ordering_key": 1,
  "visibility_interaction": "default"
}
{
  "caption": "text",
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "layers": [
    {
      "caption": "text",
      "geometry_type": "Line",
      "hide_from_legend": true,
      "id": "luCHyMruTQ6ozGk3gPJfEB",
      "is_spreadsheet": true,
      "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"
}

Delete map layer group

delete

Permanently remove a layer group and all its contained layers from a map.

Authorizations
Path parameters
map_idstringRequired

The ID of the map to delete the layer group from

layer_group_idstringRequired

The ID of the layer group to delete

Responses
204

No Content

delete
DELETE /api/v2/maps/{map_id}/layer_groups/{layer_group_id} HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*

No content

List map layers

get

Retrieve all layers from a map, including uploaded files and connected data sources.

Authorizations
Path parameters
map_idstringRequired
Responses
200

Layers list

application/json
get
GET /api/v2/maps/{map_id}/layers HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*
[
  {
    "caption": "text",
    "geometry_type": "Line",
    "hide_from_legend": true,
    "id": "luCHyMruTQ6ozGk3gPJfEB",
    "is_spreadsheet": true,
    "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"
  }
]

Update map layer

post

Update layer properties including styling, visibility, grouping, and other configuration options.

Authorizations
Path parameters
map_idstringRequired
Bodyobject · LayerUpdateParams[]
captionstringOptionalExample: A very interesting dataset
idstring · felt_idRequiredExample: luCHyMruTQ6ozGk3gPJfEB
layer_group_idstring · felt_id | nullableOptionalExample: luCHyMruTQ6ozGk3gPJfEB
legend_visibilitystring · enumOptional

Controls how the layer is displayed in the legend

Possible values:
namestringOptionalExample: My Layer
ordering_keyintegerOptional
refresh_periodstring · enumOptionalPossible values:
subtitlestringOptionalDeprecated

Deprecated: use caption instead.

Responses
200

Layer list

application/json
post
POST /api/v2/maps/{map_id}/layers HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 400

[
  {
    "caption": "A very interesting dataset",
    "id": "luCHyMruTQ6ozGk3gPJfEB",
    "layer_group_id": "luCHyMruTQ6ozGk3gPJfEB",
    "legend_visibility": "hide",
    "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": "My Layer",
    "ordering_key": 1,
    "refresh_period": "15 min"
  }
]
[
  {
    "caption": "text",
    "geometry_type": "Line",
    "hide_from_legend": true,
    "id": "luCHyMruTQ6ozGk3gPJfEB",
    "is_spreadsheet": true,
    "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"
  }
]

List map layer groups

get

Retrieve all layer groups from a map to see how layers are organized.

Authorizations
Path parameters
map_idstringRequired
Responses
200

Layers Groups

application/json
get
GET /api/v2/maps/{map_id}/layer_groups HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Accept: */*
[
  {
    "caption": "text",
    "id": "luCHyMruTQ6ozGk3gPJfEB",
    "layers": [
      {
        "caption": "text",
        "geometry_type": "Line",
        "hide_from_legend": true,
        "id": "luCHyMruTQ6ozGk3gPJfEB",
        "is_spreadsheet": true,
        "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"
  }
]

Update map layer groups

post

Update properties for multiple layer groups in a single request for efficient bulk operations.

Authorizations
Path parameters
map_idstringRequired
Bodyobject · LayerGroupParams[]
captionstringOptionalExample: A very interesting group
idstring · felt_idOptionalExample: luCHyMruTQ6ozGk3gPJfEB
legend_visibilitystring · enumOptional

Controls how the layer group is displayed in the legend

Possible values:
namestringRequiredExample: My Layer Group
ordering_keyintegerOptional
subtitlestringOptionalDeprecated

Deprecated: use caption instead.

visibility_interactionstring · enum | nullableOptional

Controls how the layer group is displayed in the legend. Defaults to "default".

Possible values:
Responses
200

LayerGroup list

application/json
post
POST /api/v2/maps/{map_id}/layer_groups HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 173

[
  {
    "caption": "A very interesting group",
    "id": "luCHyMruTQ6ozGk3gPJfEB",
    "legend_visibility": "hide",
    "name": "My Layer Group",
    "ordering_key": 1,
    "visibility_interaction": "default"
  }
]
[
  {
    "caption": "text",
    "id": "luCHyMruTQ6ozGk3gPJfEB",
    "layers": [
      {
        "caption": "text",
        "geometry_type": "Line",
        "hide_from_legend": true,
        "id": "luCHyMruTQ6ozGk3gPJfEB",
        "is_spreadsheet": true,
        "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"
  }
]

Update layer style

post

Update the visual styling properties of a layer including colors, symbols, and rendering options.

Authorizations
Path parameters
map_idstringRequired

The ID of the map where the layer is located

layer_idstringRequired

The ID of the layer to update the style of

Body
styleobjectRequired

The new layer style, specified in Felt Style Language format

Responses
200

Layer

application/json
post
POST /api/v2/maps/{map_id}/layers/{layer_id}/update_style HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 12

{
  "style": {}
}
{
  "caption": "text",
  "geometry_type": "Line",
  "hide_from_legend": true,
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "is_spreadsheet": true,
  "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"
}

Duplicate map layers

post

Copy layers or layer groups to other maps, preserving styling and configuration.

Authorizations
Bodyone of[]
itemsone ofOptional
or
Responses
200

Duplicate Layers Response

application/json
post
POST /api/v2/duplicate_layers HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 92

[
  {
    "destination_map_id": "luCHyMruTQ6ozGk3gPJfEB",
    "source_layer_id": "luCHyMruTQ6ozGk3gPJfEB"
  }
]
{
  "layer_groups": [
    {
      "caption": "text",
      "id": "luCHyMruTQ6ozGk3gPJfEB",
      "layers": [
        {
          "caption": "text",
          "geometry_type": "Line",
          "hide_from_legend": true,
          "id": "luCHyMruTQ6ozGk3gPJfEB",
          "is_spreadsheet": true,
          "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_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"
    }
  ]
}

Was this helpful?