REST endpoints, GraphQL queries and rate-limit behaviour, all from plain JSON scenarios. Cookies carry over from the browser session automatically, so authenticated endpoints need no extra setup.
API and GraphQL run inside web tests and are not metered separately.
{ "action": "api_test", "data": { "apiEndpoint": "/api/orders/1024", "apiMethod": "GET", "expectedStatus": 200 } }
GET, POST, PUT, DELETE, PATCH
Queries, mutations, subscriptions
Proof your throttling actually throttles
Carried over from web_login, no setup
Claude Code reads your route handlers and writes the scenario. The validator catches the trap first: an api_test step records findings and still reports passed, so a 500 response leaves the test green unless a real assertion follows it.
/harden sweeps your suite for checks that cannot fail> cover POST /api/orders with a test retibe_actions · retibe_env wrote 3 steps: login, post, assert warn: api_test cannot fail on its own added web_assert on order id passed · 3/3 steps · 2.4s saved as scenario 218
Every HTTP method, with status, header and schema validation.
A mismatch is recorded as a finding, not a failed step. Follow the call with web_assert when it has to block a release.
Queries, mutations and subscriptions with data and error validation.
Fire a burst and prove the throttle holds, with the numbers to show it.
Bearer token, Basic auth and an API key in a header name you choose. An OAuth access token goes in as a Bearer token.
Opt a step into retries and it comes back from timeouts, network errors and missing elements. Backoff is exponential, starting at one second and doubling to a thirty-second ceiling. Every attempt is logged.
Branch on an API response, a cookie, a variable or whether the previous step passed. Custom JavaScript when the built-in conditions are not enough.
Once, daily, weekly, monthly or by cron, in a visual calendar with email notifications and a success trend per scenario.
Open a page, call the API, feed the response into a form with {{variable}}, then verify through the UI. One report covers all of it.
HTML reports with the full request and response, timings, validation errors and rate-limiting statistics.
Full run history for every API scenario, with charts, failure analysis and automatic detection of flaky endpoints.
Every API run on one timeline, with duration trend.
Which endpoint fails most often, at a glance.
Unstable tests found automatically, scored 0 to 100.
Where it broke, how often, and a side-by-side run comparison.
Copy one, change the endpoint, run it.
{ "action": "api_test", "data": { "apiEndpoint": "https://api.example.com/users/me", "apiMethod": "GET", "expectedStatus": 200, "validateHeaders": { "content-type": "application/json" } } }
Cookies carry over automatically after web_login
{ "action": "graphql_test", "data": { "graphqlEndpoint": "https://api.example.com/graphql", "graphqlQuery": "query { user(id: 1) { name email } }", "graphqlVariables": {}, "graphqlValidateErrors": false } }
Queries, mutations and subscriptions
{ "action": "rate_limit_test", "data": { "rateLimitEndpoint": "https://api.example.com/endpoint", "rateLimitMethod": "GET", "rateLimitRequests": 20, "rateLimitInterval": 50, "rateLimitExpectedStatus": 429 } }
20 requests, 50 ms apart, expecting a 429
Every endpoint, status, header and response shape checked by hand after each change.
Every endpoint verified in five minutes instead of an afternoon.
Rate limiting is configured, but nobody has actually confirmed it protects the API.
Throttling confirmed in two minutes, with allowed and blocked counts.
Every deploy should trigger a full API pass, but nobody has time to press run.
Problems surface the morning after the deploy, not the week after.
Send a scenario request and the AI will write one for your API within two days. Available on every plan, including Free.