POST a small JSON description and get back a deck-ready PNG (or SVG). The endpoint is open and CORS-enabled, so it works from browsers, scripts, CI and anywhere else you can make an HTTP call. The same JSON opens in the builder.
| Field | Type | Description |
|---|---|---|
| title | string | Heading shown top-left of the chart at 22px bold. Every chart has one title row; an empty string hides it. max 140 chars · default "Stop, start, continue" |
| width | integer | Chart width in pixels (640–2400, default 1280, which suits a 16:9 slide). PNG output renders at 2x. Height is computed from the content. 640–2400 · default 1280 |
| palette | string[] | Hex colours. With the default palette the columns are red (Stop), emerald (Start) and sky (Continue); pass brand colours and they apply to the columns left to right instead. Default: indigo, sky, emerald, amber, red, gray. max 12 items · default ["#4f46e5","#0ea5e9","#10b981","#f59e0b","#ef4444","#6b7280"] |
| subject | string | Optional subject of the review, e.g. "Sprint 14 retro" or "Q3 onboarding review", shown small and muted in the title row's right corner (or above the columns when the title is long). Omit for none. max 80 chars |
| stop | string[] | What to stop doing: habits or practices that waste time or hurt results, e.g. ["Merging without code review", "Status meetings with no agenda"]. 0–8 short phrases of about 3–8 words; long ones wrap to 3 lines. Default []. max 8 items · default [] |
| start | string[] | What to start doing: new practices worth trying, e.g. ["Pair on risky stories", "Demo to support every sprint"]. 0–8 short phrases. Default []. max 8 items · default [] |
| continue | string[] | What to keep doing: what works and should carry on, e.g. ["Daily stand-up at 9:30", "Blameless incident reviews"]. 0–8 short phrases. Always the last column. Default []. max 8 items · default [] |
| labels | object | Optional column names in place of the standard Stop, Start and Continue, e.g. { "continue": "Keep doing" }. An empty or missing name shows the standard one. Up to 30 characters; 1–3 words read best. |
| conclusion | string | Optional one-line takeaway or list of agreed actions shown in a muted band under the columns, e.g. "Actions: Sam sets up review rules by Friday; Priya books the support demo". Wraps to 2 lines. Omit for none. max 200 chars |
| order | string | Column order: "stop-start-continue" (default) or "start-stop-continue". Continue is always last. Match the order the user writes. "stop-start-continue", "start-stop-continue" · default "stop-start-continue" |
| colors | object | Optional colour overrides per column, as hex, e.g. { "stop": "#b91c1c" }. Each colours that column's stripe, marker, bullet dots and tint. Default: red, emerald and sky (or the brand palette). |
| Field | Type | Description |
|---|---|---|
| stop | string | Name of the Stop column, e.g. "Stop doing". Default "Stop". max 30 chars |
| start | string | Name of the Start column, e.g. "Start doing". Default "Start". max 30 chars |
| continue | string | Name of the Continue column, e.g. "Keep doing". Default "Continue". max 30 chars |
| Field | Type | Description |
|---|---|---|
| stop | string | Stop colour, e.g. "#ef4444". max 40 chars |
| start | string | Start colour, e.g. "#10b981". max 40 chars |
| continue | string | Continue colour, e.g. "#0ea5e9". max 40 chars |
POST /api/render/stopstartcontinue returns image/png; add ?format=svg for SVG.GET /stopstartcontinue.png?d=<payload> and /stopstartcontinue.svg?d=<payload> render a chart from a link. The payload is the JSON body, raw-deflated and base64url-encoded. Nothing is stored: links are permanent and cached for a year./stopstartcontinue#d=<payload> opens the same chart in the builder for editing.GET /api/render/stopstartcontinue?demo=1 returns the demo chart.GET /api/schema/stopstartcontinue returns the JSON Schema, for code generators and AIs.Input is lenient where the intent is clear: numeric strings become numbers, out-of-range values are clamped, and unknown fields are ignored. Adjustments are listed in the X-Render-Warnings header. Anything unclear returns a 400 that says how to fix it:
{
"error": "Invalid payload",
"issues": [{ "path": "tasks", "message": "must be an array" }],
"example": { … }
}
Use the hosted MCP server instead. It gives Claude, Cursor and other MCP clients a create_stop_start_continue tool that returns the image plus image, SVG and edit links. See the MCP page →