- API
API · static files
Charts as data.
2391 charts from the labs and trackers, 73,917 points, each with where the number came from. One request, one chart.
curl -s https://viral-chart.com/api/charts/3c6d3092be5c.jsonThese are static files for the prototype, not a live API. No key is needed and nothing is charged today. Use the host you are reading this on until the site is live.
What the data is
Each chart a lab or tracker published becomes one JSON file: the title, the publisher, a link to the original, every point (group, series, value, unit), whether the number was printed on the chart, how it was obtained (provenance) and a confidence from 0 to 1, plus a redraw spec for the native chart and a license note. Provenance is one of publisher-text, mixed or estimated-from-image. We pull no numbers from leaderboards; the source link is where you can check.
Every file also carries a style field: the style spec that says how the original chart looks (type, canvas and colours, fonts, legend, axes, series colours and patterns, highlight, value labels, logo markers). Our renderer draws a look-alike from the points plus that spec. A replica is accepted at 7 of 10 from our judges: 95 of 2391 charts are accepted today, and each file has replica.score and replica.accepted. Where the judges said the names or numbers were the main problem, a second reading is in replicaData.
Provenance and accuracy
Measured, not promised. On 16 real charts where the publisher also wrote the numbers as text (all grouped bars with the numbers printed), 86.7% of 240 points were within 3% of the publisher's number. Of the 32 points that were off by more than 3%, 26 were printed numbers that both reading passes read identically, so the chart and the text probably disagree. If so, 97.5% were within 3%. Such points show both numbers ("chart says X, model card says Y").
The controlled test below draws our own charts from known data. Numbers printed on the chart read well. Values read off an axis are coarser, lines are good, and stacked bars and scatter plots are the weak spots: stacked segments snap to round numbers, and only some scatter points keep a matchable label. We make no accuracy guarantee for unlabelled real charts, because there is no real ground truth for them yet.
| Chart kind | Charts | Points scored | Within 1% | Within 3% | Within 3% of range |
|---|---|---|---|---|---|
| Real charts with publisher text (grouped bars, printed) | 16 | 240 | 85.4% | 86.7% | 87.5% |
| Controlled: Bars, numbers printed | 3 | 24 | 100% | 100% | 100% |
| Controlled: Bars, read off the axis | 3 | 24 | 70.8% | 100% | 100% |
| Controlled: Grouped bars, numbers printed | 2 | 24 | 100% | 100% | 100% |
| Controlled: Grouped bars, read off the axis | 3 | 39 | 69.2% | 100% | 100% |
| Controlled: Line, read off the axis | 3 | 52 | 53.8% | 88.5% | 100% |
| Controlled: Stacked bars, read off the axis | 3 | 50 | 22% | 42% | 86% |
| Controlled: Scatter, labelled points | 3 | 18 | 16.7% | 55.6% | 72.2% |
Within X% is relative to the true number. Within 3% of range is relative to the axis range. Source: data/chart-data/index.json.
Rules on every tier: provenance and the license note always come with the data, estimated numbers are always labelled, and the original link stays on every chart.
Endpoints
From the OpenAPI sketch in docs/chart-data.md. In this prototype the first three paths are static files; filters and paging need the live API.
| Path | Credits when live | Returns | |
|---|---|---|---|
| GET | /api/charts/{id}.json | 1 | One chart: points, provenance, redraw spec, license note. 404 for an unknown id, 402 when the plan does not include it. |
| GET | /api/charts/{id}.skill.md | free | The agent skill file for one chart (Markdown). The sketch writes the path as /api/charts/{id}/skill.md. |
| GET | /api/charts/index.json | 1 | The index: one row per chart. The live form is GET /api/charts. |
| GET | /api/charts?model=&publisher=&form=&provenance=&limit=&cursor= | 1 per 25 rows (proposed) | Live API only. Filters: model slug, publisher, form (bar, grouped-bar, benchmark-bars, line, scatter, stacked-bar, table), provenance (publisher-text, mixed, estimated-from-image). limit up to 200, cursor for the next page. |
Proposed tiers: Free gets the first rows and publisher-text charts, Pro curates (saves, boards, alerts, full history, every chart unblurred), Max reverse engineers (chart data JSON, style spec, the redraw maker, API and bulk export). The site does not charge for any of it yet. Internal fields (selectionReason, nearMissTruth) are left out of the files.
Examples
Against the static files. Replace the host with the one you are on until the site is live.
curl -s https://viral-chart.com/api/charts/3c6d3092be5c.json | jq '.points[:2]'curl -s https://viral-chart.com/api/charts/index.json \
| jq '.charts[] | select(.provenance != "estimated-from-image") | .id'curl -s https://viral-chart.com/api/charts/3c6d3092be5c.skill.mdA response, trimmed to two points. The values are the real file for 3c6d3092be5c.
{
"id": "3c6d3092be5c",
"title": "LLM Performance Evaluation",
"publisher": "Z.ai",
"url": "https://huggingface.co/zai-org/GLM-5.3",
"sourceUrl": "https://www.tbench.ai/leaderboard",
"provenance": "publisher-text",
"confidence": 1,
"chart": {
"type": "grouped-bar",
"series": [
"GLM-5.3",
"GLM-5.2",
"Kimi K3"
]
},
"points": [
{
"group": "Terminal Bench 3.0",
"series": "GLM-5.3",
"value": 28.3,
"provenance": "publisher-text",
"confidence": 1,
"printed": true
},
{
"group": "Terminal Bench 3.0",
"series": "GLM-5.2",
"value": 4.6,
"provenance": "publisher-text",
"confidence": 1,
"printed": true
}
],
"license_note": "These numbers describe a chart published by Z.ai. The image and design belong to them. Values marked estimated-from-image may be off. Original: https://huggingface.co/zai-org/GLM-5.3"
}The skill file
One Markdown file per chart for an agent. It has a front matter block (name, description), the fetch paths, the fields, a caveat copied from the license note and a redraw recipe for the native chart maker. It costs nothing. The start of the real file:
---
name: chart-data-3c6d3092be5c
description: Data points of the chart "LLM Performance Evaluation" published by Z.ai (publisher-text, 30 points). Use it to study the numbers or to redraw a similar chart under your own brand with the CountStory native chart maker.
---
# LLM Performance Evaluation
Publisher: Z.ai. Subject: GLM-5 (zai). Original: https://huggingface.co/zai-org/GLM-5.3
## Fetch
- Local file: `data/chart-data/3c6d3092be5c.json`
- API form: `GET /api/charts/3c6d3092be5c.json` (see docs/chart-data.md for the OpenAPI sketch)
## Fields
Credits per call
The price list for when billing opens. Today the files cost nothing. Dollars are at the smallest top-up pack; see pricing.
| Action | Credits | In dollars |
|---|---|---|
| One chart as JSON or CSV (download or API call) | 1 | $0.005 |
| One list page of 25 rows (API) | 1 | $0.005 |
| Family bundle: every chart of one model, up to 100 | 10 | $0.05 |
| Redraw kit: chart JSON, skill file and SVG starter | 3 | $0.015 |
| Data points from a chart image (an estimate, labelled as such) | 40 | $0.20 |
| Browsing, pages, chart of the day, weekly digest, skill files, llms.txt, failed or empty calls | Free | $0 |
Get keys when billing opens
Billing is not open yet. Leave your email and we write the day it is.
Prototype: this saves on this device only.
Questions people ask
Is this a live API?
No. In this prototype the files are static and need no key. The paths and the shapes are the ones a live API would keep, and billing is not open.
How accurate is the data?
On 16 real charts where the publisher also wrote the numbers as text, 86.7% of 240 points were within 3%. Stacked bars and scatter plots are weaker. See the table above.
Can I use the numbers commercially?
The numbers describe charts that their owners published. Each file carries a license_note. Credit the publisher and draw your own picture.