> For the complete documentation index, see [llms.txt](https://help.felt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.felt.com/developers/rest-api.md).

# REST API

Automate Felt with the REST API. Create API tokens, find map and layer IDs, export data, and use webhooks to track changes.

{% hint style="success" %}
Available on the Business and Enterprise plans. [Compare plans](https://felt.com/pricing#compare)
{% endhint %}

Use the Felt REST API to create maps, upload and refresh data, style layers, add annotations, and export data or images. Create an API token in workspace settings and send it with each request. The [developer docs](https://developers.felt.com/rest-api/getting-started) cover every endpoint, with request bodies and code examples.

The Platform add-on includes the API access needed to create embed tokens. See [Authenticated embeds](/developers/authenticated-embeds.md).

## What you can do with the REST API

The REST API covers maps, projects, layers, annotations, comments, data sources, and dashboard components. You can:

* Create, update, duplicate, move, and delete maps and projects.
* Upload files and URLs to a map, and refresh a layer with a new file or from its URL.
* Update, style, group, publish, and delete layers.
* Export a layer's data, and export a map as an image.
* Add and update annotations, which the API calls elements.
* Create [embed tokens](/developers/authenticated-embeds.md) for private embedded maps.

The REST API doesn't add or edit individual features in a layer. To change a layer's data, upload a new file to the layer, refresh the layer, or edit its features in Felt. See [Edit features](/layers/edit-features.md). An AI tool connected to Felt's MCP server can add, edit, or delete features with the `edit_features` tool.

For Python, the [felt-python](https://github.com/felt/felt-python) library wraps the REST API. To work with Felt from an AI tool such as Claude or ChatGPT, see [MCP integrations](/felt-ai/mcp.md).

## Create an API token

An API token, sometimes called an API key, authenticates your REST API requests.

1. On the workspace home page, click your workspace name in the sidebar, then click **Workspace settings**.
2. Click the **Developers** tab.
3. Under **API tokens**, click **Generate a new token**.
4. In **Name**, enter a name that describes what the token is for, then click **Create**. Felt shows the token once.
5. Copy the token, store it somewhere safe, and click **Done**.

Send the token in the `Authorization` header of each request, as `Authorization: Bearer <token>`.

An API token uses your access in the workspace where you created it. Only its creator can delete it, and deleting it stops every request that uses it. If you lose a token, click **Delete** next to it and generate a new one.

{% hint style="warning" %}
An API token gives access to your maps and data. Keep it on a server or in a secret store, never in a web page or in [extension](/developers/extensions.md) code.
{% endhint %}

## Find map, layer, and folder IDs

* Map ID: In the toolbar, click **Developer Platform** > **Copy map ID**.
* Layer or layer group ID: In the legend, click the **···** menu on the layer or group, then click **Actions** > **Copy layer ID** or **Copy group ID**.
* Folder ID: In the toolbar, click **Developer Platform** > **Copy folder ID**.

## Webhooks

A webhook sends a `POST` request to your URL each time a map is edited or someone comments on it.

1. Click your workspace name in the sidebar, then click **Workspace settings**.
2. Click the **Developers** tab.
3. Under **Webhooks**, click **Create a new webhook**.
4. In **Webhook URL**, enter the address that should receive the requests.
5. In **Map**, select the map to watch, and click **Create**. The **Signing key** appears.
6. Copy the signing key, store it somewhere safe, and click **Done**.

Each request includes the event type `map:update` and the map's ID, but doesn't describe what changed. Use the REST API to fetch what you need. To check that a request came from Felt, verify the `felt-signature` header with the signing key. See [Listening to updates using webhooks](https://developers.felt.com/guides/listening-to-updates-using-webhooks) in the developer docs.

## Frequently asked questions

<details>

<summary>How do I export a layer's features as GeoJSON with the REST API?</summary>

Start a custom export of the layer with GeoJSON as the output format, then check the export status until it returns a download link. Custom exports also support CSV and other formats, and they can apply filters. Copy the map and layer IDs from the map, then see the [API reference](https://developers.felt.com/rest-api/getting-started) for the requests.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.felt.com/developers/rest-api.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
