Contract checks for every pull request
Catch the API break
before you deploy.
Compare JSON contracts, surface breaking changes, and give your CI a reason to stop the build. No surprises for the clients downstream.
No account · Runs locally · JSON never leaves your browser
Contract playground LOCAL
BASELINEVALID JSON
CANDIDATEVALID JSON
3 contract changes
2 breaking changes would fail CI
CHANGEDBREAKING
response.nameBEFORE
"Jordan"AFTER
nullREMOVEDBREAKING
response.roleBEFORE
"member"AFTER
Not presentADDEDSAFE
response.avatar_urlBEFORE
Not presentAFTER
"https://cdn.example.com/jordan.jp…Small contract changes.
Very large consequences.
−
Removed field
response.user.roleBREAKING↔
Changed type
number → stringBREAKING+
Added field
response.avatar_urlSAFE∅
Nullable value
string → nullBREAKINGThe feedback loop
API teams have always wanted.
“It turns an invisible contract change into something the whole PR can reason about.”
“Seeing the exact JSON path means I know which generated clients need attention immediately.”
“The exit code is the right primitive: simple locally, enforceable in CI.”
“It turns an invisible contract change into something the whole PR can reason about.”
“Seeing the exact JSON path means I know which generated clients need attention immediately.”
“The exit code is the right primitive: simple locally, enforceable in CI.”
“It turns an invisible contract change into something the whole PR can reason about.”
“Seeing the exact JSON path means I know which generated clients need attention immediately.”
“The exit code is the right primitive: simple locally, enforceable in CI.”
“It turns an invisible contract change into something the whole PR can reason about.”
“Seeing the exact JSON path means I know which generated clients need attention immediately.”
“The exit code is the right primitive: simple locally, enforceable in CI.”
“This is the kind of check that keeps a harmless-looking refactor from becoming an incident.”
“A clear line between additive and breaking changes is exactly what our reviews are missing.”
“I would rather learn about a removed field in the PR than from Sentry after the deploy.”
“This is the kind of check that keeps a harmless-looking refactor from becoming an incident.”
“A clear line between additive and breaking changes is exactly what our reviews are missing.”
“I would rather learn about a removed field in the PR than from Sentry after the deploy.”
“This is the kind of check that keeps a harmless-looking refactor from becoming an incident.”
“A clear line between additive and breaking changes is exactly what our reviews are missing.”
“I would rather learn about a removed field in the PR than from Sentry after the deploy.”
“This is the kind of check that keeps a harmless-looking refactor from becoming an incident.”
“A clear line between additive and breaking changes is exactly what our reviews are missing.”
“I would rather learn about a removed field in the PR than from Sentry after the deploy.”
GITHUB CHECK · PR #184API CONTRACT
↳ Loading baseline from contracts/main.json✓ Candidate contract generatedScanning 24 endpoints · 186 fields± response.user.name string → null− response.user.role field removed+ response.avatar_url field added✕ Process completed with exit code 1One check to protect every client.
Run Rail on every pull request. Safe additions pass; removed fields and type changes stop the merge before production.
✓One check on every pull request
✓Exact JSON paths for every break
✓Works with branch protection
✓No hosted service required to start
The road to a hosted contract layer.
Start with a useful local engine. Add the GitHub surface when teams are ready to make API contracts a shared habit.
01NOW
Browser playground
Compare payloads locally with zero setup.
02NEXT
CLI + Action
Version contracts and gate every pull request.
03LATER
Hosted GitHub App
PR comments, baselines, history, and team policies.
Find the break before your users do.
Paste two responses and see exactly what your next deploy changes.
Open the playground