Loops
Compozy Loops HTTP endpoints.
- Audience
- Operators running durable agent work
- Focus
- API Reference guidance shaped for scanability, day-two clarity, and operator context.
/api/workspaces/{workspace_id}/loop-runsPath Parameters
Workspace id
Query Parameters
Filter by Loop name
Filter by Loop status
Filter by catalog or session origin
Filter by origin session id
Filter by live or terminal status
Maximum number of records to return
int32Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loop-runs"{ "aggregates": { "failed": 0, "live": 0, "succeeded": 0, "terminal": 0, "total": 0 }, "runs": [ { "active_gate_id": "string", "budget_approval_seq": 0, "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "created_at": "2019-08-24T14:15:22Z", "definition_digest": "string", "definition_version": 0, "generation": 0, "id": "string", "inputs": { "property1": null, "property2": null }, "iteration_cap": 0, "last_progress_at": "2019-08-24T14:15:22Z", "loop_name": "string", "parent_loop_run_id": "string", "pause_requested": true, "reattempt_strategy": "failed_only", "resolved_network_participation": { "mode": "local", "source": "explicit_request", "version": "network-participation/v1" }, "start_metadata": { "property1": null, "property2": null }, "started_at": "2019-08-24T14:15:22Z", "started_by_kind": "string", "started_by_ref": "string", "started_origin_kind": "string", "started_origin_ref": "string", "status": "queued", "tokens_used": 0, "workspace_id": "string" } ]}/api/workspaces/{workspace_id}/loop-runs/{run_id}Path Parameters
Workspace id
Loop run id
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loop-runs/string"{ "executed_definition": { "apiVersion": "string", "concurrency": "string", "contract": { "boundaries": [ "string" ], "budget": { "on_exceeded": "halt", "tokens": 0, "wall_clock_sec": 0 }, "constraints": [ "string" ], "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "hash_fields": [ "string" ], "window": 0 }, "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "stop_when": "string", "terminal_states": [ "string" ], "verification": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "runtime": { "model": "string", "provider": "string", "reasoning": "string" }, "tool": "string", "type": "string" } ] }, "graph": { "edges": [ { "from": "string", "to": "string", "property1": null, "property2": null } ], "nodes": [ { "batch_size": 0, "body": { "property1": null, "property2": null }, "class": "action", "collection": "string", "condition": "string", "contract": { "property1": null, "property2": null }, "criteria": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "tool": "string", "type": "string", "property1": null, "property2": null } ], "events": [ { "filter": "string", "kind": "task.status_changed" } ], "filter": "string", "harvest": { "property1": null, "property2": null }, "id": "string", "input_ref": "string", "kind": "string", "max_fan_out": 0, "max_parallel": 0, "max_revisions": 0, "on_result": { "property1": null, "property2": null }, "params": { "property1": null, "property2": null }, "parse": "string", "pattern": "string", "produces": { "property1": null, "property2": null }, "retry": { "property1": null, "property2": null }, "session": { "property1": null, "property2": null }, "timeout": "string", "verdict_policy": "string", "watch": { "property1": null, "property2": null }, "property1": null, "property2": null } ] }, "inputs": { "property1": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" }, "property2": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" } }, "kind": "string", "meta": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "description": "string", "name": "string", "version": 0 }, "network_participation": { "mode": "local" }, "start": [ { "input_mapping": { "property1": "string", "property2": "string" }, "inputs": { "property1": null, "property2": null }, "kind": "string" } ] }, "generations": [ { "generation": 0, "outputs": [ { "child_loop_run_id": "string", "generation": 0, "item_index": 0, "node_id": "string", "output_ref": "string", "resolved_runtime": { "model": "string", "provider": "string", "reasoning": "string", "source": { "model": "string", "provider": "string", "reasoning": "string" } }, "status": "string", "task_run_id": "string" } ] } ], "run": { "active_gate_id": "string", "budget_approval_seq": 0, "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "created_at": "2019-08-24T14:15:22Z", "definition_digest": "string", "definition_version": 0, "generation": 0, "id": "string", "inputs": { "property1": null, "property2": null }, "iteration_cap": 0, "last_progress_at": "2019-08-24T14:15:22Z", "loop_name": "string", "parent_loop_run_id": "string", "pause_requested": true, "reattempt_strategy": "failed_only", "resolved_network_participation": { "mode": "local", "source": "explicit_request", "version": "network-participation/v1" }, "start_metadata": { "property1": null, "property2": null }, "started_at": "2019-08-24T14:15:22Z", "started_by_kind": "string", "started_by_ref": "string", "started_origin_kind": "string", "started_origin_ref": "string", "status": "queued", "tokens_used": 0, "workspace_id": "string" }, "watch_events": { "cursors": { "property1": 0, "property2": 0 }, "last_wake_at": "2019-08-24T14:15:22Z", "subscriptions": [ { "filter": "string", "kind": "task.status_changed" } ] }}/api/workspaces/{workspace_id}/loop-runs/{run_id}/approvePath Parameters
Workspace id
Loop run id
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loop-runs/string/approve" \ -H "Content-Type: application/json" \ -d '{ "decision": "approve", "gate_id": "string" }'{ "property1": true, "property2": true}/api/workspaces/{workspace_id}/loop-runs/{run_id}/eventsPath Parameters
Workspace id
Loop run id
Query Parameters
Resume after this sequence
Header Parameters
Last received event sequence
Response Body
text/event-stream
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loop-runs/string/events"{ "at": "2019-08-24T14:15:22Z", "id": "string", "kind": "node_running", "loop_run_id": "string", "payload": null, "seq": 0, "workspace_id": "string"}/api/workspaces/{workspace_id}/loop-runs/{run_id}/pausePath Parameters
Workspace id
Loop run id
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loop-runs/string/pause" \ -H "Content-Type: application/json" \ -d '{ "property1": null, "property2": null }'{ "property1": true, "property2": true}/api/workspaces/{workspace_id}/loop-runs/{run_id}/resumePath Parameters
Workspace id
Loop run id
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loop-runs/string/resume" \ -H "Content-Type: application/json" \ -d '{ "property1": null, "property2": null }'{ "property1": true, "property2": true}/api/workspaces/{workspace_id}/loop-runs/{run_id}/stopPath Parameters
Workspace id
Loop run id
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loop-runs/string/stop" \ -H "Content-Type: application/json" \ -d '{ "property1": null, "property2": null }'{ "property1": true, "property2": true}/api/workspaces/{workspace_id}/loop-runs/{run_id}/turnsPath Parameters
Workspace id
Loop run id
Query Parameters
Filter by Goal node id
Filter by nonnegative item index
int32Resume after this run-wide Goal sequence
int32Page size from 1 to 200; defaults to 50
int32Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loop-runs/string/turns"{ "next_after_seq": 0, "turns": [ { "actor_id": "string", "actor_kind": "string", "binding_epoch": 0, "binding_handle": "string", "blocking_issues": [ { "id": "string", "note": "string" } ], "ended_at": "2019-08-24T14:15:22Z", "evidence_ref": "string", "generation": 0, "item_index": 0, "node_id": "string", "prompt_attempt": 0, "prompt_id": "string", "prompt_ref": "string", "reason_code": "goal_not_active", "result_status": "completed", "seq": 0, "session_id": "string", "started_at": "2019-08-24T14:15:22Z", "stop_reason": "end_turn", "tokens_used": 0, "turn": 0, "verdict_outcome": "approved" } ]}/api/workspaces/{workspace_id}/loopsPath Parameters
Workspace id
Query Parameters
Search Loop name or contract goal
Filter by effective Loop kind
Value in
- "read_only"
- "workspace"
Filter by exact catalog category
Filter by exact latest-run status
Value in
- "queued"
- "running"
- "watching"
- "needs-approval"
- "paused"
- "done"
- "no-op"
- "blocked"
- "failed"
- "exhausted"
- "stalled"
Stable read-only-first name order
Value in
- "name"
Continue after this workspace- and query-bound Loop cursor
Maximum number of Loops to return; defaults to 50 and is capped at 200
int32Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loops"{ "facets": { "categories": { "property1": 0, "property2": 0 }, "kinds": { "property1": 0, "property2": 0 }, "statuses": { "property1": 0, "property2": 0 } }, "loops": [ { "aggregate_30d": { "failed": 0, "runs": 0, "succeeded": 0 }, "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "contract": { "boundaries": [ "string" ], "budget": { "on_exceeded": "halt", "tokens": 0, "wall_clock_sec": 0 }, "constraints": [ "string" ], "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "hash_fields": [ "string" ], "window": 0 }, "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "stop_when": "string", "terminal_states": [ "string" ], "verification": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "runtime": { "model": "string", "provider": "string", "reasoning": "string" }, "tool": "string", "type": "string" } ] }, "description": "string", "inputs": { "property1": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" }, "property2": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" } }, "last_run": { "created_at": "2019-08-24T14:15:22Z", "id": "string", "status": "queued" }, "name": "string", "source": "marketplace", "start": [ { "input_mapping": { "property1": "string", "property2": "string" }, "inputs": { "property1": null, "property2": null }, "kind": "string" } ], "success_rate_30d": 0.1, "version": 0 } ], "page": { "has_more": true, "limit": 0, "next_cursor": "string", "total": 0 }}/api/workspaces/{workspace_id}/loopsPath Parameters
Workspace id
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loops" \ -H "Content-Type: application/json" \ -d '{}'{ "loop": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "definition": { "apiVersion": "string", "concurrency": "string", "contract": { "boundaries": [ "string" ], "budget": { "on_exceeded": "halt", "tokens": 0, "wall_clock_sec": 0 }, "constraints": [ "string" ], "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "hash_fields": [ "string" ], "window": 0 }, "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "stop_when": "string", "terminal_states": [ "string" ], "verification": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "runtime": { "model": "string", "provider": "string", "reasoning": "string" }, "tool": "string", "type": "string" } ] }, "graph": { "edges": [ { "from": "string", "to": "string", "property1": null, "property2": null } ], "nodes": [ { "batch_size": 0, "body": { "property1": null, "property2": null }, "class": "action", "collection": "string", "condition": "string", "contract": { "property1": null, "property2": null }, "criteria": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "tool": "string", "type": "string", "property1": null, "property2": null } ], "events": [ { "filter": "string", "kind": "task.status_changed" } ], "filter": "string", "harvest": { "property1": null, "property2": null }, "id": "string", "input_ref": "string", "kind": "string", "max_fan_out": 0, "max_parallel": 0, "max_revisions": 0, "on_result": { "property1": null, "property2": null }, "params": { "property1": null, "property2": null }, "parse": "string", "pattern": "string", "produces": { "property1": null, "property2": null }, "retry": { "property1": null, "property2": null }, "session": { "property1": null, "property2": null }, "timeout": "string", "verdict_policy": "string", "watch": { "property1": null, "property2": null }, "property1": null, "property2": null } ] }, "inputs": { "property1": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" }, "property2": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" } }, "kind": "string", "meta": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "description": "string", "name": "string", "version": 0 }, "network_participation": { "mode": "local" }, "start": [ { "input_mapping": { "property1": "string", "property2": "string" }, "inputs": { "property1": null, "property2": null }, "kind": "string" } ] }, "description": "string", "name": "string", "source": "marketplace", "version": 0 }}/api/workspaces/{workspace_id}/loops/{name}Path Parameters
Workspace id
Loop name
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loops/string"{ "loop": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "definition": { "apiVersion": "string", "concurrency": "string", "contract": { "boundaries": [ "string" ], "budget": { "on_exceeded": "halt", "tokens": 0, "wall_clock_sec": 0 }, "constraints": [ "string" ], "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "hash_fields": [ "string" ], "window": 0 }, "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "stop_when": "string", "terminal_states": [ "string" ], "verification": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "runtime": { "model": "string", "provider": "string", "reasoning": "string" }, "tool": "string", "type": "string" } ] }, "graph": { "edges": [ { "from": "string", "to": "string", "property1": null, "property2": null } ], "nodes": [ { "batch_size": 0, "body": { "property1": null, "property2": null }, "class": "action", "collection": "string", "condition": "string", "contract": { "property1": null, "property2": null }, "criteria": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "tool": "string", "type": "string", "property1": null, "property2": null } ], "events": [ { "filter": "string", "kind": "task.status_changed" } ], "filter": "string", "harvest": { "property1": null, "property2": null }, "id": "string", "input_ref": "string", "kind": "string", "max_fan_out": 0, "max_parallel": 0, "max_revisions": 0, "on_result": { "property1": null, "property2": null }, "params": { "property1": null, "property2": null }, "parse": "string", "pattern": "string", "produces": { "property1": null, "property2": null }, "retry": { "property1": null, "property2": null }, "session": { "property1": null, "property2": null }, "timeout": "string", "verdict_policy": "string", "watch": { "property1": null, "property2": null }, "property1": null, "property2": null } ] }, "inputs": { "property1": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" }, "property2": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" } }, "kind": "string", "meta": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "description": "string", "name": "string", "version": 0 }, "network_participation": { "mode": "local" }, "start": [ { "input_mapping": { "property1": "string", "property2": "string" }, "inputs": { "property1": null, "property2": null }, "kind": "string" } ] }, "description": "string", "name": "string", "source": "marketplace", "version": 0 }}/api/workspaces/{workspace_id}/loops/{name}Path Parameters
Workspace id
Loop name
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/workspaces/string/loops/string" \ -H "Content-Type: application/json" \ -d '{ "definition": { "apiVersion": "string", "contract": { "budget": { "tokens": 0, "wall_clock_sec": 0 }, "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "window": 0 } }, "graph": { "edges": [ { "from": "string", "to": "string", "property1": null, "property2": null } ], "nodes": [ { "class": "action", "id": "string", "kind": "string", "property1": null, "property2": null } ] }, "kind": "string", "meta": { "catalog": {}, "name": "string" } } }'{ "loop": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "definition": { "apiVersion": "string", "concurrency": "string", "contract": { "boundaries": [ "string" ], "budget": { "on_exceeded": "halt", "tokens": 0, "wall_clock_sec": 0 }, "constraints": [ "string" ], "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "hash_fields": [ "string" ], "window": 0 }, "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "stop_when": "string", "terminal_states": [ "string" ], "verification": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "runtime": { "model": "string", "provider": "string", "reasoning": "string" }, "tool": "string", "type": "string" } ] }, "graph": { "edges": [ { "from": "string", "to": "string", "property1": null, "property2": null } ], "nodes": [ { "batch_size": 0, "body": { "property1": null, "property2": null }, "class": "action", "collection": "string", "condition": "string", "contract": { "property1": null, "property2": null }, "criteria": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "tool": "string", "type": "string", "property1": null, "property2": null } ], "events": [ { "filter": "string", "kind": "task.status_changed" } ], "filter": "string", "harvest": { "property1": null, "property2": null }, "id": "string", "input_ref": "string", "kind": "string", "max_fan_out": 0, "max_parallel": 0, "max_revisions": 0, "on_result": { "property1": null, "property2": null }, "params": { "property1": null, "property2": null }, "parse": "string", "pattern": "string", "produces": { "property1": null, "property2": null }, "retry": { "property1": null, "property2": null }, "session": { "property1": null, "property2": null }, "timeout": "string", "verdict_policy": "string", "watch": { "property1": null, "property2": null }, "property1": null, "property2": null } ] }, "inputs": { "property1": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" }, "property2": { "default": null, "description": "string", "ref": { "kind": "string" }, "required": true, "type": "string" } }, "kind": "string", "meta": { "catalog": { "category": "string", "keywords": [ "string" ], "use_when": "string" }, "description": "string", "name": "string", "version": 0 }, "network_participation": { "mode": "local" }, "start": [ { "input_mapping": { "property1": "string", "property2": "string" }, "inputs": { "property1": null, "property2": null }, "kind": "string" } ] }, "description": "string", "name": "string", "source": "marketplace", "version": 0 }}/api/workspaces/{workspace_id}/loops/{name}Path Parameters
Workspace id
Loop name
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/workspaces/string/loops/string"/api/workspaces/{workspace_id}/loops/{name}/annotationsPath Parameters
Workspace id
Loop name
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loops/string/annotations"{ "annotations": [ { "node_id": "string", "x": 0.1, "y": 0.1 } ]}/api/workspaces/{workspace_id}/loops/{name}/annotationsPath Parameters
Workspace id
Loop name
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/workspaces/string/loops/string/annotations" \ -H "Content-Type: application/json" \ -d '{ "annotations": [ { "node_id": "string", "x": 0.1, "y": 0.1 } ] }'{ "annotations": [ { "node_id": "string", "x": 0.1, "y": 0.1 } ]}/api/workspaces/{workspace_id}/loops/{name}/configPath Parameters
Workspace id
Loop name
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loops/string/config"{ "config": { "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "enabled_checks_json": null, "fan_out_width": 0, "gate_max_revisions": 0, "human_gate_enabled": true, "iteration_cap": 0, "no_progress_window": 0, "reattempt_strategy": "failed_only", "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ] }, "effective_config": { "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "enabled_checks_json": null, "fan_out_width": 0, "gate_max_revisions": 0, "human_gate_enabled": true, "iteration_cap": 0, "no_progress_window": 0, "reattempt_strategy": "failed_only", "run_runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ] }}/api/workspaces/{workspace_id}/loops/{name}/configPath Parameters
Workspace id
Loop name
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/workspaces/string/loops/string/config" \ -H "Content-Type: application/json" \ -d '{ "config": {} }'{ "config": { "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "enabled_checks_json": null, "fan_out_width": 0, "gate_max_revisions": 0, "human_gate_enabled": true, "iteration_cap": 0, "no_progress_window": 0, "reattempt_strategy": "failed_only", "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ] }, "effective_config": { "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "enabled_checks_json": null, "fan_out_width": 0, "gate_max_revisions": 0, "human_gate_enabled": true, "iteration_cap": 0, "no_progress_window": 0, "reattempt_strategy": "failed_only", "run_runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ] }}/api/workspaces/{workspace_id}/loops/{name}/input-defaultsPath Parameters
Workspace id
Loop name
Query Parameters
Config scope: global or workspace
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loops/string/input-defaults?scope=string"{ "loop_name": "string", "scope": "string", "values": { "property1": null, "property2": null }}/api/workspaces/{workspace_id}/loops/{name}/input-defaultsPath Parameters
Workspace id
Loop name
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/workspaces/string/loops/string/input-defaults" \ -H "Content-Type: application/json" \ -d '{ "scope": "string", "values": { "property1": null, "property2": null } }'{ "loop_name": "string", "scope": "string", "values": { "property1": null, "property2": null }}/api/workspaces/{workspace_id}/loops/{name}/input-defaults/{key}Path Parameters
Workspace id
Loop name
Declared Loop input name
Query Parameters
Config scope: global or workspace
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/loops/string/input-defaults/string?scope=string"{ "key": "string", "loop_name": "string", "present": true, "scope": "string", "value": null}/api/workspaces/{workspace_id}/loops/{name}/input-defaults/{key}Path Parameters
Workspace id
Loop name
Declared Loop input name
Query Parameters
Config scope: global or workspace
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/workspaces/string/loops/string/input-defaults/string?scope=string"{ "deleted": true, "key": "string", "loop_name": "string", "scope": "string"}/api/workspaces/{workspace_id}/loops/{name}/input-defaults/{key}Path Parameters
Workspace id
Loop name
Declared Loop input name
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/workspaces/string/loops/string/input-defaults/string" \ -H "Content-Type: application/json" \ -d '{ "scope": "string", "value": null }'{ "key": "string", "loop_name": "string", "present": true, "scope": "string", "value": null}/api/workspaces/{workspace_id}/loops/{name}/runPath Parameters
Workspace id
Loop name
Query Parameters
Preview the run without creating durable state
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loops/string/run" \ -H "Content-Type: application/json" \ -d '{}'{ "dry_run": { "contract": { "boundaries": [ "string" ], "budget": { "on_exceeded": "halt", "tokens": 0, "wall_clock_sec": 0 }, "constraints": [ "string" ], "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "hash_fields": [ "string" ], "window": 0 }, "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "stop_when": "string", "terminal_states": [ "string" ], "verification": [ { "agent": "string", "check": "string", "expect": "string", "id": "string", "inputs": { "property1": null, "property2": null }, "prompt": "string", "rubric": "string", "runtime": { "model": "string", "provider": "string", "reasoning": "string" }, "tool": "string", "type": "string" } ] }, "effective_config": { "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "enabled_checks_json": null, "fan_out_width": 0, "gate_max_revisions": 0, "human_gate_enabled": true, "iteration_cap": 0, "no_progress_window": 0, "reattempt_strategy": "failed_only", "run_runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ], "runtime_defaults": { "judge": { "model": "string", "provider": "string", "reasoning": "string" }, "worker": { "model": "string", "provider": "string", "reasoning": "string" } }, "runtime_rules": [ { "match": { "complexity": "string", "id": "string", "type": "string" }, "runtime": { "model": "string", "provider": "string", "reasoning": "string" } } ] }, "generation": 0, "input_origins": { "property1": "string", "property2": "string" }, "loop_name": "string", "nodes": [ { "class": "action", "depends_on": [ "string" ], "id": "string", "kind": "string" } ], "resolved_inputs": { "property1": null, "property2": null }, "resolved_network_participation": { "mode": "local", "source": "explicit_request", "version": "network-participation/v1" } }, "run": { "active_gate_id": "string", "budget_approval_seq": 0, "budget_on_exceeded": "halt", "budget_tokens": 0, "budget_wall_sec": 0, "created_at": "2019-08-24T14:15:22Z", "definition_digest": "string", "definition_version": 0, "generation": 0, "id": "string", "inputs": { "property1": null, "property2": null }, "iteration_cap": 0, "last_progress_at": "2019-08-24T14:15:22Z", "loop_name": "string", "parent_loop_run_id": "string", "pause_requested": true, "reattempt_strategy": "failed_only", "resolved_network_participation": { "mode": "local", "source": "explicit_request", "version": "network-participation/v1" }, "start_metadata": { "property1": null, "property2": null }, "started_at": "2019-08-24T14:15:22Z", "started_by_kind": "string", "started_by_ref": "string", "started_origin_kind": "string", "started_origin_ref": "string", "status": "queued", "tokens_used": 0, "workspace_id": "string" }, "web_url": "string"}/api/workspaces/{workspace_id}/loops/{name}/validatePath Parameters
Workspace id
Loop name
Request Body
application/json
JSON request body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/workspaces/string/loops/string/validate" \ -H "Content-Type: application/json" \ -d '{ "definition": { "apiVersion": "string", "contract": { "budget": { "tokens": 0, "wall_clock_sec": 0 }, "definition_of_done": "string", "goal": "string", "iteration_cap": 0, "no_progress": { "window": 0 } }, "graph": { "edges": [ { "from": "string", "to": "string", "property1": null, "property2": null } ], "nodes": [ { "class": "action", "id": "string", "kind": "string", "property1": null, "property2": null } ] }, "kind": "string", "meta": { "catalog": {}, "name": "string" } } }'{ "errors": [ { "code": "string", "message": "string", "node_id": "string", "severity": "error" } ], "input_default": { "key": "string", "loop": "string", "reason": "string" }, "runtime_validation": [ { "field": "string", "reason": "string", "task_id": "string", "value": "string" } ], "valid": true}/api/workspaces/{workspace_id}/sessions/{session_id}/goalPath Parameters
Workspace id
Session id
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workspaces/string/sessions/string/goal"{ "goal": { "bound_session_id": "string", "cause": "goal_not_active", "context": { "nudge_ratio": 0.1, "ratio": 0, "reported_at": "2019-08-24T14:15:22Z", "size": 0, "state": "known", "used": 0 }, "contract_summary": "string", "last_verdict": { "blocking_issues": [ { "id": "string", "note": "string" } ], "evaluated_at": "2019-08-24T14:15:22Z", "evidence_ref": "string", "outcome": "approved" }, "live": true, "node_id": "string", "objective": "string", "origin_session_id": "string", "run_id": "string", "run_status": "queued", "status": "active", "turn_limit": 0, "turns_used": 0 }}