---
title: Litmus Edge Manager
slug: api-docs/litmus-edge-manager
description: REST API for Litmus Edge Manager: API endpoints for company and project management, edge lifecycle, asset hierarchy, admin console, and marketplace catalog.
docTags: 
createdAt: 2026-05-11T22:01:55.398Z
---

# Litmus Edge Manager (LEM)

LEM is the fleet management plane for Litmus Edges. Use it to provision new devices, deploy applications and ML models to many devices at once, run alerts, and back up / restore device configurations.

:::BlockQuote
**Run all 304 Edge Manager endpoints:** browse and execute them in the [Edge Manager folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#fa19f00d-c1ae-4dfd-8b3a-08698c2c9c59).
:::

## Three URL prefixes

LEM has **three distinct host/path prefixes** that customers commonly confuse:

| Prefix                          | Purpose                                                             | Endpoints | Auth header                            |
| ------------------------------- | ------------------------------------------------------------------- | --------- | -------------------------------------- |
| `{{LEM_URL}}/api/v1/...`        | Main fleet API: projects, devices, alerts, backups, deploy          | \~158     | `X-AuthToken: <token>`                 |
| `{{LEM_adminURL}}/admin/v1/...` | Admin console: companies, users, LEM-level backups, instance alerts | \~144     | `X-AuthToken: <token>`                 |
| `{{LEM_URL}}/mpcs/...`          | Marketplace catalog management                                      | \~13      | `Authorization: <token>` (no `Bearer`) |

`{{LEM_adminURL}}` typically uses port 8446. Sending the wrong header returns 401.

## Module map

### Companies (admin console)

| Endpoint                   | Purpose          |
| -------------------------- | ---------------- |
| `GET /admin/v1/companies`  | List companies   |
| `POST /admin/v1/companies` | Create a company |

### Edge Lifecycle Management (`/api/v1/...`)

The bulk of LEM (\~144 endpoints in 2.31.x). Grouped sub-modules:

- Projects, Users
- Activation (zero-touch + manual approval)
- Devices (list, detail, edit, retire)
- Marketplace deploy (catalogs, applications, async-task)
- Backups (`init-backup`, `list`, `get`, `init-restore`)
- Alerts (action templates + triggers + incidents)
- AI/ML model upload (pre-signed S3)
- Software / firmware update history

### Digital Twins / Asset Management

- Models, root nodes
- Asset hierarchies pushed down to edges

## Versions documented

| Version | Endpoints | Notes     |
| ------- | --------- | --------- |
| 2.31.x  | 304       | Current   |
| 2.26.x  | 262       | Older LTS |

## Common URL variables

| Variable                     | Used in               | Notes                                            |
| ---------------------------- | --------------------- | ------------------------------------------------ |
| `{{project_id}}`             | Most `/api/v1/` calls | LEM project the device belongs to                |
| `{{edge_device_id}}`         | Device-specific calls | Renamed from `device_id` to disambiguate from LE |
| `{{company_name}}`           | `/admin/v1/` calls    | Company under which projects live                |
| `{{marketplace_catalog_id}}` | `/mpcs/` calls        | Catalog of available apps                        |
| `{{LEM_AdminApiToken}}`      | All calls             | Long-lived admin token from Admin Console        |

## Async-task envelope

LEM long-running operations (app launch, ML deploy, software update) follow the same pattern:

1. POST a task description -> get `taskId`
2. Poll `GET /api/v1/async-task/{taskId}/subtasks` until each subtask `status == SUCCESS`

States: `PENDING`, `IN_PROGRESS`, `SUCCESS`, `FAILED`. See [Deploy App to Edge workflow](#).
