curl "https://win.oneshotagent.com/v1/compute/3f2b9c1e-8d4a-4f6b-9e2a-7c1d5b8a0f42/cases?state=blocked&limit=20" \
-H "X-Agent-ID: 0xYourWalletAddress" \
-H "x-agent-proof: <base64 EIP-712 proof, scope read>"
{
"success": true,
"data": [
{
"key": "repo-141",
"state": "blocked",
"owner": "platform-team",
"next_action": "Review the failing build",
"due_date": "2026-11-02T00:00:00.000Z",
"evidence": ["diffs/repo-141.patch"],
"status": "completed",
"age_seconds": 864000
}
],
"page": { "total": 1, "limit": 20, "offset": 0 },
"counts": { "merged": 140, "blocked": 1, "open": 59 }
}
Compute
Goal Cases
List the cases a compute goal is working through, with their records
GET
/
v1
/
compute
/
{goalId}
/
cases
curl "https://win.oneshotagent.com/v1/compute/3f2b9c1e-8d4a-4f6b-9e2a-7c1d5b8a0f42/cases?state=blocked&limit=20" \
-H "X-Agent-ID: 0xYourWalletAddress" \
-H "x-agent-proof: <base64 EIP-712 proof, scope read>"
{
"success": true,
"data": [
{
"key": "repo-141",
"state": "blocked",
"owner": "platform-team",
"next_action": "Review the failing build",
"due_date": "2026-11-02T00:00:00.000Z",
"evidence": ["diffs/repo-141.patch"],
"status": "completed",
"age_seconds": 864000
}
],
"page": { "total": 1, "limit": 20, "offset": 0 },
"counts": { "merged": 140, "blocked": 1, "open": 59 }
}
Overview
Cases are in limited preview. A goal works through cases only on an account enabled for them, and only when it is a one-off goal. Other goals create no cases, ignore
agent_limits, and are refused a cases done check when they are created.key that is unique in its goal, a budget, a step limit and a small record. It can live for days or months, and it is reopened when a new trigger arrives for its key.
This endpoint lists the records, so a measure such as the share merged or the age of the open cases is a query and not a reading of transcripts.
A case that reaches its budget or its step limit stops in the state needs_a_person and tells the agent that started it. It does not keep spending.
Authentication
Send your agent wallet address inX-Agent-ID and a signed read proof in x-agent-proof (EIP-712, scope: "read"), or an access token. Only the wallet that created the goal can list its cases; other callers get a 404.
Path Parameters
string
required
Goal ID (a UUID) from the create endpoint
Query Parameters
string
Only cases in these record states, comma separated (for example
merged,blocked). A state is a lowercase token.integer
Page size, 1 to 200. Default 50.
integer
Cases to skip. Cases are ordered by when they were opened, oldest first.
Response
array
The page of cases. Each has:
key: the case’s name, unique in the goalstate,owner,next_action,due_date,evidence: the record.stateis a lowercase token the agent chooses (merged,blocked,waiting_on_carrier), or one the platform writes:open,reopened,done,failed,needs_a_person.evidenceis a list of workspace keys.status: the session behind the case:pending(waiting for one of the goal’s awake places),running,waiting,completed,failedorcancelledtask,session_id,parent_id,depthbudget_usdc: the slice it was last given;held_usdc: what it still holdsstep_limitopened_at,updated_at,ended_at,age_seconds(since it was opened, or until it ended)
object
total (cases matching the filter), limit, offset.object
The goal’s cases by state, whatever the filter. The share merged is
counts.merged over the sum.Limits on what is awake
Caps are on what is awake, not on what exists. By default a goal’s sub-agents go three levels deep and 20 of them are awake at once; a case beyond that waits its turn (status: pending). A goal overrides both in its request:
{ "params": { "agent_limits": { "max_depth": 2, "max_awake": 50 } } }
Done check over cases
A goal is done when every case is in a finished state the check names:{ "kind": "cases", "finished_states": ["merged", "blocked"], "owner_required_for": ["blocked"], "min_cases": 200 }
blocked case only counts when its record names an owner. With no cases the check is not met.
curl "https://win.oneshotagent.com/v1/compute/3f2b9c1e-8d4a-4f6b-9e2a-7c1d5b8a0f42/cases?state=blocked&limit=20" \
-H "X-Agent-ID: 0xYourWalletAddress" \
-H "x-agent-proof: <base64 EIP-712 proof, scope read>"
{
"success": true,
"data": [
{
"key": "repo-141",
"state": "blocked",
"owner": "platform-team",
"next_action": "Review the failing build",
"due_date": "2026-11-02T00:00:00.000Z",
"evidence": ["diffs/repo-141.patch"],
"status": "completed",
"age_seconds": 864000
}
],
"page": { "total": 1, "limit": 20, "offset": 0 },
"counts": { "merged": 140, "blocked": 1, "open": 59 }
}