Coverage for the spec your tests should be hitting.

TraceCov reads your OpenAPI spec and any HTTP traffic. You see which properties, constraints and response variants are actually covered.

$ curl -sL https://cli.tracecov.sh/install/ | sh
petstore.openapi.json Operations 19 / 19
Parameters 67.65%
23 / 34 covered
Keywords 58.36%
178 / 305 covered
Responses 29.69%
19 / 64 covered

Coverage from an example test run against the Petstore API.

See every property, every constraint, every response.

Interactive HTML report. Drill from operations down to schema lines.

coverage.html
TraceCov coverage report showing an operation tree with green, yellow, and red indicators per property and JSON Schema constraint

…then drill into any operation and see coverage line by line.

coverage.html — POST /pet
TraceCov schema coverage detail view showing JSON Schema properties annotated line by line with valid and invalid hit counts and green, yellow, and red left-border indicators per keyword

Drop in to your existing tests

Built-in support for pytest, Playwright, Django, Flask, requests and httpx — plus tracecov proxy mode for everything else.

import tracecov
import requests

# your OpenAPI spec as a dict
coverage = tracecov.CoverageMap.from_dict({...})
session = coverage.requests.track_session(requests.Session())

# ...your tests run as normal...

coverage.save_report(output_file="coverage.html")

Prefer hands-off? Paste our AI setup prompt into Claude Code (or any coding agent) and it wires TraceCov in for you.

Coverage that matches your API contract

Not lines of code — properties and constraints in your OpenAPI spec.

Property-level coverage

Every property in your spec, plus every JSON Schema keyword that defines it: minimum, pattern, enum. Most tools stop at “did you call this endpoint.”

Bidirectional coverage

Tests can pass while only ever sending valid input. TraceCov tracks positive and negative coverage separately. No major API coverage tool tracks this.

Untestable branches identified

Some schema combinations can never be satisfied — oneOf with mutually exclusive constraints, impossible enum/pattern combos. TraceCov computes satisfiability and flags them. No false coverage gaps to chase.

OpenAPI 2.0, 3.0, 3.1

JSON, XML, form data, every parameter location. Full JSON Schema draft support across all spec versions.

HTML, Markdown and JSON reports

HTML for local review. Markdown for PRs. JSON for artifacts and jq.

Coverage thresholds

Fail CI with --fail-under when coverage drops. Set per-metric thresholds for operations, parameters, keywords, examples and responses. Gate merges on real coverage, not vibes.

Zero-instrumentation coverage with tracecov proxy.

Put it in front of any HTTP service. Anything that hits the proxy — curl, browser, manual QA, a load test — becomes coverage data against your spec. No SDK, no test framework, no language requirement.

$ tracecov proxy --spec openapi.json --port 8080

Works with your stack

pytest Playwright Django Flask requests httpx
Gate merges on real coverage, not vibes

Find out what your tests
are actually covering.

Upload your spec and traffic in the demo — coverage report in 30 seconds, no install.