CI, API and webhooks
Automated and manual results in one place
TestPlum accepts JUnit XML from any CI system over a single HTTP request, matches tests to cases by automation ID and records the results in a run. A versioned REST API described by OpenAPI 3.1 covers the rest, with organization-scoped API keys and rate-limit headers, and webhooks deliver HMAC-signed events with retries and a delivery log.
What you can do
JUnit XML ingestion with idempotency keys, OpenAPI 3.1 REST API, scoped API keys and signed webhooks.
JUnit XML from any CI
POST the report your test runner already writes. Send an Idempotency-Key header and a retried upload is recorded once, not twice.
REST API with OpenAPI 3.1
Every endpoint is described in a machine-readable OpenAPI 3.1 document, and a test keeps the document and the router in sync.
Scoped API keys
Keys are tied to one organization, hashed at rest, expire and can be revoked. Rate-limit headers tell clients how much budget is left.
Signed webhooks
Events are signed with HMAC-SHA256 and a timestamp, retried on failure, logged per delivery and disabled automatically if an endpoint keeps failing.
Optional AI assistance
If enabled, AI can draft test cases from a requirement and summarise run failures, with cost controls. Coverage-gap rules work without it.
How it works
Create an API key
Scoped to your organization, with an expiry.
Map automation IDs
Set the automation ID on each case to its test name.
Upload from CI
Add one curl step after your tests.
Subscribe to events
Point a webhook at your chat or deploy tooling.
CI, API and webhooks: frequently asked questions
Which CI tools work with TestPlum?
Any CI system that can run curl. TestPlum ingests JUnit XML, the report format produced by most test runners, including those for Java, JavaScript, Python, Go and .NET.
Is the TestPlum API documented?
Yes. The API is versioned under /api/v1 and described by an OpenAPI 3.1 document served by the application. An automated test checks that every documented endpoint exists.
How do I verify a TestPlum webhook?
Each delivery carries an X-TestPlum-Signature header with a timestamp and an HMAC-SHA256 of the timestamp and body, computed with your webhook secret. Recompute it and compare before trusting the payload.
More of TestPlum
Test case management
Structured steps, versions with diffs, templates, custom fields, saved views and CSV import/export.
Learn moreTest runs and execution
Run snapshots, assignment, step results with keyboard shortcuts, append-only history, burndown and retests.
Learn moreRequirements and traceability
Requirement coverage, derived status, orphan detection and an exportable traceability matrix.
Learn moreSee your release readiness in minutes
Create a workspace, add a project and record your first run. Everything on this site is in the product today.