Two minimal but realistic implementations show the full Canvas lifecycle. Both verify theDocumentation Index
Fetch the complete documentation index at: https://sleekplan.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
X-Secret header, handle the initial render, react to button clicks, and return confirmation state.
Minimal endpoint
- Node.js (Express)
- PHP
Tips and gotchas
Always reject missing or wrong X-Secret early.
Always reject missing or wrong X-Secret early.
Treat the header check as the first thing your handler does. Any request that fails it should receive a
401 and nothing else.Return arrays, not single objects.
Return arrays, not single objects.
Sleekplan accepts a single object, but arrays make intent obvious and are easier to extend when you need to render multiple components.
Use stable component IDs.
Use stable component IDs.
The
id is the field name in subsequent payloads — renaming it mid-flow drops state and breaks your handler’s ability to detect which button was clicked.Show section errors with {"error": "..."} as the first array element.
Show section errors with {"error": "..."} as the first array element.
See Inline errors for the exact shape Sleekplan expects when you need to surface a validation message.
Build links back to Sleekplan with feedback_id.
Build links back to Sleekplan with feedback_id.
Pattern:
https://app.sleekplan.com/feedback/{feedback_id}. The feedback_id is included in every Canvas payload so you can store it alongside your linked item.Need extra help? Share your endpoint URL and a sample payload with support@sleekplan.com.
