List plans
Lists the team's plans, newest first, one page at a time. A listed plan has no tasks; get one plan for its tasks.
api_key viewAuthorizationBearer <token>A team API key, made by an admin under Settings, API keys. Send it as Authorization: Bearer chk_....
Scope: view
limit?integerPlans per page, 1 to 100. Default 20.
int321 <= value <= 100cursor?stringnext from the previous page.
A page of plans.
application/json- response
A page of plans.
next?|Pass as cursor to read the next page; null on the last page.
"PLAN#01JB8V0K3M5P7R9T1W3Y5A7C9E"next_cursor?|DeprecatedThe same as next, kept for older clients.
"PLAN#01JB8V0K3M5P7R9T1W3Y5A7C9E"plans*array<>Plans, newest first.
curl -X GET 'https://api.coderhelm.com/api/plans?limit=20' \ -H "Authorization: Bearer $CODERHELM_API_KEY"{ "next": "PLAN#01JB8V0K3M5P7R9T1W3Y5A7C9E", "next_cursor": "PLAN#01JB8V0K3M5P7R9T1W3Y5A7C9E", "plans": [ { "chat_id": "01JB8TZ6C8E0G2J4L6N8Q0S2U4", "created_at": "2026-10-22T13:40:00+00:00", "description": "Brute-force attempts are showing up in the auth logs.", "destination": "github", "executed_at": "2026-10-22T13:55:00+00:00", "executed_by": "octocat", "mcp_servers": [ "docs-search" ], "plan_id": "01JB8V0K3M5P7R9T1W3Y5A7C9E", "repo": "acme/web", "status": "draft", "task_count": 3, "title": "Rate-limit the login form", "tokens_in": 412300, "tokens_out": 38120, "updated_at": "2026-10-22T13:55:00+00:00" } ]}Get the caller GET
Returns who the request is authenticated as. With an API key this is the key itself: its name, who made it, when it expires, its rate limit, and in `capabilities` the scopes it holds right now (cut down to what its maker holds). Call it first to check a key works.
Create a plan POST
Creates a plan, with its tasks if you send them. The plan and its tasks start as `draft`; nothing runs until the plan is executed. Not idempotent: sending the same request twice makes two plans.