Free API for Load Testing Practice
Don't practice load tests against your production. Don't practice them against a friend's side project either. This sandbox is built for it — with controllable latency, controllable errors, and rate-limit headers your tooling will actually parse.
Built-in chaos knobs
| Query | Effect |
|---|---|
?delay=500 | 500 ms artificial latency — practice your timeout thresholds |
?random_fail=true | ~30% random 5xx — practice retry / circuit-break logic |
?error=429 | Forced rate-limit — practice backoff & Retry-After parsing |
Mix and match: ?delay=300&random_fail=true simulates a degraded upstream.
k6 — drop-in script
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = { vus: 10, duration: '30s' };
export default function () {
const r = http.get('https://demo.totalshiftleft.ai/api/v1/users?delay=200');
check(r, { 'status was 200': (r) => r.status === 200 });
sleep(1);
}
JMeter
Thread Group → HTTP Request → URL https://demo.totalshiftleft.ai/api/v1/users. Add an HTTP Header Manager with x-session-id: new on the first sampler and extract the returned x-session-id so each thread keeps its own data. Use Response Assertion on "success":true.
Locust (Python)
from locust import HttpUser, task, between
class Sandbox(HttpUser):
host = "https://demo.totalshiftleft.ai"
wait_time = between(1, 3)
@task
def list_users(self):
self.client.get("/api/v1/users?page=1")
What to actually measure
- p50 / p95 / p99 latency — never just averages
- Error rate by status code — distinguish 4xx (client) from 5xx (server)
- Saturation indicators — your client's CPU, your network, not the server
- Retry amplification — does your backoff make the problem worse?
Be a good neighbour
The sandbox has no request rate limit, so throughput and error-rate numbers reflect the API itself. Start every virtual user with x-session-id: new, and treat any response carrying X-Sandbox-Simulated as intentional. A ready-made k6 script lives in the project at docs/collections/k6/baseline.js. It is a shared host, so keep sustained soak tests reasonable and run very large tests against a local copy.
Frequently asked questions
What rate limit does the sandbox enforce?
None, so load tests measure the API rather than a throttle. The only rate-limited endpoint is GET /api/v1/rate-limited/ping, for practising back-off. Fair use applies; abuse is blocked at the network edge.
Can I run a 1000-vu test here?
You will not hit a rate limit, but this is a shared host: ramp up gradually, keep runs short, and run sustained high-volume tests against a local copy of the project.
Other free public APIs in this sandbox
Open the live sandbox — REST, GraphQL, SOAP and auth in one place. No signup, no API key.
Open the API Sandbox →Topics: API for load testing · k6 test API · JMeter test API · Locust test API · free load testing API · performance testing practice