For the complete documentation index, see llms.txt. This page is also available as Markdown.

Layer Library

APIs to publish layers

With these APIs, you can publish your layers to your workspace library.

Publish map layer

post

Make a layer available in the workspace library for reuse by team members.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
map_idstringRequired

The ID of the map where the layer is located

layer_idstringRequired

The ID of the layer to publish

Body
feltServerIdstring · uuidOptional

The Felt Server to publish into. Defaults to the workspace's default Felt Server.

Example: 8f9a2b1c-3d4e-5f60-7a8b-9c0d1e2f3a4b
namestringOptional

The name to publish the layer under

Example: My Layer
Responses
200

Publish layer response

application/json
captionstring · nullableRequired
geometry_typestring · enum · nullableRequiredPossible values:
hide_from_legendbooleanRequired
idstring · felt_idRequiredExample: luCHyMruTQ6ozGk3gPJfEB
is_spreadsheetboolean · nullableOptional
last_refreshed_atstring · date-time · nullableOptional

ISO 8601 timestamp of when the layer's data was last updated. This includes scheduled refreshes, manual refreshes, and direct feature edits.

legend_displaystring · enum · nullableOptional

Controls how the layer is displayed in the legend.

Possible values:
legend_visibilitystring · enum · nullableOptional

Controls whether or not the layer is displayed in the legend. Defaults to "show".

Possible values:
namestringRequired
next_refresh_atstring · date-time · nullableOptional

ISO 8601 timestamp of when the next scheduled refresh will occur. Null if refresh is disabled or paused.

ordering_keyinteger · nullableOptional

A sort order key used for ordering layers and layer groups in the legend

paused_reasonstring · enum · nullableOptional

Why the layer's refresh is paused. Null when not paused.

Possible values:
progressnumber · floatRequired
refresh_periodstring · enumRequiredPossible values:
refresh_statusstring · enumRequired

Whether scheduled refresh is active, paused (due to failures), or disabled

Possible values:
statusstring · enumRequiredPossible values:
styleobjectRequired

The Felt Style Language style for the layer

subtitlestring · nullableOptionalDeprecated

Deprecated: use caption instead.

tile_urlstring · nullableOptional

The tile URL for this layer

typestring · enumRequiredPossible values:
post/api/v2/maps/{map_id}/layers/{layer_id}/publish
POST /api/v2/maps/{map_id}/layers/{layer_id}/publish HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 73

{
  "feltServerId": "8f9a2b1c-3d4e-5f60-7a8b-9c0d1e2f3a4b",
  "name": "My Layer"
}
{
  "attributes": [
    {
      "name": "text",
      "type": "INTEGER"
    }
  ],
  "caption": "text",
  "geometry_type": "Line",
  "hide_from_legend": true,
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "is_spreadsheet": true,
  "last_refreshed_at": "2026-01-01T00:00:00.000Z",
  "legend_display": "default",
  "legend_visibility": "hide",
  "links": {
    "components": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA/components",
    "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",
  "next_refresh_at": "2026-01-01T00:00:00.000Z",
  "ordering_key": 1,
  "paused_reason": "consecutive_failures",
  "progress": 1,
  "refresh_period": "15 min",
  "refresh_status": "active",
  "status": "uploading",
  "style": {},
  "tile_url": "text",
  "type": "layer"
}

Publish map layer group

post

Make a layer group available in the workspace library for reuse by team members.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
map_idstringRequired

The ID of the map where the layer group is located

layer_group_idstringRequired

The ID of the layer group to publish

Body
feltServerIdstring · uuidOptional

The Felt Server to publish into. Defaults to the workspace's default Felt Server.

Example: 8f9a2b1c-3d4e-5f60-7a8b-9c0d1e2f3a4b
namestringOptional

The name to publish the layer group under

Example: My Layer
Responses
200

Publish layer group response

application/json
captionstring · nullableRequired
idstring · felt_idRequiredExample: luCHyMruTQ6ozGk3gPJfEB
legend_visibilitystring · enum · nullableOptional

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

Possible values:
namestringRequired
ordering_keyintegerOptional

A sort order key used for ordering layers and layer groups in the legend

subtitlestring · nullableOptionalDeprecated

Deprecated: use caption instead.

typestring · enumRequiredPossible values:
visibility_interactionstring · enumRequired

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

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

{
  "feltServerId": "8f9a2b1c-3d4e-5f60-7a8b-9c0d1e2f3a4b",
  "name": "My Layer"
}
{
  "caption": "text",
  "id": "luCHyMruTQ6ozGk3gPJfEB",
  "layers": [
    {
      "attributes": [
        {
          "name": "text",
          "type": "INTEGER"
        }
      ],
      "caption": "text",
      "geometry_type": "Line",
      "hide_from_legend": true,
      "id": "luCHyMruTQ6ozGk3gPJfEB",
      "is_spreadsheet": true,
      "last_refreshed_at": "2026-01-01T00:00:00.000Z",
      "legend_display": "default",
      "legend_visibility": "hide",
      "links": {
        "components": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA/components",
        "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",
      "next_refresh_at": "2026-01-01T00:00:00.000Z",
      "ordering_key": 1,
      "paused_reason": "consecutive_failures",
      "progress": 1,
      "refresh_period": "15 min",
      "refresh_status": "active",
      "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"
}

List library layers

get

List all layers in your workspace's library, or the felt layer library.

You can add a layer from the library to a map by using the "Duplicate layers" API endpoint (POST /api/v2/duplicate_layers) and the layer id provided by this endpoint.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
sourcestring · enumOptional

Defaults to listing library layers for your "workspace". Use "felt" to list layers from the Felt data library. Use "all" to list layers from both sources.

Default: workspacePossible values:
Responses
200

LayerLibrary

application/json
typestring · enumRequiredPossible values:
get/api/v2/library
GET /api/v2/library HTTP/1.1
Host: felt.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "layer_groups": [
    {
      "caption": "text",
      "id": "luCHyMruTQ6ozGk3gPJfEB",
      "layers": [
        {
          "attributes": [
            {
              "name": "text",
              "type": "INTEGER"
            }
          ],
          "caption": "text",
          "geometry_type": "Line",
          "hide_from_legend": true,
          "id": "luCHyMruTQ6ozGk3gPJfEB",
          "is_spreadsheet": true,
          "last_refreshed_at": "2026-01-01T00:00:00.000Z",
          "legend_display": "default",
          "legend_visibility": "hide",
          "links": {
            "components": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA/components",
            "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",
          "next_refresh_at": "2026-01-01T00:00:00.000Z",
          "ordering_key": 1,
          "paused_reason": "consecutive_failures",
          "progress": 1,
          "refresh_period": "15 min",
          "refresh_status": "active",
          "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": [
    {
      "attributes": [
        {
          "name": "text",
          "type": "INTEGER"
        }
      ],
      "caption": "text",
      "geometry_type": "Line",
      "hide_from_legend": true,
      "id": "luCHyMruTQ6ozGk3gPJfEB",
      "is_spreadsheet": true,
      "last_refreshed_at": "2026-01-01T00:00:00.000Z",
      "legend_display": "default",
      "legend_visibility": "hide",
      "links": {
        "components": "https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA/components",
        "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",
      "next_refresh_at": "2026-01-01T00:00:00.000Z",
      "ordering_key": 1,
      "paused_reason": "consecutive_failures",
      "progress": 1,
      "refresh_period": "15 min",
      "refresh_status": "active",
      "status": "uploading",
      "style": {},
      "tile_url": "text",
      "type": "layer"
    }
  ],
  "type": "layer_library"
}

Last updated

Was this helpful?