Works with any API
ProdBreak isn’t tied to one vendor. Each API is modeled once as a pack — a faithful, hand-built model of that API’s objects, lifecycle, errors, and webhooks. Point your app at the pack and it behaves like the real service.Stripe
Twilio
GitHub
OpenAI
Plaid
Shopify
Deck
…and 490 more
The promise is “any API ever.” If your app calls it over HTTP, it can have a pack. Some packs ship
today, others are rolling out, and you can request one. The examples in these docs
deliberately span many vendors — the control surface is identical no matter which pack you point at.
The three things a real sandbox has to do
Stateful round-trip
What you
POST comes back on the GET. Objects have a lifecycle. The sandbox is a real little
database that behaves like the vendor’s, not a fixture that returns canned JSON.Forced outcomes
Make any outcome happen on demand — the
402 decline, the rate-limit, the timeout, the failed
branch of a workflow — the cases that are painful or impossible to trigger against the real vendor.Seeding
Start from exactly the history you need. Insert objects at their final state, with deterministic,
format-correct ids.
Two ways to use it
The two use cases are different enough that the docs keep them separate — pick the one you’re here for.In CI — as a testing library
Write integration tests in your normal framework (Jest, Vitest, pytest). A fixture hands you the
vendor’s real SDK already pointed at a fresh world, plus a control handle to seed, force outcomes,
fire events, and advance the clock. Deterministic, reset between tests, one world per worker.
Start at the Quickstart, then Testing in CI.
As a live sandbox
Spin up a long-lived instance and point a real app at it like a staging environment. Same
control surface, longer-lived state, wall-clock time. Good for manual exploration, demos, and
front-end work without touching the real vendor. See Running a live
sandbox.
What makes it different
ProdBreak isn’t a record/replay mock or a static OpenAPI stub. The value is behavioral fidelity: a hand-modeled pack per API. That’s what lets you force a decline and have the resulting webhook, theGET, and the list all agree — because they’re all views of one real state transition.
It also tells you the truth about where that fidelity ends. See How faithful is it? for
exactly what we guarantee and what we don’t.
Status: pre-release. These docs describe the surface as it’s being built. Packs are rolling out
vendor by vendor; examples across the docs use whichever vendor makes the point clearest, and firm up
as each pack lands.