Test-API
Starten Sie eine Suite, lesen Sie die Ergebnisse, vergleichen Sie zwei Versionen und exportieren Sie den Bericht. Alles, was die Konsole kann, kann auch Ihre Pipeline.
Einen Lauf starten
POST /v1/test-runs – Backend-Schlüssel oder Sitzung (Editor+). Wird auf die monatlichen Läufe des Tarifs angerechnet (402 plan_limit_reached, wenn aufgebraucht).
{ "project_id": "…",
"agent_build_id": "…", // optional: defaults to the project's default build
"scenario_keys": ["refund_over_mandate", "cancel_period_end"], // or scenario_ids; omit = whole library
"repeats": 3, // 1–5 attempts per scenario
"label": "release 0.2" }Einen Lauf lesen
GET /v1/test-runs/{id} – beliebiger Schlüssel oder Sitzung.
{
"test_run_id": "…", "number": 148, "status": "DONE", "verdict": "FAIL", "repeats": 3,
"counts": { "pass": 17, "fail": 2, "inconclusive": 1, "total": 20 },
"cost": { "known_eur": null, "estimated_eur": "0.6100", "basis": "estimated" },
"scenarios": [{ "scenario_id": "…", "template_key": "cancel_period_end", "name": "Cancel at period end", "family": "cancel",
"verdict": "FAIL", "attempts": [{ "attempt_id": "…", "attempt_no": 1, "status": "DONE", "verdict": "FAIL", "duration_ms": 8120 }, …] }],
"created_at": "…", "started_at": "…", "finished_at": "…"
}status verläuft QUEUED → RUNNING → DONE (oder CANCELED). Das Urteil des Laufs ist FAIL, wenn ein Szenario fehlgeschlagen ist, INCONCLUSIVE, wenn keines fehlgeschlagen, aber einige nicht eindeutig sind, andernfalls PASS. Ein Szenario besteht nur, wenn jeder Versuch besteht.
Urteile
- PASS – jede deterministische Prüfung gegen den resultierenden Sandbox-Zustand hat gehalten, in jedem Versuch.
- FAIL – eine Prüfung ist fehlgeschlagen: falscher Betrag, falscher Kunde, Zugang zu früh entzogen, eine verbotene Aktion ist passiert, eine doppelte Wirkung.
- INCONCLUSIVE – dem Zustand war nicht zu trauen (Timeout des Agenten, Sandbox-Störung, nicht lesbarer Zustand). Zählt nie als Erfolg. Ein simulierter Provider-Fehler, den der Agent korrekt behandelt hat, ist ein PASS, kein INCONCLUSIVE.
Der semantische Richter fügt, sofern ein KI-Schlüssel konfiguriert ist, beratende Hinweise zu Klarheit und Befolgung der Anweisungen hinzu. Er ändert nie ein zustandsbasiertes Urteil.
Zwei Läufe vergleichen
GET /v1/test-runs/compare?base={run}&head={run} – pro Szenario: broke, fixed, still_failing, unchanged, inconclusive, added, removed, dazu Erfolgsquoten und welche Prüfungen neu fehlschlagen oder bestehen.
Einen Bericht exportieren
GET /v1/test-runs/{id}/export?format=json|csv|pdf – konstruktionsbedingt frei von Secrets. JSON enthält jeden Versuch mit Soll und Ist; CSV entspricht RFC 4180 mit neutralisierter Formel-Injection; PDF ist der lesbare Laufbericht.
Szenarien und der Architect
Vorlagen werden mit jedem Projekt ausgeliefert (siehe die 20). POST /v1/architect/drafts entwirft Szenarien aus einer Beschreibung Ihres Agenten (abgerechnete KI oder die integrierte Bibliothek ohne KI); POST /v1/architect/accept fügt die freigegebenen hinzu. POST /v1/redteam/suite erzeugt feindselige Eingaben und führt sie aus (Guard-Funktion).
Zeitpläne
GET / POST /v1/schedules, PATCH / DELETE /v1/schedules/{id}, POST /v1/schedules/{id}/run. Body: project_id, label, cron (5 Felder), agent_build_id?, scenario_keys[]. Erfordert den Test-Tarif oder höher.