# x402 Testbed — Chaos/Failure Injection Endpoint

> x402 Testbed — Chaos/Failure Injection Endpoint is a paid API for AI agents from health-api.tail11a58f.ts.net, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-31).

Injects controlled server-side failures (HTTP 500) before payment is processed, allowing x402 clients to verify they never treat a 5xx response as a successful paid call.

## Facts

- Endpoint: GET https://health-api.tail11a58f.ts.net/chaos?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-testbed-chaos-failure-injection-endpoint-adb9b118
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ASID5y7L1JnRIzgHi7AbF

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-testbed-chaos-failure-injection-endpoint-adb9b118
```

Example prompt: Run a chaos test against the x402 testbed with a failRate of 0.8 so I can verify my payment client never double-pays when it gets a 500 error back.

## When to prefer this

Use this endpoint specifically when building or validating an x402 payment client and you need to confirm it handles pre-payment server errors (5xx) without double-charging. It is the canonical tool for chaos/fault-injection testing in the x402 protocol stack, distinct from the echo sibling endpoint which tests successful paid round-trips.

## Known failure modes

- Injected 500 at configured failRate — expected behavior, not a true error
- failRate out of [0,1] range may cause undefined behavior
- Network timeout if the Tailscale node is unreachable
- No payment taken on any 500 response by design — if payment IS deducted, that is an x402 client bug

## How this service works

x402 test endpoint (GET) — failure injection with query params only. Query param failRate (0-1): the request fails with 500 BEFORE payment is taken, so you can test that your x402 client never treats a 5xx as paid and retries without double-paying.

## Output

When failure is injected (based on failRate probability), the endpoint returns an HTTP 500 error before any payment is deducted. This lets the caller verify that their x402 client correctly identifies the failure as pre-payment and does not record or retry the call as a paid transaction.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "failRate": {
       "type": "number",
       "description": "Probability (0-1) of injected failure"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-testbed-chaos-failure-injection-endpoint-adb9b118/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from health-api.tail11a58f.ts.net](https://www.zero.xyz/host/health-api.tail11a58f.ts.net/llms.txt)
