Features/Dashboards

Dashboards

Agent defines widgets. Sutrena renders charts. Humans see data.

Updated March 2026

Seven widget types. Metric cards, pie charts, bar charts, line charts, data tables, text blocks, action tables. You define the layout in JSON. Sutrena aggregates the data and renders the dashboard. Auto-refreshes every 30 seconds. Shareable via URL. Agent creates, humans view, data stays live.

What it does

  • Seven widget types — metric_card, pie_chart, bar_chart, line_chart, data_table, text_block, action_table
  • Aggregation — count(*), count(field), sum(field), avg(field), min(field), max(field)
  • Group by any field — pie charts by category, bar charts by status
  • Time bucketing — line charts by day, week, or month ($submitted_at:day|week|month)
  • Data tables with sortable columns and configurable row limits
  • Public URL that auto-refreshes every 30 seconds
  • Three data sources — form submissions, inline JSON (up to 1000 rows), or CSV upload (up to 10MB)
  • CSV upload pre-aggregates on ingest — dashboard rendering is instant
  • Search and filter submissions by date range, field value, or full text
  • Private by default. Make public when ready to share

How it works

curl -X POST https://sutrena.com/api/dashboards \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Signup Analytics",
    "formId": "FORM_ID",
    "dsl": {
      "version": 1,
      "widgets": [
        {"type": "metric_card", "title": "Total Signups", "value": "count(*)"},
        {"type": "pie_chart", "title": "By Source", "groupBy": "source"},
        {"type": "line_chart", "title": "Signups Over Time",
         "groupBy": "$submitted_at:day"},
        {"type": "data_table", "title": "Recent",
         "columns": ["name", "email", "source"], "limit": 10}
      ]
    }
  }'

# Returns: { "data": { "id": "...", "url": "/d/..." } }

One POST with a JSON DSL. The dashboard is live immediately. Charts, metrics, tables — all rendered from your data.

What it does not do

Not a BI tool. No custom SQL queries, no joins across data sources, no drill-down. If you need Metabase or Looker, use that. If you need a shareable dashboard that shows what is happening with your form data, this works.

FAQ

Can I create a dashboard without a form?

Yes. Pass inline JSON data (up to 1000 rows) or upload a CSV file (up to 10MB). The dashboard renders from whatever data source you give it.

How often does the dashboard refresh?

Every 30 seconds for form-backed dashboards. Inline data and CSV dashboards show the data as uploaded — update them via PUT to refresh.

Can I use sum or average instead of count?

Yes. Metric cards support count(*), count(field), sum(field), avg(field), min(field), max(field). Charts support aggregate: sum(field), avg(field) — defaults to count when omitted.

Are dashboards public by default?

No. Dashboards are private by default. Set isPublic to true when you want to share the URL. Private dashboards require authentication to view.

What is Sutrena?

Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.

Get started in two API calls

1. Get a trial key (no auth, no signup)

curl -X POST https://sutrena.com/api/trial

2. Create a form + dashboard from a template

curl -X POST https://sutrena.com/api/forms \
  -H "Authorization: Bearer st_trial_xxx" \
  -H "Content-Type: application/json" \
  -d '{"templateId": "waitlist", "createDashboard": true}'

Ready to build?

Get a trial API key instantly with no signup, or create an account for the full experience.

Dashboards — JSON-Defined Analytics Dashboards | Sutrena | Sutrena