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.
| Field | Type | Description |
|---|---|---|
| title | string | Project title shown above the chart. Default: "Project Timeline". |
| columns | number | Number of time-unit columns (2–52). Default 8. |
| unit | string | Column unit label, e.g. "Week", "Sprint", "Month". Default "Week". |
| start | number | Starting column number — header reads "Week 1", "Week 2", …. Default 1. |
| width | number | Output width in pixels (640–2400). Default 1280. PNG renders at 2× DPR. |
| labelsInBars | boolean | Show task names inside each bar. Default true. |
| tasks | Task[] | Array of tasks (max 100). See below. |
| Field | Type | Description |
|---|---|---|
| name | string | Task label (truncated if it overflows). |
| start | number | Column offset from the left of the track (supports 0.25 increments, e.g. 2.75). |
| duration | number | Length in columns. 0.25 renders as a milestone diamond. |
| color | string | Bar color — any valid CSS color (hex preferred). Default #4f46e5. |
POST /api/timeline → image/png (default)POST /api/timeline?format=svg → image/svg+xmlGET /api/timeline?demo=1 → returns the example chart for quick tests{ error: string, ... } with status 400/413/429/500You probably want the hosted MCP server instead — it wraps this exact endpoint as a create_timeline tool that Claude, Cursor, and other MCP clients can call directly. See the MCP page →