Redteam
Path Parameters
Agent identifier
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Body of POST /v1/agents/{id}/redteam/plan. Names the saved plan; the
generated vectors are persisted under it so it can be re-selected later.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/agents/string/redteam/plan" \ -H "Content-Type: application/json" \ -d '{}'{ "agent_id": "string", "generated_at": "string", "id": "string", "name": "string", "paths": [ { "sink_category": "string", "sink_node": "string", "sink_type": "string", "source_category": "string", "source_node": "string", "source_type": "string" } ], "unmapped_node_types": [ "string" ], "vectors": [ { "goal": "string", "injection_payload": "string", "source_path": null, "target_operation": "string", "technique": "string" } ]}curl -X GET "https://example.com/v1/agents/string/redteam/plans"{ "plans": [ { "agent_id": "string", "generated_at": "string", "id": "string", "name": "string", "paths": [ { "sink_category": "string", "sink_node": "string", "sink_type": "string", "source_category": "string", "source_node": "string", "source_type": "string" } ], "unmapped_node_types": [ "string" ], "vectors": [ { "goal": "string", "injection_payload": "string", "source_path": null, "target_operation": "string", "technique": "string" } ] } ]}Path Parameters
Agent identifier
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/agents/string/redteam/static-policies"{ "generated": [ { "description": "string", "enabled": true, "family": "content", "id": "string", "severity": "low", "source_yaml": "string" } ]}Query Parameters
Filter by attack name
Filter by outcome (landed|blocked|clean|error)
Maximum records to return, capped at 100
1 <= valueResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/redteam/attacks"{ "records": [ { "attack": "string", "created_at": "string", "goal": "string", "job_id": "string", "landed": true, "outcome": "string", "profile": "string", "prompt": "string", "reply": "string", "seq": 0, "target": "string", "trace_id": "string" } ]}Registered runs must exactly match the selected workspace agent's stored
target. Without agent_id, only the fixed local demo adapter is accepted.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Body of POST /v1/redteam/dispatch.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/redteam/dispatch" \ -H "Content-Type: application/json" \ -d '{ "profile": "string", "target_url": "string" }'{ "agent_id": "string", "attacks": 0, "blocked": 0, "created_at": "string", "environment_id": "string", "error": "string", "id": "string", "landed": 0, "profile": "string", "status": "queued", "target": "string", "updated_at": "string", "workspace_id": "string"}Query Parameters
Filter by associated agent id
Maximum jobs to return, capped at 100
1 <= valueResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/redteam/jobs"{ "jobs": [ { "agent_id": "string", "attacks": 0, "blocked": 0, "created_at": "string", "environment_id": "string", "error": "string", "id": "string", "landed": 0, "profile": "string", "status": "queued", "target": "string", "updated_at": "string", "workspace_id": "string" } ]}curl -X GET "https://example.com/v1/redteam/jobs/string"{ "job": { "agent_id": "string", "attacks": 0, "blocked": 0, "created_at": "string", "environment_id": "string", "error": "string", "id": "string", "landed": 0, "profile": "string", "status": "queued", "target": "string", "updated_at": "string", "workspace_id": "string" }, "sessions": [ { "attack": "string", "case_id": "string", "error": "string", "events": [ { "actor": "string", "content_text": "string", "created_at": "string", "event_id": "string", "kind": "string", "label": "string", "payload": null, "seq": 0, "trace_id": "string" } ], "goal": "string", "kind": "string", "landed": true, "outcome": "string", "runner_session_id": "string", "seq": 0, "session_id": "string", "status": "string", "trace_id": "string", "track": "string", "trial_index": 0 } ]}curl -X POST "https://example.com/v1/redteam/jobs/string/cancel"{ "agent_id": "string", "attacks": 0, "blocked": 0, "created_at": "string", "environment_id": "string", "error": "string", "id": "string", "landed": 0, "profile": "string", "status": "queued", "target": "string", "updated_at": "string", "workspace_id": "string"}Path Parameters
Job id
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Body of POST /v1/redteam/jobs/{id}/harden.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/redteam/jobs/string/harden" \ -H "Content-Type: application/json" \ -d '{}'{ "candidates": [ { "evidence_seqs": [ 0 ], "existing_policy_id": "string", "operation": "create", "policy": { "description": "string", "enabled": true, "family": "content", "id": "string", "severity": "low", "source_yaml": "string" }, "source": "string", "substrate": "string", "verify": { "blocked_landed": 0, "blocked_variants": 0, "control_total": 0, "false_blocks": 0, "landed_total": 0, "passed": true, "variant_total": 0 } } ], "generated_at": "string", "rejections": [ { "evidence_seqs": [ 0 ], "message": "string", "reason": "no_target_reply", "substrate": "string", "verify": null } ], "unreachable": [ "string" ]}Path Parameters
Job id
Query Parameters
Second same-agent job id to compare against
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/redteam/jobs/string/report"{ "aggregates": { "attacks": 0, "blocked": 0, "clean": 0, "errored": 0, "landed": 0, "risk_level": "critical", "success_rate": 0.1, "total": 0 }, "comparison": null, "findings": [ { "attack": "string", "category": "string", "evidence": "string", "goal": "string", "landed": true, "outcome": "string", "prompt": "string", "seq": 0, "severity": "critical", "trace_id": "string" } ], "generated_at": "string", "job": { "agent_id": "string", "attacks": 0, "blocked": 0, "created_at": "string", "environment_id": "string", "error": "string", "id": "string", "landed": 0, "profile": "string", "status": "queued", "target": "string", "updated_at": "string", "workspace_id": "string" }}curl -X DELETE "https://example.com/v1/redteam/plans/string"Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Body of POST /v1/redteam/reports — mint a shareable report link.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/redteam/reports" \ -H "Content-Type: application/json" \ -d '{ "job_id": "string" }'{ "compare_job_id": "string", "created_at": "string", "expires_at": "string", "job_id": "string", "path": "string", "token": "string"}Unauthenticated by design: the token is the bearer capability. The job lookup is scoped to the token's stored workspace, never the request, so a token cannot reach another workspace's data.
Path Parameters
Report share token
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/redteam/reports/string"{ "aggregates": { "attacks": 0, "blocked": 0, "clean": 0, "errored": 0, "landed": 0, "risk_level": "critical", "success_rate": 0.1, "total": 0 }, "comparison": null, "findings": [ { "attack": "string", "category": "string", "evidence": "string", "goal": "string", "landed": true, "outcome": "string", "prompt": "string", "seq": 0, "severity": "critical", "trace_id": "string" } ], "generated_at": "string", "job": { "agent_id": "string", "attacks": 0, "blocked": 0, "created_at": "string", "environment_id": "string", "error": "string", "id": "string", "landed": 0, "profile": "string", "status": "queued", "target": "string", "updated_at": "string", "workspace_id": "string" }}curl -X POST "https://example.com/v1/redteam/reports/string/revoke"