The bench, over HTTP
Every station is one POST. Signed-in accounts send their x-api-key header to attach runs to their plan limits.
Endpoints
| POST | Body | Returns |
|---|---|---|
| /api/phones | {count, seed, format, as} | TEST-DATA-stamped fictional 555-01XX numbers |
| /api/dataset | {dataset, count, seed, as} | CSV or JSON preset dataset |
| /api/validate | {kind: phone|luhn|isbn|ean13|iban, value} | {valid, …} — failures carry the specific reason |
| /api/ids | {kind: uuid|luhn|ean13, count, seed, prefix} | Check-digit-correct test IDs |
Errors are JSON with an error field and a real status code — 400 for a bad request, 413 over the row ceiling, 429 at the daily limit. Nothing fails silently.