Updated March 2026
Three steps: upload the CSV, then create the dashboard.
1. Presign the upload: POST /api/dashboards/upload with filename and sizeBytes. You get a csvObjectId and uploadUrl. 2. Upload the file: PUT the CSV to the uploadUrl. 3. Create the dashboard: POST /api/dashboards with the csvObjectId, title, and DSL.
The CSV is pre-aggregated on upload — dashboards render instantly regardless of file size. Max 10MB, 100K rows, 50 columns.
Column types are auto-detected: numbers, dates, booleans, and strings. Date columns support time-based groupBy with $column_name:day|week|month syntax.
Download the original file anytime: GET /api/dashboards/:id/download.
# Step 1: Presign upload
curl -X POST https://sutrena.com/api/dashboards/upload \
-H "Authorization: Bearer $KEY" \
-d '{"filename": "sales.csv", "sizeBytes": 50000}'
# Step 2: Upload CSV to the returned uploadUrl
# Step 3: Create dashboard
curl -X POST https://sutrena.com/api/dashboards \
-H "Authorization: Bearer $KEY" \
-d '{"csvObjectId": "obj_abc", "title": "Sales Report", "dsl": {"version": 1, "widgets": [{"type": "bar_chart", "title": "By Region", "groupBy": "region", "aggregate": "sum(revenue)"}]}}'