Getting started
The Felt REST API allows you to programmatically interact with the Felt platform, enabling you to integrate Felt's powerful mapping capabilities into your own workflows and pipelines.
You are able to create and manipulate Maps, Layers, Annotations, Sources, Projects and more.
The REST API is available on select Enterprise plans. Reach out to our team to learn more or set up a trial.
Endpoints
All Felt API endpoints are hosted at the following base URL:
https://felt.com/api/v2Create an API token
All calls to the Felt API must be authenticated. The easiest way to authenticate your API calls is by creating an API token and providing it as a Bearer token in the request header.
You can create an API token in the Developers tab of the Workspace Settings page:

Learn more about API tokens here:
AuthenticationInstall our Python library (optional)
The easiest way to interact with the Felt API is by using our felt-python SDK. You can install it with the following command:
Example: Creating a new map
For map management beyond creation — reading details, deleting, moving between projects — see Navigating maps and workspaces.
Creating a new map is as simple as making a POST request to the maps endpoint.
You should see a response like this (trimmed for brevity):
Notice the "id" property. Every map has a unique ID, which is also part of the map's URL. Let's take note of it for future API calls.
Also part of the response is a "url" property, which is the URL to your newly-created map. Feel free to open it! For now, it should just show a blank map.
Example: Uploading a layer from a URL
This example uploads from a URL; for file uploads and monitoring processing, see Uploading files and URLs.
Now that we've created a new map, let's add some data to it. We'll need the map_id included in the previous call's response.
Felt supports many kinds of file and URL imports. In this case, we'll import all the recent earthquakes from the USGS' live GeoJSON feed:
Like maps, layers also have unique identifiers. Let's take note of this one (the layer_id field in the response) so we can style it in the next call.
You can see the uploaded result in your map:

Example: Styling a layer
For reading a layer's current style and more styling patterns, see Styling layers.
Layers can be styled at upload time or afterwards. Let's change the style of our newly-created earthquakes layer so that points are bigger and in green color:
Go to your map to see how your new layer looks:

Example: Refreshing a live data layer
For refreshing file-based layers and the full refresh flow, see Refreshing live data layers.
A layer must have finished uploading successfully before it can be refreshed
Similar to a URL upload, refreshing an existing URL layer is just a matter of making a single POST request:
Now go to your map and see if any new earthquakes have occurred!
Next steps
Authentication — token behavior, rotation, and security.
Errors and rate limits — what failures look like and how to handle them.
Listening to updates using webhooks — react to map changes without polling.
API Reference — every endpoint, generated from the OpenAPI spec.
Last updated
Was this helpful?