Public API

Trigger suite and collection runs, fetch results, and read monitor data programmatically — from CI, scripts, or the MCP server — using the same API the dashboard itself is built on.

Authentication

Every request is authenticated with an Org API key, sent as a Bearer token:

Authorization: Bearer ll_...

A key grants the same access any member of that org has in the dashboard — every project the org owns, nothing more. There are no per-key scopes yet, so create one key per integration (e.g. "CI pipeline", "MCP server") rather than sharing one, so you can revoke them independently.

API keys are a Pro/Enterprise feature, managed under Org Settings → API Keys. Creating a key shows you the full value exactly once — copy it somewhere safe, since only a hash is stored after that.

Quick start

# List the projects your org owns
curl -H "Authorization: Bearer ll_..." \
  https://api.litmus-lab.com/api/projects

# Trigger a suite run
curl -X POST -H "Authorization: Bearer ll_..." \
  https://api.litmus-lab.com/api/projects/{projectId}/suites/{suiteId}/run

# Poll for the result
curl -H "Authorization: Bearer ll_..." \
  https://api.litmus-lab.com/api/projects/{projectId}/suite-runs/{runId}

Suite and collection runs are asynchronous — a trigger call returns an ID immediately; poll the corresponding GET endpoint for status.

What's available

ResourceCovers
ProjectsList, create, update, delete
SuitesCRUD, trigger a run, run history
Test CasesThe dataset rows a suite runs against
CollectionsGroups of suites, trigger a run, run history
EnvironmentsNamed variable sets injected into runs
Contexts & ScenariosPersonas test cases are evaluated against
Project MembersAdd/remove who has access to a project
API Monitors / UI MonitorsConfig, run history, observed captures
AutomationsNamed groups of suites, trigger together

This mirrors the dashboard's own resource model — see Getting Started for what each of these actually means if you're new to Litmus Lab.

For the complete, authoritative list of every endpoint — exact paths, parameters, and request/response shapes — see the full API Reference. It's generated directly from the same spec the API itself is built against, so it's never out of sync.

Rate limits

Each API key is limited to 60 requests per minute. Exceeding it returns 429.

CI integrations

If you're gating a CI pipeline on a single Collection's pass/fail result rather than building a broader integration, the existing CI / GitHub Actions webhook trigger is simpler — it's a single URL + secret per Collection, no API key required.

MCP Server

Rather than an API key, you can connect Claude directly to your LitmusLab projects as an MCP server, scoped to your own login instead of the whole org. See MCP Server for setup.