> For the complete documentation index, see [llms.txt](https://docs.ellipsis-drive.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ellipsis-drive.com/developers/common-integrations/display-ellipsis-drive-layers-in-your-application.md).

# Display Ellipsis Drive layers in your application

Ellipsis Drive layers can be integrated directly into your application using standard web mapping approaches.

At a high level, you:

* Reference a layer using its ID
* Choose how it is rendered (library or protocol)
* Apply optional styling and access control

***

### Choose your integration approach

There are two common ways to display layers:

#### 1.) Use a [JavaScript mapping library](https://github.com/ellipsis-drive)

Mapping libraries provide the fastest way to integrate and render layers.

* Use Leaflet for lightweight implementations
* Use MapLibre for more advanced rendering and control

These libraries handle rendering, styling, and interaction out of the box.

#### 2.) Use direct protocols

If you are building from scratch or require full control:

* Use [XYZ tiles](https://docs.ellipsis-drive.com/developers/api-v3/path-raster/timestamps/tile-service) for raster data
* Use [vector tiles](https://docs.ellipsis-drive.com/developers/api-v3/ogc-protocols/mvt/retrieve-mvt-protobuf) for vector data

***

#### Required identifiers

To display a layer, you need:

* **Layer ID** (required)
* **Timestamp ID** (optional, for time-based data)
* **Style ID** (optional, for predefined styling)

These identifiers are available via the layer metadata, either through the [API](https://docs.ellipsis-drive.com/developers/api-v3/path/get-path) or within the [Ellipsis Drive application](https://app.ellipsis-drive.com/).

***

#### Styling options

You can control how layers are rendered in two ways:

* **Style ID**\
  Reference an existing style stored on the server
* **Style object**\
  Define a custom style dynamically within your application

Custom styles are useful for:

* user-driven styling
* dynamic visualisation based on context (for example viewport or filters)

***

#### Authentication

If a layer is not set to public or link sharing, [authenticated access](https://docs.ellipsis-drive.com/developers/authentication-options) is required.

In this case, [include an access token](https://docs.ellipsis-drive.com/developers/api-v3/account/access-tokens) in your requests.\
Tokens are typically used when controlled, programmatic access is required.

Access tokens are recommended for application-level integration.

***

#### Organizing content with folders

For applications managing multiple users or datasets, folders provide a scalable structure.

Example approach:

* [Create a folder](https://docs.ellipsis-drive.com/developers/api-v3/path-folder/create-new-folder) per user or client
* Store the corresponding folder ID in your backend
* [Generate an access token](https://docs.ellipsis-drive.com/developers/api-v3/account/access-tokens) scoped to that folder
* Use the folder ID and token to retrieve and display content

Content can be accessed by:

* [Listing folder contents](https://docs.ellipsis-drive.com/developers/api-v3/path-folder/list-folder)
* [Traversing structured paths](https://docs.ellipsis-drive.com/developers/api-v3/path-folder/traverse-folder) (for example {category}/{year})

***

{% hint style="info" %}

### Extending functionality

Once layers are integrated, you can extend your application with:

* [data querying](https://docs.ellipsis-drive.com/developers/integration-options/query-layers-from-your-app)
* dynamic styling
* analytical workflows
  {% endhint %}
