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
| Resource | Covers |
|---|---|
| Projects | List, create, update, delete |
| Suites | CRUD, trigger a run, run history |
| Test Cases | The dataset rows a suite runs against |
| Collections | Groups of suites, trigger a run, run history |
| Environments | Named variable sets injected into runs |
| Contexts & Scenarios | Personas test cases are evaluated against |
| Project Members | Add/remove who has access to a project |
| API Monitors / UI Monitors | Config, run history, observed captures |
| Automations | Named 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.