Create a plan
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.
api_key plansAuthorizationBearer <token>A team API key, made by an admin under Settings, API keys. Send it as Authorization: Bearer chk_....
Scope: plans
The plan.
application/json- body
A new plan.
{ "description": "Brute-force attempts are showing up in the auth logs.", "repo": "acme/web", "tasks": [ { "acceptance_criteria": "The 11th attempt within 15 minutes gets 429 and a Retry-After header.", "description": "Allow 10 attempts per IP per 15 minutes; answer 429 after that.", "title": "Limit login attempts per IP" } ], "title": "Rate-limit the login form"}description?|More about it, in Markdown.
"Brute-force attempts are showing up in the auth logs."destination?null|repo?|The repository its tasks work in, owner/name, unless a task names its own.
"acme/web"tasks?array<>|The plan's tasks, in order. Each starts as draft.
[ { "acceptance_criteria": "The 11th attempt within 15 minutes gets 429 and a Retry-After header.", "description": "Allow 10 attempts per IP per 15 minutes; answer 429 after that.", "title": "Limit login attempts per IP" }]title*stringWhat the plan is for. 1 to 500 characters.
"Rate-limit the login form"The plan was made.
application/json- response
The plan that was made.
plan_id*stringThe new plan's id.
"01JB8V0K3M5P7R9T1W3Y5A7C9E"curl -X POST 'https://api.coderhelm.com/api/plans' \ -H "Authorization: Bearer $CODERHELM_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "description": "Brute-force attempts are showing up in the auth logs.", "repo": "acme/web", "tasks": [ { "acceptance_criteria": "The 11th attempt within 15 minutes gets 429 and a Retry-After header.", "description": "Allow 10 attempts per IP per 15 minutes; answer 429 after that.", "title": "Limit login attempts per IP" } ], "title": "Rate-limit the login form"}'{ "plan_id": "01JB8V0K3M5P7R9T1W3Y5A7C9E"}List plans GET
Lists the team's plans, newest first, one page at a time. A listed plan has no tasks; get one plan for its tasks.
Get a plan GET
Returns one plan with its tasks in order. Once the plan runs, each task shows the ticket it became and the run working on it (`run_id`), which you can follow with `GET /api/runs/{run_id}`.