API digital twins, built for testing and training AI Agents.
Give your agents realistic APIs to practice on. Control the data, create real-world scenarios, and run repeatable tests and training in isolated environments, with the SDKs you already use.
Use cases
01
Test the paths that only fail in production
Trigger hard bounces, declined cards, 429s, and pagination. See how your agent responds as the twin updates records, expires rate limits, and carries cursors forward.
02
Reach state a test mode can't
A payment that came back failed, a token that expired, a rate limit already spent. Each is one directive away; no scripting job, no waiting on a shared account to reset.
03
Run CI in parallel without collisions
Every run gets its own hostname, records and request log. A dozen jobs write whatever they like at the same time and none of them can see, throttle or overwrite another.
Built for the APIs your agents call — early teams vote on which twin ships next
- AttioLive
- BILLLive
- GitHubLive
- HubSpotLive
- KlaviyoLive
- LinearLive
- NetSuiteLive
- QuickBooksLive
- ResendLive
- ShopifyLive
- SlackLive
- StripeLive
- WebEDILive
- XeroLive
- ZendeskLive
- Twiliosoon
- Notionsoon
Environments
A working copy of someone else’s API, in about a minute. Pick a provider, start an environment, and you get a hostname of your own — records stay editable and every request is logged. Nothing to install, nothing to reset, nothing shared.
A private URL per run, shared with no one.
State steered by the twin's own directives.
Keys issued in the provider's own format.
- A private URL
resend-a1c93f.twinbay.run - State you can steer
records · directives - Keys in the provider's format
re_twinbay_9f2a… - Editable records
read · write · reset - A full request log
method · status · ms
Connected twins
Attio
BILL
GitHub
HubSpot
Klaviyo
Linear
NetSuite
QuickBooks
Resend
Shopify
Twins
Not a mock: a twin reproduces the provider’s state machine, pagination, idempotency and error taxonomy.
Hand-built for the providers agents lean on hardest.
Verified against the vendor's own SDK in CI.
Never invents a response for a route it doesn't model.
Developers
Create an environment from your terminal. The Twinbay CLI provisions each twin and hands back the private URL and provider-shaped key your tests need.
- One command to create an environment and every twin in it.
- Credentials in the provider's own format, so key handling is exercised too.
- Every request logged with its body, status and latency, readable from the CLI.
Install it with the one-line script or go install. Every command is listed in the CLI reference.
$ twinbay environments create --name=checkout-tests \
--twins='[{"twin":"resend"}]'
✓ twin provisioned resend · behavioural
✓ ready https://resend-a1c93f.twinbay.run
$ twinbay environment-twins collect-credential --environment-id=$ENVIRONMENT \
--environment-twin-id=$TWIN
✓ re_twinbay_9f2a… readable while it runs
$ twinbay environment-logs list --environment-id=$ENVIRONMENT
POST /broadcasts 202 41ms
POST /broadcasts/:id/send 202 38ms
GET /emails?page=2 200 12msPoint the tests you already have at a twin. One line of config, seconds to a live URL.
- of config to point your existing SDK at a twin
- 1 line
- from picking a twin to a live URL your SDK can call
- Seconds
- state shared between environments, runs, or teams
- 0
- of behavioural twins verified against the vendor's SDK in CI
- 100%
Frequently asked questions
Anything else, email hello@twinbay.ai and a human will answer.