← TypeMorph
no spec required · runs in browser · free

Is your staging API
breaking prod?

Paste two JSON responses — from staging and production, two API versions, or any two environments — and instantly see every schema difference. No OpenAPI spec. No config. No sign-up.

Paste and compare

The problem it solves

You deploy to staging. Tests pass. You promote to production — and something breaks for real users. The reason is almost always a schema difference nobody noticed:

  • staging returns userId as number, prod returns it as string
  • a required field exists in prod but got removed in the new staging build
  • a key was renamed between the old and new API version
  • prod has an extra required field that staging omitted

Every existing tool for this requires an OpenAPI spec. Most APIs — especially third-party ones — don’t have one. TypeMorph infers the schema from the actual response, so you can compare anything.

In CI — catch it before it ships

# Compare staging vs production live
typemorph envdiff \
  --a https://staging.api.com/users/1 \
  --b https://prod.api.com/users/1

# File-based comparison
typemorph envdiff staging-response.json prod-response.json

# GitHub Actions PR comment
typemorph envdiff \
  --a https://staging.api.com/users/1 \
  --b https://prod.api.com/users/1 \
  --format github >> $GITHUB_STEP_SUMMARY

The CLI command exits with code 1 on breaking changes. Wire it into your GitHub Actions pipeline and get a diff in your PR summary before the deployment ever reaches production.

FAQ

Do my API responses get uploaded anywhere?

No. Comparison runs entirely in your browser — no server, no API keys, no retention. Your data never leaves your machine.

Do I need an OpenAPI spec?

No. TypeMorph infers the schema directly from your JSON responses. Paste any two JSON objects and get an instant diff.

What counts as a breaking change?

Required field removed, field type changed (e.g. number → string), or field renamed. New required fields added to B are also flagged.

Can I use this in CI?

Yes — use the typemorph-cli envdiff command. It exits with code 1 on breaking changes, making it CI-native.