Skip to main content
POST
/
v1
/
evals
/
synthesize-failure
(dev only) Fabricate failing eval runs and fire the real eval.failed emitter
curl --request POST \
  --url https://api-sandbox.featherhq.com/v1/evals/synthesize-failure \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "n_failures": 1,
  "failure_kind": "quality",
  "score": 0.62,
  "threshold": 0.8
}
'
{
  "session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "eval_run_ids": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "payload": {},
  "severity": "<string>",
  "sustained_count": 123,
  "dispatched": true,
  "task_id": "<string>"
}

Authorizations

x-api-key
string
header
required

Body

application/json

Fabricate failing eval runs for one agent and fire the REAL eval.failed emitter.

Dev-only (the route 404s in production). n_failures==1 produces the single payload shape; >1 produces the digest shape. failure_kind='quality' writes COMPLETED runs with a failing score (these feed the sustained-failure window that escalates to critical); 'error' writes ERRORED runs with no score (these never increment the sustained window).

agent_id
string<uuid>
required
n_failures
integer
default:1
Required range: 1 <= x <= 10
failure_kind
enum<string>
default:quality
Available options:
quality,
error
score
number
default:0.62
Required range: 0 <= x <= 1
threshold
number
default:0.8
Required range: 0 <= x <= 1

Response

Successful Response

The fabricated session/runs plus the exact payload handed to dispatch.

payload is {} and dispatched is False only if the emitter found nothing notifiable (should not happen for the shapes this endpoint fabricates).

session_id
string<uuid>
required
eval_run_ids
string<uuid>[]
required
payload
Payload · object
required
severity
string | null
required
sustained_count
integer
required
dispatched
boolean
required
task_id
string | null
required