Rich display rendering
A script or flow’s return value is just data — how it shows up in the run view depends on its shape. By default, Orvanta renders a result as JSON. If the result matches one of a set of recognized shapes (an array of objects, for instance), Orvanta renders it as something more useful instead: a table, an image, a map, an approval prompt.
Some of these are detected automatically from the shape of the returned value. Others need an explicit single-key object — wrap the value under one of the keys below and Orvanta renders it accordingly, regardless of what the underlying data looks like.
Supported rich display types
Section titled “Supported rich display types”Results as single-key objects can leverage these formats:
| Type | Purpose | Example |
|---|---|---|
| table-col | Column-wise table rendering | { "table-col": { "foo": [42, 8], "bar": [38, 12] } } |
| table-row | Row-wise table rendering | { "table-row": [ [ "foo", "bar" ], [ 42, 38 ], [ 8, 12 ] ] } |
| table-row-object | Row-wise table with object rows | { "table-row-object": [ { "foo": 42, "bar": 38 }, ... ] } |
| s3 | S3 file download and bucket explorer | { "s3": "path_to_file"} |
| html | HTML rendering | { "html": "<div>...</div>" } |
| markdown/md | Markdown rendering | { "markdown": "## Hello World" } |
| file | File download option | { "file": { "content": encode(file), "filename": "data.txt" } } |
| PDF document display | { "pdf": base64Pdf } | |
| png | PNG image display | { "png": base64Image } |
| jpeg | JPEG image display | { "jpeg": base64Image } |
| gif | GIF animation display | { "gif": base64Image } |
| svg | SVG image rendering | { "svg": "<svg>...</svg>" } |
| error | Error message display | { "error": { "name": "418", "message": "...", "stack": "..." }} |
| resume | Approval with Resume/Cancel buttons | { "resume": "url", "cancel": "url", "approvalPage": "url" } |
| map | Map with location markers | { "map": { lat: 40, lon: 0, zoom: 3, markers: [...] }} |
| render_all | Display multiple results with formats | { "render_all": [ { "json": {...} }, { "table-col": {...} } ] } |
Tables
Section titled “Tables”Rich table display
Section titled “Rich table display”Automatically renders results as interactive tables when the result is an array of objects. No specific key required for scripts or flows.
Column order can be forced by including an array of column names as the first element.
Table column
Section titled “Table column”Returns values as column-wise tables. Format is automatically detected even without the explicit table-col key.
Table row
Section titled “Table row”Returns values as row-wise tables with format: nested arrays where first row contains headers.
Table row object
Section titled “Table row object”Returns row-wise tables where each row is an object. Optionally include an array of strings as the first element to enforce column ordering.
Media & content types
Section titled “Media & content types”S3: Renders downloadable S3 files with bucket explorer when workspace is connected to S3 storage. Supports infinite-size files with paginated preview.
HTML & Markdown: Direct rendering of markup content.
Images: PNG, JPEG, and GIF formats require base64 encoding. Can include content in nested object or directly.
PDF: Requires base64-encoded PDF data.
SVG: Direct SVG markup rendering.
File: Generic file download with content encoding and filename.
Special types
Section titled “Special types”Error: Display custom error messages with name, message, and stack trace.
Resume: Enables approval workflows with configurable Resume and Cancel actions.
Map: Interactive map display with latitude, longitude, zoom level, and customizable markers (supporting color, radius, stroke properties).
Render all: Display multiple formatted results simultaneously in a single output.