Charta Developers

Build charts into
any product.

REST API, MCP server, and typed SDKs for generating presentation-quality charts programmatically — from AI agents, pipelines, or SaaS products.

AI Agents
MCP server. Works in Claude, Cursor, Windsurf. One config block — no glue code.
SaaS Products
REST API. POST data, get SVG or PNG back. Fits any backend pipeline.
Report Automation
Query a DB, generate charts, insert into a Google Slides template. Schedule it.
No-code Workflows
Works as an HTTP node in Zapier, Make, or n8n. Input data → chart output.
typescript
import { Charta } from '@charta/sdk'

const charta = new Charta({ apiKey: process.env.CHARTA_API_KEY })

const chart = await charta.generate({
  type: 'waterfall',
  data: [
    { label: 'Q4 ARR',    value: 4200, isTotal: true },
    { label: 'New Biz',   value:  980 },
    { label: 'Expansion', value:  540 },
    { label: 'Churn',     value: -310 },
    { label: 'Q1 ARR',    value: 5410, isTotal: true },
  ],
})

// chart.svg    → SVG string, embed anywhere
// chart.png    → PNG base64
// chart.chartId → insert into Google Slides
npm install @charta/sdk·pip install charta·npx @charta/mcp
MCP Server

Native tool for AI agents.

npx @charta/mcp — no install, no auth setup. Add one config block and your AI agent can generate charts as a first-class tool.

Works with Claude Desktop, Cursor, Windsurf, Cline, Continue, and any MCP-compatible client. The agent picks the right chart type, handles the data, and returns SVG.

generate_chartGenerate a chart — SVG string + chartId
list_chart_typesAll supported types with data shapes
get_chart_schemaJSON schema for a specific chart type
save_chartWrite chart to disk as SVG or PNG
describe_chartRecommend the best chart type for given data
json
{
  "mcpServers": {
    "charta": {
      "command": "npx",
      "args": ["-y", "@charta/mcp"]
    }
  }
}

Same config for Cursor (.cursor/mcp.json) and Windsurf (~/.codeium/windsurf/mcp_config.json)

bash
curl -X POST https://api.getcharta.ai/v1/charts/generate \
  -H "X-Charta-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "waterfall",
    "data": [
      { "label": "Q4 ARR",    "value": 4200, "isTotal": true },
      { "label": "New Biz",   "value": 980 },
      { "label": "Expansion", "value": 540 },
      { "label": "Churn",     "value": -310 },
      { "label": "Q1 ARR",    "value": 5410, "isTotal": true }
    ],
    "output": "svg"
  }'
Response:
json
{
  "svg": "<svg viewBox=\"0 0 400 220\" ...>...</svg>",
  "chartId": "chart_k9x2m",
  "type": "waterfall"
}
REST API

One request. One chart.

POST your data. Get back SVG or PNG. No sessions, no SDKs required — works from any language, any pipeline.

Base URLhttps://api.getcharta.ai/v1
Auth headerX-Charta-Key: YOUR_API_KEY
Output formatssvg · png · slides_url
Rate limitsFree: 5/day · Plus: 20/day · Business: unlimited
SDKs

Typed for your stack.

Full type coverage for all chart types and options. Autocomplete tells you exactly what data each chart expects.

JavaScriptnpm install @charta/sdk
Pythonpip install charta
MCPnpx @charta/mcp
python
from charta import Charta

client = Charta(api_key=os.environ["CHARTA_API_KEY"])

chart = client.generate(
    type="waterfall",
    data=[
        {"label": "Q4 ARR",    "value": 4200, "is_total": True},
        {"label": "New Biz",   "value": 980},
        {"label": "Expansion", "value": 540},
        {"label": "Churn",     "value": -310},
        {"label": "Q1 ARR",    "value": 5410, "is_total": True},
    ],
)

chart.save("arr_bridge.png")
chart.insert_to_slides(slides_id=DECK_ID, slide_index=3)

Supported chart types

12 types. All return valid SVG at configurable dimensions.

type
waterfall
bar
grouped-bar
stacked-bar
line
area
pie / donut
scatter
gantt
mekko
radar
heatmap

Start building today.

Free tier included — 5 AI credits/day, all chart types, no credit card required. Upgrade when you need more.