RehearseA sandbox you can make fail on purpose
Point staging at pikopod instead of the provider’s sandbox. Import their OpenAPI, Swagger, Postman or GraphQL spec, or a documentation URL: pikopod finds the linked or well-known spec first and only extracts one with a model if you configured your own key. It is deterministic: the same seed returns the same bytes.
Then arm the failure you need. Timeouts, rate limits, malformed responses, connection resets and duplicate webhooks are controlled inputs. Put the sandbox into a scenario’s standing state and your own tests, Postman or a teammate’s browser meet that failure until you clear it. Here timeouts means the sandbox holds every GET /charges. Webhooks arrive wrapped and signed the way the provider sends them, and only for events the docs declare.
pikopod~/api
$ pikopod import examplepay --spec https://docs.examplepay.test
sandbox examplepay registered (sbx_41d959476a09e5f9, 4 endpoints)
serve it with `pikopod up` → http://127.0.0.1:4600/examplepay/...
$ pikopod mode set examplepay timeouts
mode: timeouts (from archetype or pack timeouts)
armed latency on GET /charges
point your app at the sandbox and run your own tests; clear it with `pikopod mode clear examplepay`$ pikopod import examplepay --spec https://docs.examplepay.test
sandbox examplepay registered (sbx_41d959476a09e5f9, 4 endpoints)
serve it with `pikopod up` → http://127.0.0.1:4600/examplepay/...
$ pikopod mode set examplepay timeouts
mode: timeouts (from archetype or pack timeouts)
armed latency on GET /charges
point your app at the sandbox and run your own tests; clear it with `pikopod mode clear examplepay`
No proxy, account or authored mock is required to start.