Skip to main content
Create interactive, embeddable cards from your own data using the Tako Thin-Viz API.

Why Thin-Viz

  • Your data, Tako’s rendering. Post your own values and component configs; Tako returns a polished, interactive card — no charting library or frontend work on your side.
  • A full component gallery. Timeseries, bar, pie, table, treemap, sankey, choropleth, heatmap, waterfall, and more — composed top to bottom in a single card.
  • Embed anywhere. Every card comes back with an embed_url (interactive iframe) and an image_url (static image) for chat, dashboards, or docs.

Creating a Card

Create a card by posting your component configurations. One API call, one card.
Response:

Request Fields

Embedding Your Card

Use the embed_url from the response in an iframe:
Add ?dark_mode=true or ?dark_mode=false to control the theme.

Preview Images for ZDR Cards

Cards created with zero data retention (ZDR) don’t normally support preview images because the visualization data isn’t persisted. To get a downloadable image for a ZDR card, set image_ttl_minutes when creating the card:
The response includes an image_url that renders a screenshot on demand. You can customize the image with query parameters:
After the TTL expires, the image endpoint returns 410 Gone. The TTL must be between 1 and 1440 minutes (24 hours).
image_ttl_minutes is only supported for ZDR cards and is ignored for standard cards, which already have persistent preview images.

Shared Config Options

Every component takes a config object whose shape depends on its component_type. Each example below lists its component’s fields. Tako ignores unknown config fields without an error, so if an option has no effect, check its spelling. Many components accept these optional fields:

Color Overrides

Set color to a hex string (#RGB or #RRGGBB) to override a series color in both themes. Add color_light_mode or color_dark_mode to use a different color in one theme; they take precedence over color.
  • Dataset-level colors work on generic_timeseries, categorical_bar, data_table_chart, and scatter.
  • Per-point color works on categorical_bar, data_table_chart, and choropleth data points.
  • Per-event color works on timeline events, in #RRGGBB form.
  • Other components take their colors from series_color_theme. bubble datasets accept color fields but don’t apply them yet.

Example: Stock Card with Kicker Boxes

For financial data, use the generic_timeseries component with show_kicker_boxes enabled:
When show_kicker_boxes is enabled, each dataset with a kicker field renders a stock box above the chart showing the exchange label, current value, and change.

Timeseries Fields

Each dataset has:

Example: Bar Chart

Header Fields

Bar Chart Fields

Categorical datasets are also used by data_table_chart, pie, treemap, histogram, and choropleth. Each one has:

Example: Data Table Chart

A bar chart with an auto-generated data table below showing the values:

Data Table Chart Fields

Example: Financial Boxes

Display financial metrics with growth indicators:
Growth indicator colors are automatic: positive value appears green, negative appears red.

Financial Boxes Fields

items is required. Each item has:

Example: Top-Level Metric

Show one large headline number or phrase with a caption:

Top-Level Metric Fields

Example: Data Table

A configurable table with columns, sorting, and pagination:

Table Column Types

Table Config Fields

Each column also supports an optional align field ("left", "right", or "center") to override the default alignment.
When highlight_best is enabled, the best value in each currency, number, and rating column is highlighted with a green background. Currency columns treat the lowest value as best; number and rating columns treat the highest value as best. Boolean columns are excluded — they use checkmark colors instead.

Example: Timeline

A timeline showing events or periods along a time axis:

Timeline Fields

Each event in the events array has:
When timeline_mode is not set, the mode is auto-detected based on the distribution of events. Use "ordinal" mode when events have very different time gaps and you want them spaced evenly, or "absolute" mode when the proportional time spacing is meaningful.

Example: Pie Chart

Show proportional data as slices of a circle:
Each data point uses x for the slice label and y for the value. Slices are colored automatically from the theme palette.

Pie Chart Fields

Example: Histogram

Bin raw values into a frequency distribution:
The y values are the raw data — bins are computed automatically. Use num_bins to set the number of bins, or bin_width to set a fixed width.

Histogram Fields

Example: Scatter Plot

Show the relationship between two continuous variables:
Each data point’s optional label is shown in the tooltip on hover.

Scatter Plot Fields

Each dataset has:

Example: Bubble Chart

A scatter plot with a size dimension — useful for plotting three variables at once:
The third dimension is encoded as bubble radius via r on each data point.

Bubble Chart Fields

Example: Choropleth Map

Color geographic regions by value. map_type is "us_states" or "world":
For US states, x is the full state name (e.g. "California"). For world maps, use "map_type": "world" and country names.

Choropleth Fields

Example: Heatmap

A 2D grid where color encodes value. Useful for things like correlation matrices or activity by day-and-hour:
Heatmap takes a flat data array of {x, y, v} points (not a datasets list). v is the value used to determine color intensity.

Heatmap Fields

Example: Box Plot

Show the statistical distribution (min, Q1, median, Q3, max) of values across categories. Provide raw values per category — quartiles are computed for you:
Box plot uses categories (not datasets) and each category has a values array of raw numbers.

Box Plot Fields

Example: Treemap

Show hierarchical data as area-proportional rectangles — good for spend breakdowns or composition:
Each rectangle’s area is proportional to its y value.

Treemap Fields

Example: Waterfall

Show how a starting value changes through a series of additions and subtractions to reach an ending value. Use is_anchor: true for totals/subtotals (bars that start at zero):
By default, positive deltas are green and negative deltas are red. Anchor bars (is_anchor: true) are drawn as solid bars rising from zero.

Waterfall Fields

Example: Sankey

Show directed flows between nodes — revenue splitting into cost and profit branches, a user funnel, energy flow, or any weighted graph. Provide a list of nodes and a list of links; every link’s source and target must reference a node id. Links must form a DAG (no cycles or self-loops); duplicate (source, target) pairs are summed.
A node’s polarity sets its color: positive renders green, negative red, and neutral (the default) gray. Each flow shades from its source node’s color to its target node’s color. Use this to make a profit-vs-cost story read at a glance — leave upstream/source nodes neutral so only the meaningful splits carry color.

Sankey fields

Example: Marimekko

Show a two-level part-to-whole breakdown as a mosaic of variable-width stacked columns — market share by region and brand, spend by department and category, or contract obligations by agency and vendor. Each column’s width is proportional to its total, and each stacked segment’s height is its share within that column. Marimekko takes the same flat data array of {x, y, v} points as the heatmap: x is the column (X dimension), y is the stacked segment (Y dimension), and v is the cell magnitude.
Cells that share an (x, y) pair are summed first; a pair is then dropped only if its net value is non-positive (so a downward adjustment nets against a positive value in the same cell rather than being dropped on its own). The largest top_n_columns columns and, within each, the largest top_m_segments segments render individually; everything else rolls into an “Other” column / “Other” segment so the mosaic always conserves the total. Segments are colored from the theme palette and labeled on the chart canvas (no separate legend).

Marimekko fields

Example: Person Card

Build a profile card with career, education, and about tabs from an Exa person search result. Pass the Exa result object as the config. A person_card must be the only component in the request.

Person Card Fields

An entity’s properties accept name, firstName, lastName, location, workHistory (entries with title, location, company.name, and dates.from and dates.to), and educationHistory (entries with degree, institution.name, and dates). The card title is the person’s name, taken from properties.name, then author, then the part of title before the |. A request-level title overrides it.

Combining Multiple Components

Cards can contain multiple components stacked together. This lets you build richer visualizations by pairing related data.

Financial Boxes + Timeseries Chart

Pair summary metrics with a trend chart:

Header + Bar Chart

Add a styled header above any chart:
Components render in the order they appear in the components array - top to bottom on the card.

Available Components