CI ingest API
POST your test-run summaries from CI. QualityPilot aggregates across runs, tracks grade + flakiness trends, and notifies on regressions.
Quick start
Use a published reporter — pick your framework on /docs/install. The page below documents the underlying API for anyone writing a custom reporter.
npm install --save-dev @qlens/jest-reporter
npm install --save-dev @qlens/playwright-reporter
pip install qlens-pytest-reporterEndpoint
POST https://www.qlens.dev/api/v1/test-runs
Content-Type: application/json
X-API-Key: qlens_<your-key>Payload
{
"repo": "owner/name", // required
"commit": "abc1234", // optional
"branch": "feature/x", // optional
"framework": "jest", // jest | vitest | playwright | pytest | ...
"ciProvider": "github_actions", // github_actions | gitlab_ci | circleci | ...
"summary": {
"total": 142, // required
"passed": 140, // required
"failed": 2, // required
"skipped": 0,
"flaky": 1,
"durationMs": 38241
},
"cases": [ // optional, max 10,000 per run
{
"suite": "auth/login",
"name": "rejects invalid password",
"status": "failed", // passed | failed | skipped | flaky
"durationMs": 421,
"errorMessage": "expected 401, got 500",
"attempts": 1
}
]
}Response
202 Accepted
{ "id": "uuid", "accepted": true, "casesStored": 142 }
400 Invalid JSON / missing required field
401 Invalid or missing API key
429 Rate limit exceeded. Retry-After header in seconds.
X-RateLimit-Limit: 60
X-RateLimit-Window: 60s
500 Storage failureRate limits
Each API key can post up to 60 requests per 60 seconds (sliding window). On 429, respect the Retry-After header — reporters retry automatically.
OpenAPI spec
Machine-readable schema at /api/v1/openapi.json (OpenAPI 3.1, CORS-allowed).
Use cases
- Track test health over time: grade trend, flakiness per suite.
- Quality gate on PRs (Team plan) — block merges when grade drops below a threshold.
- Spot regressions in specific flaky suites before they page.
- Feed data to the
/api/v1/bug-enhanceand Issue autocreate flows to turn failures into actionable tickets.
Notes
- API is versioned via the
/v1/path prefix. - Cases beyond 10,000 per run are dropped (summary still persists). For very large suites, split by
suiteor ingest per worker. - Shared credit pool — API and dashboard usage count against the same monthly quota on Free, unlimited on Pro+.
Need something else?
Missing a reporter for your framework? Want a batch endpoint or Parquet export? Email support@qlens.dev.