ApiGuard — OpenAPI Breaking Change Detector
Detect breaking changes in your API specs before they reach production.
ApiGuard compares two OpenAPI 3.x specifications and identifies every breaking change, non-breaking change, and deprecation — with severity levels, rule IDs, and CI-ready output.
pip install kryptorious-apiguard
Quick Start
# Compare two specs
apiguard diff openapi-v1.yaml openapi-v2.yaml
# JSON output for CI pipelines
apiguard diff old.yaml new.yaml --format json
# Fail CI on any breaking change
apiguard diff old.yaml new.yaml --fail-on warning
What It Detects
| Severity | Category | Examples |
|---|---|---|
| 🔴 CRITICAL | Removed endpoint, removed response status, removed required path param | |
| 🟠 HIGH | Changed parameter type, added required param, removed required property | |
| 🟡 MEDIUM | Removed enum value, changed response property type | |
| ⚠️ WARNING | Deprecated endpoint, deprecated parameter | |
| ℹ️ INFO | Added endpoint, added optional param, added response field |
30+ detection rules covering paths, parameters, responses, request bodies, and deprecations.
Output Formats
apiguard diff v1.yaml v2.yaml # Rich terminal table (default)
apiguard diff v1.yaml v2.yaml --format json # Machine-readable JSON
apiguard diff v1.yaml v2.yaml --format markdown # Markdown report
apiguard diff v1.yaml v2.yaml --format sarif # SARIF (Premium)
CI/CD Integration
# .github/workflows/api-check.yml
name: API Breaking Change Check
on: [pull_request]
jobs:
api-guard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install kryptorious-apiguard
- run: apiguard diff main-openapi.yaml pr-openapi.yaml --format json --fail-on error
Comparison
| Feature | ApiGuard | openapi-diff | Spectral |
|---|---|---|---|
| Native Python | ✅ | ❌ (Java) | ✅ (JS) |
| Breaking change detection | ✅ Full | ✅ | ❌ (linting only) |
| Severity levels | ✅ 6 levels | ✅ 3 levels | ❌ |
| SARIF output | ✅ Premium | ❌ | ❌ |
| $ref resolution | ✅ Local | ✅ Full | ✅ |
| CI exit codes | ✅ | ✅ | ✅ |
| Install size | ~2MB | ~50MB+ | ~10MB |
Premium
Upgrade to Premium ($9 lifetime) for:
- SARIF output — GitHub Advanced Security integration
- CI annotations — Inline PR comments on breaking changes
- Custom rules — Define your own breaking change policies
- Team dashboards — Track API stability over time
- Priority support
Requirements
- Python 3.9+
- Handles OpenAPI 3.0 and 3.1 specs
- Supports JSON and YAML input
License
MIT — free for personal and commercial use. Premium features require a license.
Built by Kryptorious Quantum Biosciences.
Metadata
Release files for kryptorious-apiguard 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| kryptorious_apiguard-1.0.1.tar.gz | 26.3 kB | Without provenance | Details for kryptorious_apiguard-1.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| kryptorious_apiguard-1.0.1-py3-none-any.whl | Python 3 | none | any | Details for kryptorious_apiguard-1.0.1-py3-none-any.whl |
Total release size: 54.3 kB
Release files / kryptorious_apiguard-1.0.1.tar.gz
| Download URL | kryptorious_apiguard-1.0.1.tar.gz |
|---|---|
| Size | 26.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb575e81e4e28832833baf3b2c2d73cb82a0fd740ff11b69a977368ae4b14eb6
|
|
BLAKE2b-256 checksum How to use checksums |
5b6732908f122651495b946f7fd15cdcf182bc5c37b9d150dc06bbb62ea23db6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / kryptorious_apiguard-1.0.1-py3-none-any.whl
| Download URL | kryptorious_apiguard-1.0.1-py3-none-any.whl |
|---|---|
| Size | 28.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9eb4e0cb30605f826333a72c559e5712e0a678eb951ca189e5cdc106d1419550
|
|
BLAKE2b-256 checksum How to use checksums |
a3582092db2ed8bc4d8a87794e316105b7e8b815d50e9ed63f58e3104348ba9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for kryptorious-apiguard 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.